public IActionResult SignInUser([FromBody] SignInApiModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(ReturnResult(_accountService.Authenticate(model.To())
                                .ConvertToResult(user => JwtTokenApiModel.From(user, _settings))));
        }
Example #2
0
        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);
        }