|
|
|
@ -14,7 +14,7 @@ public interface ITokenBuilder
|
|
|
|
|
|
|
|
|
|
void SetUserContext(TokenValidatedContext context);
|
|
|
|
|
|
|
|
|
|
TokenInfo GenerateJwtTokenInfo(IReadOnlyCollection<Claim> claims);
|
|
|
|
|
JwtTokenInfo GenerateJwtTokenInfo(IReadOnlyCollection<Claim> claims);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class TokenBuilder(
|
|
|
|
@ -46,16 +46,16 @@ public class TokenBuilder(
|
|
|
|
|
throw new NullReferenceException(nameof(IUserContext));
|
|
|
|
|
var principal = context.Principal ?? throw new NullReferenceException(nameof(context.Principal));
|
|
|
|
|
userContext.Id = long.Parse(
|
|
|
|
|
principal.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.NameId)?.Value);
|
|
|
|
|
principal.Claims.First(c => c.Type == JwtRegisteredClaimNames.NameId).Value);
|
|
|
|
|
userContext.Username =
|
|
|
|
|
principal.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.UniqueName)?.Value!;
|
|
|
|
|
userContext.Name = principal.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.Name)?.Value!;
|
|
|
|
|
userContext.Email = principal.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.Email)?.Value!;
|
|
|
|
|
principal.Claims.First(c => c.Type == JwtRegisteredClaimNames.UniqueName).Value;
|
|
|
|
|
userContext.Name = principal.Claims.First(c => c.Type == JwtRegisteredClaimNames.Name).Value;
|
|
|
|
|
userContext.Email = principal.Claims.First(c => c.Type == JwtRegisteredClaimNames.Email).Value;
|
|
|
|
|
userContext.RoleIds = principal.Claims.Where(c => c.Type == ClaimTypes.Role).Select(c => c.Value).ToArray();
|
|
|
|
|
userContext.RemoteIpAddress = context.HttpContext.GetRequestIp();
|
|
|
|
|
userContext.RemoteIpAddress = context.HttpContext.GetRequestIp()!;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public TokenInfo GenerateJwtTokenInfo(IReadOnlyCollection<Claim> claims)
|
|
|
|
|
public JwtTokenInfo GenerateJwtTokenInfo(IReadOnlyCollection<Claim> claims)
|
|
|
|
|
{
|
|
|
|
|
var jwtToken = new JwtSecurityToken(
|
|
|
|
|
issuer: jwtOptions.Issuer,
|
|
|
|
@ -65,7 +65,7 @@ public class TokenBuilder(
|
|
|
|
|
expires: DateTime.Now.AddSeconds(jwtOptions.Expiration),
|
|
|
|
|
signingCredentials: jwtOptions.SigningCredentials);
|
|
|
|
|
var token = jwtSecurityTokenHandler.WriteToken(jwtToken);
|
|
|
|
|
return new TokenInfo(encryptionService.Encrypt(token), jwtOptions.Expiration,
|
|
|
|
|
return new JwtTokenInfo(encryptionService.Encrypt(token), jwtOptions.Expiration,
|
|
|
|
|
JwtBearerDefaults.AuthenticationScheme);
|
|
|
|
|
}
|
|
|
|
|
}
|