示例#1
0
 public override Task <bool> CheckPasswordAsync(ApplicationUser user, string password)
 {
     return(user.IsLocal ? base.CheckPasswordAsync(user, password) : HoGentLoginManager.CheckPassword(user.Email, password));
 }
示例#2
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : true);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
                var user = await UserManager.FindByNameAsync(model.Email);

                if (user == null)
                {
                    var hogentUser = HoGentLoginManager.Login(model.Email, model.Password).Result;
                    if (hogentUser.HasValue)
                    {
                        var hogentIdentity = hogentUser.Value;
                        user = new ApplicationUser()
                        {
                            Base64Photo = hogentIdentity.Base64Foto,
                            Email       = hogentIdentity.Email,
                            Faculty     = hogentIdentity.Faculteit,
                            FirstName   = hogentIdentity.Voornaam,
                            LastName    = hogentIdentity.Naam,
                            UserName    = hogentIdentity.Email
                        };
                        switch (hogentIdentity.Type.ToLower())
                        {
                        case "personeel":
                            user.Type = Type.Staff;
                            break;

                        case "student":
                            user.Type = Type.Student;
                            break;

                        default:
                            ModelState.AddModelError("", "De aanmeldingsgegevens zijn correct maar het type van uw account is niet bekend. Gelieve contact op te nemen met de ontwerpers van deze applicatie");
                            return(View(model));
                        }
                        var identityCreationResult = UserManager.Create(user);
                        if (identityCreationResult.Succeeded)
                        {
                            await SignInManager.SignInAsync(user, false, model.RememberMe);

                            return(RedirectToLocal(returnUrl));
                        }
                        ModelState.AddModelError("", string.Join(", ", identityCreationResult.Errors));
                    }
                }
                goto default;

            default:
                ModelState.AddModelError("", "Uw logingegevens zijn niet correct.");
                return(View(model));
            }
        }