public async Task <IActionResult> Login([FromBody] LoginCredentialsSaveDto resourceSave) { var activity = $"Logged In {resourceSave.Username}, Password: {AES.Encrypt(resourceSave.Password)}"; if (resourceSave.Username == null || resourceSave.Password == null) { return(BadRequest("No Username or Password Provided!!!")); } var user = await _repo.LoginChecker(resourceSave); if (!user.IsSuccess) { return(Unauthorized()); } var key = Encoding.ASCII.GetBytes(_configuration.GetSection("AppSettings:Token").Value); var tokenHandler = new JwtSecurityTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim("LoggedInUser", AES.Encrypt($"{user.UserName}")), new Claim(ClaimTypes.Role, user.Role), new Claim("UserId", AES.Encrypt(user.UserId.ToString())), new Claim("FullName", AES.Encrypt(user.UserFullName)), }), Expires = DateTime.Now.AddDays(7), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature), Issuer = _configuration.GetSection("TokenAuthentication:Issuer").Value, Audience = _configuration.GetSection("TokenAuthentication:Audience").Value }; var tokenBytes = tokenHandler.CreateToken(tokenDescriptor); var token = tokenHandler.WriteToken(tokenBytes); var result = new LoginResultReadDto() { Nickname = user.Nickname, LogginedUser = $"{user.UserName}", Token = token, FullName = user.UserFullName, Role = user.Role }; await _auditTrailRepo.SaveSuccessAuthTrail(new AuditTrailAuthSuccessSaveDto() { Action = TransactionType.LOGINTOSYSTEM, Activity = $"{activity} Role: {user.Role}", UserInCharge = $"{user.UserName}", UserId = user.UserId, UserRole = user.Role }); return(Ok(result)); }
private async Task <User> AuthEasyTwo(LoginCredentialsSaveDto model) { var encrptyedPassword = AES.Encrypt(model.Password); return(await _context.Users .Include(x => x.UserRole) .Include(x => x.Employee) .FirstOrDefaultAsync (x => x.UserName.ToLower().Trim() == model.Username.Trim().ToLower() && x.Password == encrptyedPassword)); }
public async Task <LoginDetailsReadDto> LoginChecker(LoginCredentialsSaveDto model) { var user = await AuthEasyTwo(model); if (user == null) { return new LoginDetailsReadDto() { IsSuccess = false } } ; return(new LoginDetailsReadDto() { Nickname = user.Employee.NickName, IsSuccess = true, Role = user.UserRole.Name, UserName = user.UserName, UserFullName = $"{user.Employee.FirstName} {user.Employee.LastName}", UserId = user.Id, }); }