Skip to content

Commit 5eaca7f

Browse files
committed
Implement IUserTwoFactorStore
1 parent 98e9fd1 commit 5eaca7f

File tree

4 files changed

+51
-2
lines changed

4 files changed

+51
-2
lines changed

src/AspNet.Identity.MongoDB/IdentityUser.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.Collections.Generic;
44
using System.Linq;
55
using System.Security.Claims;
6-
using System.Threading.Tasks;
76
using global::MongoDB.Bson;
87
using global::MongoDB.Bson.Serialization.Attributes;
98
using Microsoft.AspNet.Identity;
@@ -33,6 +32,8 @@ public IdentityUser()
3332

3433
public virtual bool PhoneNumberConfirmed { get; set; }
3534

35+
public virtual bool TwoFactorEnabled { get; set; }
36+
3637
[BsonIgnoreIfNull]
3738
public List<string> Roles { get; set; }
3839

src/AspNet.Identity.MongoDB/UserStore.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ public class UserStore<TUser> : IUserStore<TUser>,
1717
IUserEmailStore<TUser>,
1818
IUserClaimStore<TUser>,
1919
IQueryableUserStore<TUser>,
20-
IUserPhoneNumberStore<TUser>
20+
IUserPhoneNumberStore<TUser>,
21+
IUserTwoFactorStore<TUser, string>
2122
where TUser : IdentityUser
2223
{
2324
private readonly IdentityContext _Context;
@@ -205,5 +206,16 @@ public Task SetPhoneNumberConfirmedAsync(TUser user, bool confirmed)
205206
user.PhoneNumberConfirmed = confirmed;
206207
return Task.FromResult(0);
207208
}
209+
210+
public Task SetTwoFactorEnabledAsync(TUser user, bool enabled)
211+
{
212+
user.TwoFactorEnabled = enabled;
213+
return Task.FromResult(0);
214+
}
215+
216+
public Task<bool> GetTwoFactorEnabledAsync(TUser user)
217+
{
218+
return Task.FromResult(user.TwoFactorEnabled);
219+
}
208220
}
209221
}

src/IntegrationTests/IntegrationTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
<Compile Include="UserRoleStoreTests.cs" />
7171
<Compile Include="UserSecurityStampStoreTests.cs" />
7272
<Compile Include="UserStoreTests.cs" />
73+
<Compile Include="UserTwoFactorStoreTests.cs" />
7374
</ItemGroup>
7475
<ItemGroup>
7576
<None Include="packages.config" />
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
namespace IntegrationTests
2+
{
3+
using AspNet.Identity.MongoDB;
4+
using Microsoft.AspNet.Identity;
5+
using NUnit.Framework;
6+
7+
[TestFixture]
8+
public class UserTwoFactorStoreTests : UserIntegrationTestsBase
9+
{
10+
[Test]
11+
public void SetTwoFactorEnabled()
12+
{
13+
var user = new IdentityUser {UserName = "bob"};
14+
var manager = GetUserManager();
15+
manager.Create(user);
16+
17+
manager.SetTwoFactorEnabled(user.Id, true);
18+
19+
Expect(manager.GetTwoFactorEnabled(user.Id));
20+
}
21+
22+
[Test]
23+
public void ClearTwoFactorEnabled_PreviouslyEnabled_NotEnabled()
24+
{
25+
var user = new IdentityUser {UserName = "bob"};
26+
var manager = GetUserManager();
27+
manager.Create(user);
28+
manager.SetTwoFactorEnabled(user.Id, true);
29+
30+
manager.SetTwoFactorEnabled(user.Id, false);
31+
32+
Expect(manager.GetTwoFactorEnabled(user.Id), Is.False);
33+
}
34+
}
35+
}

0 commit comments

Comments
 (0)