public IActionResult SignInUser([FromBody] SignInApiModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } return(ReturnResult(_accountService.Authenticate(model.To()) .ConvertToResult(user => JwtTokenApiModel.From(user, _settings)))); }
private async Task <SignInApiModel> GetTokenApiModel(UserGetFullApiModel user, string refreshToken = null) { // Create claims for token var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, user.Id), }; var roleClaims = user.Roles.Select(x => new Claim(ClaimTypes.Role, RoleHelper.Current.GetName(x.Id))); claims.AddRange(roleClaims); // Generate JWT var createTime = DateTime.UtcNow; var expiresTime = createTime.Add(AuthJwtConfig.Current.Lifetime); var token = new JwtSecurityToken( issuer: AuthJwtConfig.Current.Issuer, audience: AuthJwtConfig.Current.Audience, claims: claims, expires: expiresTime, signingCredentials: new SigningCredentials( AuthJwtConfig.Current.SymmetricSecurityKey, AuthJwtConfig.Current.SigningAlgorithm) ); string jwtToken = new JwtSecurityTokenHandler().WriteToken(token); var refresh = string.IsNullOrEmpty(refreshToken) ? await _refreshTokenService.CreateToken(user.Id) : await _refreshTokenService.UpdateToken(user.Id, refreshToken); SignInApiModel response = new SignInApiModel() { UserId = user.Id, Token = jwtToken, RefreshToken = refresh, LifeTime = expiresTime.ToString() }; return(response); }