Exemple #1
0
 public ActionResult SetFirstlogin(string code)
 {
     try
     {
         SetFirstPasswordViewModel model = new SetFirstPasswordViewModel();
         model.code = code;
         return(View(model));
     }
     catch (Exception ex)
     {
         _log.Error(ex);
         return(View("Error"));
     }
 }
        public async Task <ActionResult> SetFirstlogin(SetFirstPasswordViewModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }
                long UserId = model.code.DecryptID();
                if (HasNewPasswordBeenUsedRecently(UserId, model.Password))
                {
                    //return false;
                    ModelState.AddModelError("A previous password can't be used as your new password", "Kindly provide a new password this password ");
                    return(View(model));
                }
                else
                {
                    // string code = await _userManager.GeneratePasswordResetTokenAsync(UserId);
                    // var result = await _userManager.ResetPasswordAsync(UserId,code, model.Password);
                    var result = await _userManager.ChangePasswordAsync(UserId, "Password", model.Password);

                    if (result.Succeeded)
                    {
                        ApplicationUserPasswordHistory passwordModel = new ApplicationUserPasswordHistory();
                        passwordModel.UserId       = UserId;
                        passwordModel.DateCreated  = DateTime.Now;
                        passwordModel.HashPassword = ExtentionUtility.Encrypt(model.Password);
                        _passwordCommand.Insert(passwordModel);
                        _passwordCommand.SaveChanges();

                        ApplicationUser xmodel = _userManager.FindById(UserId);
                        xmodel.IsFirstLogin = false;
                        _userManager.Update(xmodel);
                        return(RedirectToAction("SetPasswordConfirmation", "Account"));
                    }
                    AddErrors(result);
                }
                return(View(model));
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                return(View("Error"));
            }
        }