Exemplo n.º 1
0
        private async Task <LoginViewModel> AuthenticateUser(LoginViewModel model)
        {
            var userResponse = new LoginViewModel()
            {
                Result = AuthResult.Failed
            };
            var user = await _context.Users.Where(usr => usr.UserName == model.UserName).FirstOrDefaultAsync();

            if (user == null)
            {
                return(userResponse);
            }

            var profile = await _context.Profiles.Where(ity => ity.UserId == user.Id).FirstOrDefaultAsync();

            var passwordMatch = _saltPasswordService.ComparePasswords(user.Password, model.Password);

            userResponse.UserId   = user.Id;
            userResponse.UserName = user.UserName;
            userResponse.FullName = profile != null?string.Format("{0} {1} {2}", profile.FirstName, profile.MiddleName, profile.LastName) : string.Empty;

            userResponse.PasswordMatch = passwordMatch;
            userResponse.UserStatusId  = user.StatusId;

            if (user.StatusId == (int)UserStatusEnum.Active || user.StatusId == (int)UserStatusEnum.ActivewithTemporaryPassword)
            {
                if (passwordMatch)
                {
                    userResponse.Result = AuthResult.Success;
                    var passwordChangeRecommendedInDays = _passwordChangeSettings.Value.PasswordChangeRecommendedInDays;
                    var passwordExpiredInDays           = _passwordChangeSettings.Value.PasswordExpiredInDays;
                }

                await _context.SaveChangesAsync();

                userResponse.UserStatusId = user.StatusId;
            }
            else if (user.StatusId == (int)UserStatusEnum.Locked)
            {
                userResponse.Result = AuthResult.AccountLocked;
            }
            return(userResponse);
        }