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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        public async Task <ActionResult> Restore(RestoreAccessModel restoreAccessModel)
        {
            await accountService.RestoreAccess(restoreAccessModel);

            return(Ok());
        }