public async Task <IActionResult> Login(LoginUserDm loginUser) { var userFromRepo = await _authRepository.Login(loginUser.Username.ToLower(), loginUser.Password); if (userFromRepo == null) { return(Unauthorized(new ResponseDm { IsSuccess = false, Message = "User not Authorized." })); } var roles = userFromRepo.UserGroups.Select(x => x.UserGroupId).ToArray(); var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.UserName.ToString()), new Claim(ClaimTypes.Name, $"{userFromRepo.FirstName} {userFromRepo.LastName}"), new Claim(ClaimTypes.Role, string.Join(",", roles)) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.Token)); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = credentials }; var userToReturn = _mapper.Map <UserListDm>(userFromRepo); var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(Ok(new { token = tokenHandler.WriteToken(token), user = userToReturn })); }
public async Task <IActionResult> Login(LoginUserDm loginUser) { var userFromRepo = await _authRepository.Login(loginUser.Username.ToLower(), loginUser.Password); if (userFromRepo == null) { return(Unauthorized()); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()), new Claim(ClaimTypes.Name, userFromRepo.UserName.ToLower()) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.Token)); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = credentials }; var userToReturn = _mapper.Map <UserListDm>(userFromRepo); var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(Ok(new { token = tokenHandler.WriteToken(token), user = userToReturn })); }