@@ -19,21 +19,23 @@ public string GenerateToken(IAccountIdentity user)
1919 {
2020 var claims = new List < Claim >
2121 {
22- new Claim ( ClaimTypes . NameIdentifier , user . Id . ToString ( ) ) ,
23- new Claim ( ClaimTypes . Email , user . Email ) ,
22+ new ( ClaimTypes . NameIdentifier , user . Id . ToString ( ) ) ,
23+ new ( ClaimTypes . Email , user . Email ) ,
2424 } ;
2525
26- var roles = user . Roles ? . ToArray ( ) ?? Array . Empty < string > ( ) ;
27- claims . AddRange ( roles . Select ( r => new Claim ( ClaimTypes . Role , r ) ) . ToList ( ) ) ;
26+ user . Name ?? = user . Email . Substring ( 0 , user . Email . IndexOf ( '@' ) ) ;
27+ user . Picture ??= "https://ui-avatars.com/api/?name=" + user . Name + "&color=fff&background=" + StringToHex ( user . Email ) ;
2828
29+ claims . Add ( new Claim ( "name" , user . Name ) ) ;
30+ claims . Add ( new Claim ( "picture" , user . Picture ) ) ;
31+ claims . Add ( new Claim ( "id" , user . Id ) ) ;
32+ claims . Add ( new Claim ( "email" , user . Email ) ) ;
2933
30- var permissions = user . Permissions ? . ToArray ( ) ?? Array . Empty < string > ( ) ;
31- claims . AddRange ( permissions . Select ( p => new Claim ( "permission" , p ) ) . ToList ( ) ) ;
34+ var roles = user . Roles ? . ToArray ( ) ?? [ ] ;
35+ claims . AddRange ( [ .. roles . Select ( r => new Claim ( ClaimTypes . Role , r ) ) ] ) ;
3236
33- if ( ! string . IsNullOrEmpty ( user . Name ) )
34- claims . Add ( new Claim ( "name" , user . Name ) ) ;
35- if ( ! string . IsNullOrEmpty ( user . Picture ) )
36- claims . Add ( new Claim ( "picture" , user . Picture ) ) ;
37+ var permissions = user . Permissions ? . ToArray ( ) ?? [ ] ;
38+ claims . AddRange ( [ .. permissions . Select ( p => new Claim ( "permission" , p ) ) ] ) ;
3739
3840 claims . Add ( new Claim ( "email_verified" , user . IsEmailVerified . ToString ( ) ) ) ;
3941
@@ -69,10 +71,8 @@ public string GenerateToken(IAccountIdentity user)
6971 ValidAudience = _options . Audience ,
7072 IssuerSigningKey = new SymmetricSecurityKey ( Encoding . UTF8 . GetBytes ( _options . SigningKey ) ) ,
7173 ClockSkew = TimeSpan . Zero ,
72-
7374 RoleClaimType = ClaimTypes . Role ,
7475 NameClaimType = ClaimTypes . Email
75-
7676 } , out _ ) ;
7777 }
7878 catch
@@ -103,4 +103,22 @@ public string GetEmailFromToken(string token)
103103 var emailClaim = jwtToken . Claims . FirstOrDefault ( c => c . Type == ClaimTypes . Email || c . Type == "email" ) ;
104104 return emailClaim ? . Value ?? string . Empty ;
105105 }
106+
107+
108+ public static string StringToHex ( string str = "" )
109+ {
110+ try
111+ {
112+ if ( string . IsNullOrEmpty ( str ) ) return string . Empty ;
113+ if ( str . Length > 6 ) str = str [ ..6 ] ;
114+ return string . Join ( "" , str . Select ( c => ( ( int ) c ) . ToString ( "x2" ) ) ) [ ..6 ] ;
115+ }
116+ catch ( Exception e )
117+ {
118+ Console . WriteLine ( e . Message ) ;
119+ return string . Empty ;
120+ }
121+ }
122+
123+
106124}
0 commit comments