public string GenerateToken(UserAutenticationDto userAutenticationDto) { var tokenHandler = new JwtSecurityTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Subject = GenerateSubject(userAutenticationDto), Expires = DateTime.Now.AddHours(1), SigningCredentials = GenerateSigningCredentials() }; var token = tokenHandler.CreateToken(tokenDescriptor); userAutenticationDto.Token = tokenHandler.WriteToken(token); return(userAutenticationDto.Token); }
public async Task <UserAutenticationDto> LoginAsync(UserAutenticationDto userDto) { try { var passwordEncrypted = _cryptStrategy.Encrypt(userDto.Password); var user = await _userRepository.GetUserAsync(userDto.Username, passwordEncrypted); if (user is null) { userDto.AddError("Usuário e/ou senha incorretos."); userDto.Password = string.Empty; return(userDto); } _tokenService.GenerateToken(userDto); return(userDto); } catch (Exception) { userDto.AddError("Ocorreu um erro inesperado."); return(userDto); } }
public async Task <ActionResult> LoginAsync(UserAutenticationDto dto) => ResultHandler(await _userUpdater.LoginAsync(dto));
private ClaimsIdentity GenerateSubject(UserAutenticationDto userAutenticationDto) => new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, userAutenticationDto.Username), new Claim(ClaimTypes.Role, userAutenticationDto.Role) });