public Tuple <RestoreAccessModel, List <ErrorDescription> > ValidateRestoreAccessModel(JObject requestParams) { var recoveryPasswordModel = new RestoreAccessModel(); var errors = new List <ErrorDescription>(); recoveryPasswordModel.ConfirmationCode = (string)requestParams["confirmationCode"]; recoveryPasswordModel.NewPassword = (string)requestParams["newPassword"]; recoveryPasswordModel.RepeatedNewPassword = (string)requestParams["repeatedNewPassword"]; if (recoveryPasswordModel.ConfirmationCode == null) { errors.Add(new ErrorDescription { Error = "validation.Missing", Attribute = "confirmationCode" }); } else if (recoveryPasswordModel.ConfirmationCode.Length != 60) { errors.Add(new ErrorDescription { Error = "validation.Incorrect", Attribute = "confirmationCode" }); } if (recoveryPasswordModel.NewPassword == null) { errors.Add(new ErrorDescription { Error = "validation.Missing", Attribute = "newPassword" }); } else if (recoveryPasswordModel.NewPassword.Length < 8 || recoveryPasswordModel.NewPassword.Length > 24) { errors.Add(new ErrorDescription { Error = "validation.Incorrect", Attribute = "newPassword" }); } if (recoveryPasswordModel.RepeatedNewPassword == null) { errors.Add(new ErrorDescription { Error = "validation.Missing", Attribute = "repeatedNewPassword" }); } else if (recoveryPasswordModel.RepeatedNewPassword.Length < 8 || recoveryPasswordModel.RepeatedNewPassword.Length > 24) { errors.Add(new ErrorDescription { Error = "validation.Incorrect", Attribute = "repeatedNewPassword" }); } return(new Tuple <RestoreAccessModel, List <ErrorDescription> >(recoveryPasswordModel, errors)); }
public async Task RestoreAccess(RestoreAccessModel model) { var user = await usersService.GetByEmailAsync(model.Email); if (user == null) { throw new ApplicationException("Пользователь не найден."); } var password = passwordGenerator.Generate(8); var encryptedPassword = passwordEncrypter.Encrypt(password); user.Password = encryptedPassword; user.IsLocked = false; user.CountOfInvalidAttempts = 0; await dataContext.SaveChangesAsync(); await emailService.SendRestoreAccessMailAsync(UserMap.Map(user), password); }
public async Task <ActionResult> Restore(RestoreAccessModel restoreAccessModel) { await accountService.RestoreAccess(restoreAccessModel); return(Ok()); }