public async Task <string> GenerateToken(UserForLoginRequest userForLoginRequest, string secret, string issuer, string audience, CancellationToken cancellationToken = default(CancellationToken)) { var userFromRepo = await _uow.AppUsers.GetUserByEmail(userForLoginRequest.Email, cancellationToken); var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()), new Claim(ClaimTypes.Name, userFromRepo.FirstName + " " + userFromRepo.LastName) }; var tokenHandler = new JwtSecurityTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddMinutes(5), Issuer = issuer, Audience = audience, SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret)), SecurityAlgorithms.HmacSha512) }; var token = tokenHandler.CreateToken(tokenDescriptor); return(tokenHandler.WriteToken(token));; }
public async Task <IActionResult> Login([FromBody] UserForLoginRequest userForLoginRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var user = await _authService.Login(userForLoginRequest); if (user == null) { return(Unauthorized()); } var token = await _authService.GenerateToken(userForLoginRequest, _secret, _issuer, _audience); var tokenResponse = new TokenResponse { Id = user.Id, FullName = user.FirstName + " " + user.LastName, Token = token.ToString() }; return(Ok(tokenResponse)); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode(500)); } }
public async Task <IActionResult> Login(UserForLoginRequest loginRequest) { var result = await _mediator.Send(new UserForLoginCommand(loginRequest)); if (result.Success) { return(Ok(result)); } return(BadRequest(result)); }
public async Task <IActionResult> Login([FromBody] UserForLoginRequest userForLogin) { User userFromRepo = null; SigningCredentials creds = null; try { userFromRepo = await _repo.Login(userForLogin.Username.ToLower(), userForLogin.Password); if (userFromRepo == null) { return(Unauthorized()); } var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Secret").Value)); creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); } catch (Exception e) { _logger.LogError(Guid.NewGuid().ToString(), e); } var claims = new List <Claim>() { new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()), new Claim(ClaimTypes.Name, userFromRepo.Username) }; claims.AddRange(userFromRepo.Roles.Select(role => new Claim(ClaimTypes.Role, role.Name.ToString()))); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken((tokenDescriptor)); return(Ok(new { token = tokenHandler.WriteToken(token), userFromRepo.Username })); }
public async Task <UserForListResponse> Login(UserForLoginRequest userForLoginRequest, CancellationToken cancellationToken = default(CancellationToken)) { var userFromRepo = await _uow.AppUsers.GetUserByEmail(userForLoginRequest.Email, cancellationToken); if (userFromRepo == null) { return(null); } if (!VerifyPasswordHash(userForLoginRequest.Password, userFromRepo.PasswordHash, userFromRepo.PasswordSalt)) { return(null); } var userToReturn = _mapper.Map <UserForListResponse>(userFromRepo); return(userToReturn); }
public async Task <IActionResult> Login([FromBody] UserForLoginRequest userForLoginRequest) { try { if (!ModelState.IsValid) { return(BadRequest()); } var userToLogin = await _userService.GenerateTokenAsync(userForLoginRequest.UserName.ToLower(), userForLoginRequest.Password, _configuration.GetSection("AppSettings:Token").Value); if (userToLogin == null) { return(Unauthorized()); } return(Ok(userToLogin)); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode(500)); } }
public UserForLoginCommand(UserForLoginRequest userForLoginRequest) { _userForLoginRequest = userForLoginRequest; }