コード例 #1
0
ファイル: ILoginService.cs プロジェクト: neozhu/MrCMS
 public async Task<LoginResult> AuthenticateUser(LoginModel loginModel)
 {
     if (string.IsNullOrWhiteSpace(loginModel.ReturnUrl))
         loginModel.ReturnUrl = null;
     
     string message = null;
     User user = _userService.GetUserByEmail(loginModel.Email);
     if (user == null)
         message = "Incorrect email address.";
     if (user != null && user.IsActive)
     {
         if (_passwordManagementService.ValidateUser(user, loginModel.Password))
         {
             var guid = CurrentRequestData.UserGuid;
             await _authorisationService.SetAuthCookie(user, loginModel.RememberMe);
             CurrentRequestData.CurrentUser = user;
             EventContext.Instance.Publish<IOnUserLoggedIn, UserLoggedInEventArgs>(
                 new UserLoggedInEventArgs(user, guid));
             return user.IsAdmin
                        ? new LoginResult { Success = true, RedirectUrl = loginModel.ReturnUrl ?? "~/admin" }
                        : new LoginResult { Success = true, RedirectUrl = loginModel.ReturnUrl ?? "~/" };
         }
         message = "Incorrect email or password.";
     }
     return new LoginResult { Success = false, Message = message };
 }
コード例 #2
0
ファイル: LoginControllerTests.cs プロジェクト: neozhu/MrCMS
        public void LoginController_Show_ShouldSetViewDataAsModel()
        {
            var loginModel = new LoginModel();

            var result = _loginController.Show(null, loginModel);

            result.ViewData["login-model"].Should().Be(loginModel);
        }
コード例 #3
0
ファイル: LoginControllerTests.cs プロジェクト: neozhu/MrCMS
        public void LoginController_Show_ShouldUseTempDataModelBeforePassedModel()
        {
            var model1 = new LoginModel();
            var model2 = new LoginModel();
            _loginController.TempData["login-model"] = model1;

            var result = _loginController.Show(null, model2);

            result.ViewData["login-model"].Should().Be(model1);
        }
コード例 #4
0
        public async Task<LoginAndAssociateOrderResult> LoginAndAssociateOrder(LoginModel model, Order order)
        {
            LoginResult authenticateUser = await _loginService.AuthenticateUser(model);
            if (!authenticateUser.Success)
                return new LoginAndAssociateOrderResult
                {
                    Error = "We were unable to log you in, please check your password and try again"
                };

            order.User = CurrentRequestData.CurrentUser;
            _session.Transact(session => session.Update(order));
            return new LoginAndAssociateOrderResult();
        }
コード例 #5
0
ファイル: LoginControllerTests.cs プロジェクト: neozhu/MrCMS
        public void LoginController_Post_IfModelIsNotNullButModelStateIsInvalidShouldNotCallAuthenticateUser()
        {
            _loginController.ModelState.AddModelError("test", "error");
            var loginModel = new LoginModel();
            _loginController.Post(loginModel);

            A.CallTo(() => _loginService.AuthenticateUser(loginModel)).MustNotHaveHappened();
        }
コード例 #6
0
ファイル: LoginControllerTests.cs プロジェクト: neozhu/MrCMS
        public void LoginController_Post_IfAuthenticateUserReturnsFailureShouldSetMessageToModel()
        {
            var loginModel = new LoginModel();
            A.CallTo(() => _loginService.AuthenticateUser(loginModel))
             .Returns(Task.Run(() => new LoginResult {Success = false, Message = "failure message"}));

            RedirectResult redirectResult = _loginController.Post(loginModel).Result;

            loginModel.Message.Should().Be("failure message");
        }
コード例 #7
0
ファイル: LoginControllerTests.cs プロジェクト: neozhu/MrCMS
        public void LoginController_Post_IfAuthenticateUserReturnsFailureRedirectToLoginPage()
        {
            var loginModel = new LoginModel();
            A.CallTo(() => _loginService.AuthenticateUser(loginModel))
             .Returns(Task.Run(() => new LoginResult {Success = false}));

            var redirectResult = _loginController.Post(loginModel).Result;

            redirectResult.Url.Should().Be("~/login-page");
        }
コード例 #8
0
ファイル: LoginControllerTests.cs プロジェクト: neozhu/MrCMS
        public void LoginController_Post_IfAuthenticateUserReturnsSuccessShouldRedirectToReturnedUrl()
        {
            var loginModel = new LoginModel();
            A.CallTo(() => _loginService.AuthenticateUser(loginModel))
             .Returns(Task.Run(() => new LoginResult { Success = true, RedirectUrl = "redirect-url" }));
            var redirectResult = _loginController.Post(loginModel).Result;

            redirectResult.Url.Should().Be("redirect-url");
        }