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));
        }
示例#2
0
        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));
        }
示例#3
0
        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,
            });
        }