示例#1
0
        public async Task <RedirectResult> Post([IoCModelBinder(typeof(LoginModelModelBinder))] LoginModel loginModel)
        {
            if (loginModel != null && ModelState.IsValid)
            {
                var result = _loginService.AuthenticateUser(loginModel);
                switch (result.Status)
                {
                case LoginStatus.Success:
                    await _logUserIn.Login(result.User, loginModel.RememberMe);

                    return(Redirect(result.ReturnUrl));

                case LoginStatus.TwoFactorRequired:
                    // if the page doesn't exist, do the standard login
                    if (_uniquePageService.GetUniquePage <TwoFactorCodePage>() == null)
                    {
                        await _logUserIn.Login(result.User, loginModel.RememberMe);

                        return(Redirect(result.ReturnUrl));
                    }

                    _setVerifiedUserData.SetUserData(result.User);
                    return(_uniquePageService.RedirectTo <TwoFactorCodePage>(new { result.ReturnUrl }));

                case LoginStatus.Failure:
                    EventContext.Instance.Publish <IOnFailedLogin, UserFailedLoginEventArgs>(
                        new UserFailedLoginEventArgs(result.User, loginModel.Email));
                    break;

                case LoginStatus.LockedOut:
                    EventContext.Instance.Publish <IOnLockedOutUserAuthed, UserLockedOutEventArgs>(
                        new UserLockedOutEventArgs(result.User));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                loginModel.Message = result.Message;
            }
            TempData["login-model"] = loginModel;

            return(_uniquePageService.RedirectTo <LoginPage>());
        }
        public ActionResult Post(TwoFactorAuthModel model)
        {
            var result = _confirmationService.TryAndConfirmCode(model);

            if (result.Success)
            {
                _logUserIn.Login(result.User, false); //TODO: pass this over
                return(Redirect(result.ReturnUrl));
            }
            return(_uniquePageService.RedirectTo <TwoFactorCodePage>(new { result.ReturnUrl }));
        }