Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.15 KB | None | 0 0
  1. public async Task<ActionResult> Login_Post(LoginViewModel loginViewModel)
  2. {
  3. if (ModelState.IsValid)
  4. {
  5. var user = IdentityManager.UserManager.FindByName(loginViewModel.Username);
  6. if (user != null)
  7. {
  8. IdentityManager.SignInManager.AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
  9. var status = SignInStatus.Failure;
  10. if (!user.IsApproved)
  11. {
  12. status = SignInStatus.Failure;
  13. }
  14. if (!await IdentityManager.UserManager.IsEmailConfirmedAsync(user.Id))
  15. {
  16. status = SignInStatus.EmailNotConfirmed;
  17. }
  18. status = (SignInStatus)await IdentityManager.SignInManager
  19. .PasswordSignInAsync(loginViewModel.Username, loginViewModel.Password, loginViewModel.RememberMe, true);
  20. if (status == SignInStatus.Failure)
  21. {
  22. await IdentityManager.UserManager.AccessFailedAsync(user.Id);
  23. if (await IdentityManager.UserManager.IsLockedOutAsync(user.Id))
  24. {
  25. status = SignInStatus.LockedOut;
  26. }
  27. }
  28. switch (status)
  29. {
  30. case SignInStatus.Success:
  31. var identity = await IdentityManager.UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
  32. var permissions = IdentityManager.ApplicationDbContext.UserVesselPermissions(Guid.Parse(identity.GetUserId()), DateTime.Now).ToList();
  33. var userVesselPermissionsResult = permissions.FirstOrDefault();
  34. identity.AddClaim(userVesselPermissionsResult != null
  35. ? new Claim(SealogicalClaimUtility.VesselId, userVesselPermissionsResult.VesselId.ToString())
  36. : new Claim(SealogicalClaimUtility.VesselId, ""));
  37. IdentityManager.SignInManager.AuthenticationManager.SignIn(identity);
  38. return RedirectToAction("Index", "HomeDashboard", new {area = "Dashboard"});
  39. case SignInStatus.Failure:
  40. ModelState.AddModelError("", "Login failed, username or password is incorrect.");
  41. break;
  42. case SignInStatus.RequiresVerification:
  43. ModelState.AddModelError("", "Your account needs verification");
  44. break;
  45. case SignInStatus.LockedOut:
  46. ModelState.AddModelError("",
  47. "Login failed, this account has been locked. Contact administrator for further information.");
  48. break;
  49. case SignInStatus.EmailNotConfirmed:
  50. ModelState.AddModelError("",
  51. "Login failed, activate this account by clicking the email sent to your email account.");
  52. break;
  53. default:
  54. ModelState.AddModelError("",
  55. "Login failed, unkwon error. Contact administrator for further information");
  56. break;
  57. }
  58. }
  59. }
  60. return View("Login", loginViewModel);
  61. }
  62.  
  63. case SignInStatus.Success:
  64. var identity = await IdentityManager.UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
  65. var permissions = IdentityManager.ApplicationDbContext.UserVesselPermissions(Guid.Parse(identity.GetUserId()), DateTime.Now).ToList();
  66. var userVesselPermissionsResult = permissions.FirstOrDefault();
  67. identity.AddClaim(userVesselPermissionsResult != null
  68. ? new Claim(SealogicalClaimUtility.VesselId, userVesselPermissionsResult.VesselId.ToString())
  69. : new Claim(SealogicalClaimUtility.VesselId, ""));
  70. IdentityManager.SignInManager.AuthenticationManager.SignIn(identity);
  71. return RedirectToAction("Index", "HomeDashboard", new {area = "Dashboard"});
  72.  
  73. public static class SealogicalClaimUtility
  74. {
  75. public const string VesselId = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/vesselid";
  76. }
  77.  
  78. public static Guid? UserSelectedVesselId
  79. {
  80. get
  81. {
  82. var hasVesselClaim = ((ClaimsIdentity) HttpContext.Current.User.Identity)
  83. .HasClaim(claim => claim.Type == SealogicalClaimUtility.VesselId);
  84. if (hasVesselClaim)
  85. {
  86. var vesselClaim = ((ClaimsIdentity) HttpContext.Current.User.Identity).Claims.FirstOrDefault(
  87. claim => claim.Type == SealogicalClaimUtility.VesselId);
  88. if (vesselClaim != null)
  89. {
  90. Guid vesselId;
  91. if (Guid.TryParse(vesselClaim.Value, out vesselId))
  92. {
  93. return vesselId;
  94. }
  95. }
  96. return null;
  97. }
  98. var currentUserPermission = UserVesselPermissions.FirstOrDefault();
  99. return currentUserPermission?.VesselId;
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement