예제 #1
0
        public async Task <TokenResponseDto> GetAccessTokenAsync(TokenRequestDto request)
        {
            var user = await _userManager.FindByNameAsync(request.UserName);

            if (user == null)
            {
                throw new AuthException(AuthErrors.InvalidCredentials);
            }

            if (!await _userManager.CheckPasswordAsync(user, request.Password))
            {
                throw new AuthException(AuthErrors.InvalidCredentials);
            }

            // generate refresh token
            var refreshToken = GenerateRefreshToken();

            user.AddRefreshToken(refreshToken);
            await _userManager.UpdateAsync(user);

            var roles = await _userManager.GetRolesAsync(user);

            return(new TokenResponseDto()
            {
                AccessToken = _jwtGenerator.GenerateJwtToken(user, roles.ToList()),
                RefreshToken = refreshToken
            });
        }
        async Task <object> ISwmsAuthorizer.Authenticate(ControllerBase controllerBase, LoginDto loginDto)
        {
            SignInResult signInResult = await SignInAsync(loginDto);

            if (!signInResult.Succeeded)
            {
                return(controllerBase.BadRequest(signInResult));
            }

            SwmsUser appUser = await _userManager.FindByNameAsync(loginDto.UserName);

            return(_jwtGenerator.GenerateJwtToken(appUser));
        }