public IHttpActionResult Edit(AccountEditViewModelItem request)
        {
            AccountEditViewModel viewmodel = new AccountEditViewModel();
            UserDataController   dataCtrl  = new UserDataController();

            try
            {
                User updateModel = dataCtrl.GetItem(request.ID);
                updateModel.ToModel(request);

                if (request.OldPassword != null && request.NewPassword1 != null && request.NewPassword2 != null)
                {
                    var newPassword = PasswordHelper.ChangePassword(dataCtrl.GetItem(UserHelper.CurrentUserID), request.OldPassword, request.NewPassword1, request.NewPassword2);
                    dataCtrl.ChangePassword(UserHelper.CurrentUserID, newPassword);
                    viewmodel.AddSuccessMessage("Passwort wurde geändert.");
                }

                updateModel = dataCtrl.Update(updateModel);
                viewmodel.Data.FromModel(updateModel);
            }
            catch (WrongPasswordException)
            {
                return(Warning(viewmodel, "Das eingegebene Passwort stimmt nicht."));
            }
            catch (PasswordsNotEqualException)
            {
                return(Warning(viewmodel, "Die eingegebenen Passwörter stimmt nicht überein."));
            }
            catch (Exception ex)
            {
                return(Error(viewmodel, ex));
            }

            return(Ok(viewmodel, "Profil wurde aktualisiert."));
        }
Esempio n. 2
0
        public IHttpActionResult ResetPassword(String code, PasswordChangeRequest request)
        {
            BaseViewModel      viewmodel = new BaseViewModel();
            UserDataController dataCtrl  = new UserDataController();

            try
            {
                var user = dataCtrl.GetItems().SingleOrDefault(x => x.PasswordReset == code);
                if (user == null)
                {
                    return(Warning(viewmodel, "Der Link ist abgelaufen."));
                }
                String newPwd = PasswordHelper.ChangePassword(user, request.Password1, request.Password2);
                dataCtrl.ChangePassword(user.ID, newPwd);
            }
            catch (Exception ex)
            {
                return(Error(viewmodel, ex));
            }

            return(Ok(viewmodel, "Dein Passwort wurde gesetzt."));
        }