Skip to content

Commit b0efe17

Browse files
implemented generic Key to IdentityUser
1 parent f403f47 commit b0efe17

3 files changed

Lines changed: 18 additions & 16 deletions

File tree

src/NetDevPack.Identity/Jwt/JwtBuilder.cs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010

1111
namespace NetDevPack.Identity.Jwt
1212
{
13-
public class JwtBuilder<TIdentityUser> where TIdentityUser : IdentityUser
13+
public class JwtBuilder<TIdentityUser, TKey>
14+
where TIdentityUser : IdentityUser<TKey>
15+
where TKey : IEquatable<TKey>
1416
{
1517
private UserManager<TIdentityUser> _userManager;
1618
private AppJwtSettings _appJwtSettings;
@@ -19,19 +21,19 @@ public class JwtBuilder<TIdentityUser> where TIdentityUser : IdentityUser
1921
private ICollection<Claim> _jwtClaims;
2022
private ClaimsIdentity _identityClaims;
2123

22-
public JwtBuilder<TIdentityUser> WithUserManager(UserManager<TIdentityUser> userManager)
24+
public JwtBuilder<TIdentityUser, TKey> WithUserManager(UserManager<TIdentityUser> userManager)
2325
{
2426
_userManager = userManager ?? throw new ArgumentException(nameof(userManager));
2527
return this;
2628
}
2729

28-
public JwtBuilder<TIdentityUser> WithJwtSettings(AppJwtSettings appJwtSettings)
30+
public JwtBuilder<TIdentityUser, TKey> WithJwtSettings(AppJwtSettings appJwtSettings)
2931
{
3032
_appJwtSettings = appJwtSettings ?? throw new ArgumentException(nameof(appJwtSettings));
3133
return this;
3234
}
3335

34-
public JwtBuilder<TIdentityUser> WithEmail(string email)
36+
public JwtBuilder<TIdentityUser, TKey> WithEmail(string email)
3537
{
3638
if (string.IsNullOrEmpty(email)) throw new ArgumentException(nameof(email));
3739

@@ -43,9 +45,9 @@ public JwtBuilder<TIdentityUser> WithEmail(string email)
4345
return this;
4446
}
4547

46-
public JwtBuilder<TIdentityUser> WithJwtClaims()
48+
public JwtBuilder<TIdentityUser, TKey> WithJwtClaims()
4749
{
48-
_jwtClaims.Add(new Claim(JwtRegisteredClaimNames.Sub, _user.Id));
50+
_jwtClaims.Add(new Claim(JwtRegisteredClaimNames.Sub, _user.Id.ToString()));
4951
_jwtClaims.Add(new Claim(JwtRegisteredClaimNames.Email, _user.Email));
5052
_jwtClaims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()));
5153
_jwtClaims.Add(new Claim(JwtRegisteredClaimNames.Nbf, ToUnixEpochDate(DateTime.UtcNow).ToString()));
@@ -56,15 +58,15 @@ public JwtBuilder<TIdentityUser> WithJwtClaims()
5658
return this;
5759
}
5860

59-
public JwtBuilder<TIdentityUser> WithUserClaims()
61+
public JwtBuilder<TIdentityUser, TKey> WithUserClaims()
6062
{
6163
_userClaims = _userManager.GetClaimsAsync(_user).Result;
6264
_identityClaims.AddClaims(_userClaims);
6365

6466
return this;
6567
}
6668

67-
public JwtBuilder<TIdentityUser> WithUserRoles()
69+
public JwtBuilder<TIdentityUser, TKey> WithUserRoles()
6870
{
6971
var userRoles = _userManager.GetRolesAsync(_user).Result;
7072
userRoles.ToList().ForEach(r => _identityClaims.AddClaim(new Claim("role", r)));
@@ -89,13 +91,13 @@ public string BuildToken()
8991
return tokenHandler.WriteToken(token);
9092
}
9193

92-
public UserResponse BuildUserResponse()
94+
public UserResponse<TKey> BuildUserResponse()
9395
{
94-
var user = new UserResponse
96+
var user = new UserResponse<TKey>
9597
{
9698
AccessToken = BuildToken(),
9799
ExpiresIn = TimeSpan.FromHours(_appJwtSettings.Expiration).TotalSeconds,
98-
UserToken = new UserToken
100+
UserToken = new UserToken<TKey>
99101
{
100102
Id = _user.Id,
101103
Email = _user.Email,
@@ -111,7 +113,7 @@ private static long ToUnixEpochDate(DateTime date)
111113
.TotalSeconds);
112114
}
113115

114-
public sealed class JwtBuilder : JwtBuilder<IdentityUser>
116+
public sealed class JwtBuilder<TKey> : JwtBuilder<IdentityUser<TKey>, TKey> where TKey : IEquatable<TKey>
115117
{
116118

117119
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
namespace NetDevPack.Identity.Jwt.Model
22
{
3-
public class UserResponse
3+
public class UserResponse<TKey>
44
{
55
public string AccessToken { get; set; }
66
public double ExpiresIn { get; set; }
7-
public UserToken UserToken { get; set; }
7+
public UserToken<TKey> UserToken { get; set; }
88
}
99
}

src/NetDevPack.Identity/Jwt/Model/UserToken.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace NetDevPack.Identity.Jwt.Model
44
{
5-
public class UserToken
5+
public class UserToken<T>
66
{
7-
public string Id { get; set; }
7+
public T Id { get; set; }
88
public string Email { get; set; }
99
public IEnumerable<UserClaim> Claims { get; set; }
1010
}

0 commit comments

Comments
 (0)