1010
1111namespace 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 }
0 commit comments