PasswordChangeModelValidator.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Autofac;
  2. using FluentValidation;
  3. using GreenTree.Nachtragsmanagement.Core;
  4. using GreenTree.Nachtragsmanagement.Core.Authentication;
  5. using GreenTree.Nachtragsmanagement.Services.User;
  6. using GreenTree.Nachtragsmanagement.Web.Models.Global;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Web;
  11. namespace GreenTree.Nachtragsmanagement.Web.Validation.Global
  12. {
  13. public class PasswordChangeModelValidator : AbstractValidator<PasswordChangeDataModel>
  14. {
  15. public PasswordChangeModelValidator()
  16. {
  17. RuleFor(m => m.CurrentPassword)
  18. .Must(m => CurrentPasswordIsCorrect(m))
  19. .WithMessage("Aktuelles Passwort ist falsch");
  20. RuleFor(m => m.NewPassword)
  21. .NotEmpty()
  22. .WithMessage("Ein neues Passwort wird benötigt");
  23. RuleFor(m => m)
  24. .Must(m => m.NewPassword == m.ConfirmedPassword)
  25. .WithMessage("Das neue und das bestätigte Passwort stimmen nicht überein");
  26. }
  27. private bool CurrentPasswordIsCorrect(string currentPassword)
  28. {
  29. var userHelper = Singleton<IContainer>.Instance.Resolve<IUserHelper>();
  30. var userService = Singleton<IContainer>.Instance.Resolve<IUserService>();
  31. var currentUser = userHelper.FromCookiesOrSession();
  32. if (currentUser == null)
  33. return false;
  34. currentUser = userService.GetUserById(currentUser.Id);
  35. if (currentUser == null)
  36. return false;
  37. if (currentUser.Password != StaticHelper.GetMD5Hash(currentPassword))
  38. return false;
  39. return true;
  40. }
  41. }
  42. }