コード例 #1
0
        public async Task ShouldBeHttpStatusCodeOK()
        {
            // Arrange
            var user    = TestData.FileStorage.GetUsers().First();
            var factory = TestHost;

            _httpClient = factory.CreateClient();
            var testServer = factory.Server;

            testServer.CleanupDbContext();

            await testServer.UsingScopeAsync(
                async scope =>
            {
                var service = scope.GetRequiredService <IUserService>();

                await service.CreateAsync(user, Password);
            });

            var request = new LoginAccountRequest
            {
                Email      = user.Email,
                Password   = Password,
                RememberMe = false,
                ReturnUrl  = "/"
            };

            // Act
            using var response = await this.ExecuteAsync(request);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            // Francis: Est-ce que je dois vérifier si il est connecté ???
        }
コード例 #2
0
ファイル: AccountController.cs プロジェクト: tabright26/edoxa
        public async Task <IActionResult> LoginAccountAsync([FromBody] LoginAccountRequest request)
        {
            var context = await _interactionService.GetAuthorizationContextAsync(request.ReturnUrl);

            if (context != null)
            {
                var user = await _userService.FindByEmailAsync(request.Email);

                if (user != null)
                {
                    var result = await _signInService.PasswordSignInAsync(
                        user,
                        request.Password,
                        request.RememberMe,
                        true);

                    if (result.Succeeded)
                    {
                        await _eventService.RaiseAsync(new UserLoginSuccessEvent(user.UserName, user.Id.ToString(), user.UserName));

                        return(this.Ok(request.ReturnUrl));
                    }

                    var errorMessage = AccountErrorDescriber.PasswordInvalid();

                    await _eventService.RaiseAsync(new UserLoginFailureEvent(user.UserName, errorMessage));

                    ModelState.AddModelError(DomainValidationError.FailedPreconditionPropertyName, errorMessage);

                    return(this.BadRequest(new ValidationProblemDetails(ModelState)));
                }
            }

            return(this.Unauthorized());
        }
コード例 #3
0
        public async Task ShouldBeHttpStatusCodeBadRequest()
        {
            // Arrange
            var user    = TestData.FileStorage.GetUsers().First();
            var factory = TestHost.WithClaimsFromDefaultAuthentication(new Claim(JwtClaimTypes.Subject, user.Id.ToString()));

            _httpClient = factory.CreateClient();
            var testServer = factory.Server;

            testServer.CleanupDbContext();

            await testServer.UsingScopeAsync(
                async scope =>
            {
                var service = scope.GetRequiredService <IUserService>();

                await service.CreateAsync(user, Password);
            });

            var request = new LoginAccountRequest
            {
                Email      = user.Email,
                Password   = "******",
                RememberMe = false,
                ReturnUrl  = "/"
            };

            // Act
            using var response = await this.ExecuteAsync(request);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);

            // Francis: Est-ce que je devrais checker si le message derreur est le bon ???
        }
コード例 #4
0
        public async Task ShouldBeHttpStatusCodeUnauthorized()
        {
            // Arrange
            var user    = TestData.FileStorage.GetUsers().First();
            var factory = TestHost;

            _httpClient = factory.CreateClient();
            var testServer = factory.Server;

            testServer.CleanupDbContext();

            var request = new LoginAccountRequest
            {
                Email      = user.Email,
                Password   = Password,
                RememberMe = false,
                ReturnUrl  = "/"
            };

            // Act
            using var response = await this.ExecuteAsync(request);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.Unauthorized);
        }
コード例 #5
0
        public Guid Login(LoginAccountRequest request)
        {
            var response = ExecuteRequest <LoginAccountRequest, LoginAccountResponse>(request);

            Client.DefaultRequestHeaders.Add(response.Coockie.Key, new List <string> {
                response.Coockie.Value
            });
            return(response.UserId);
        }
コード例 #6
0
        public string LoginUser([FromBody] LoginAccountRequest loginAccountRequest)
        {
            var loginResponse = _loginService.LoginUser(loginAccountRequest);

            if (loginResponse.StatusCode == (int)HttpStatusCode.OK)
            {
                loginResponse.AccessToken = TokenManager.GenerateAccessToken(loginAccountRequest.Email);
            }
            return(loginResponse.ToString());
        }
コード例 #7
0
        public LoginAccountResponse Login(LoginAccountRequest request)
        {
            this.Assert(request.UserName);
            if (!WebSecurity.Login(request.UserName, request.Password, request.RememberMe))
            {
                throw new AuthenticationException("Bad login or password");
            }
            var cookie = FormsAuthentication.GetAuthCookie(request.UserName, request.RememberMe);
            var userId = Context.Accounts.FirstOrDefault(u => string.Compare(u.AccountName, request.UserName, StringComparison.OrdinalIgnoreCase) == 0).UserId.Value;

            return(new LoginAccountResponse(userId, cookie));
        }
コード例 #8
0
        public async Task <AccountLoginResult> PostLoginAccount([FromBody] LoginAccountRequest loginAccountRequest)
        {
            Account account = await _accountRepository.LoginAccount(loginAccountRequest.Email, loginAccountRequest.Password);

            AccountLoginResult accountLoginResult = new AccountLoginResult();

            accountLoginResult.Token   = _tokenJwtService.GenerateToken(account);
            accountLoginResult.Expires = DateTime.UtcNow.AddHours(int.Parse(AppSettingsProvider.Settings["TimeExpirationTokenJwtBearer"]));
            accountLoginResult.Type    = "Bearer";

            return(accountLoginResult);
        }
コード例 #9
0
        public LoginRequestResponse LoginUser(LoginAccountRequest loginAccountRequest)
        {
            LoginRequestResponse loginRequestResponse = new LoginRequestResponse();

            if (_authRepository.CustomerAccountExists(loginAccountRequest.Email, loginAccountRequest.Password))
            {
                loginRequestResponse = CreateLoginResponse(loginAccountRequest, (int)HttpStatusCode.OK);
            }
            else
            {
                loginRequestResponse = CreateLoginResponse(loginAccountRequest, (int)HttpStatusCode.NotFound);
            }
            return(loginRequestResponse);
        }
コード例 #10
0
        public async Task <IActionResult> Login(LoginAccountRequest loginAccountRequest)
        {
            if (!ModelState.IsValid)
            {
                return(View(loginAccountRequest));
            }
            var user = await _userManager.FindByNameAsync(loginAccountRequest.UserName);

            if (user == null)
            {
                loginAccountRequest.LoginSuccess = false;
                loginAccountRequest.Error        = "Sai ten dang nhap";
                return(View(loginAccountRequest));
            }
            var result = await _signInManager.PasswordSignInAsync(user, loginAccountRequest.Passwword, false, false);

            if (result.Succeeded)
            {
                return(RedirectToAction("Index", "Home"));
            }
            loginAccountRequest.LoginSuccess = false;
            loginAccountRequest.Error        = "Sai mat khau";
            return(View());
        }
コード例 #11
0
 public LoginRequestResponse CreateLoginResponse(LoginAccountRequest loginAccountRequest, int statusCode)
 {
     return(_authRepository.CreateLoginResponse(loginAccountRequest.Email, loginAccountRequest.Password, statusCode));
 }
コード例 #12
0
 public Task <HttpResponseMessage> Login([FromBody] LoginAccountRequest request)
 {
     return(ExecuteAction(request, Repository.Login));
 }
コード例 #13
0
 private async Task <HttpResponseMessage> ExecuteAsync(LoginAccountRequest request)
 {
     return(await _httpClient.PostAsJsonAsync("api/account/login", request));
 }