Esempio n. 1
0
        public async Task <AuthenticationModel> GetTokenAsync(GetTokenQuery query)
        {
            var authenticationModel = new AuthenticationModel();
            var user = await _userManagerWrapper.FindByEmailAsync(query.Email);

            if (user == null)
            {
                throw new IncorrectCredentialsException(query.Email);
            }

            if (!await _userManagerWrapper.CheckPasswordAsync(user, query.Password))
            {
                throw new IncorrectCredentialsException(query.Email);
            }

            authenticationModel.IsAuthenticated = true;
            var jwtSecurityToken = await CreateJwtToken(user);

            authenticationModel.Token    = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);
            authenticationModel.Email    = user.Email;
            authenticationModel.UserName = user.UserName;
            var rolesList = await _userManagerWrapper.GetRolesAsync(user).ConfigureAwait(false);

            authenticationModel.Roles = rolesList.ToList();
            return(authenticationModel);
        }
        public void GetTokenAsync_OnIncorrectCredentials_ThrowsIncorrectCredentialsException()
        {
            var userManagerWrapperMock = new Mock <IUserManagerWrapper>();
            var jwtTokenMock           = new Mock <IOptions <JWT> >();

            userManagerWrapperMock
            .Setup(x => x.FindByEmailAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(Mock.Of <ApplicationUser>()));
            userManagerWrapperMock
            .Setup(x => x.CheckPasswordAsync(It.IsAny <ApplicationUser>(), It.IsAny <string>()))
            .Returns(Task.FromResult(false));

            var sut = new UserService(userManagerWrapperMock.Object, jwtTokenMock.Object);

            var getTokenQuery = new GetTokenQuery
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            Action act = () => sut.GetTokenAsync(getTokenQuery).GetAwaiter().GetResult();


            act.Should().ThrowExactly <IncorrectCredentialsException>();
        }
Esempio n. 3
0
        public async Task <ActionResult> Login([FromBody] LoginUserRequest request)
        {
            var query    = new GetTokenQuery(request.Username, request.Password);
            var response = await _mediator.Send(query);

            return(response != null ? (ActionResult)Ok(response) : BadRequest());
        }
        public async Task <IActionResult> Login(GetTokenQuery getTokenQuery)
        {
            var result = await _mediator.Send(getTokenQuery);

            if (string.IsNullOrEmpty(result))
            {
                return(Forbid());
            }

            return(Json(result));
        }
Esempio n. 5
0
        public async Task <IActionResult> GetToken([FromQuery] GetTokenQuery query)
        {
            try
            {
                var token = await _mediator.Send(query, this.HttpContext.RequestAborted);

                return(Ok(token));
            }
            catch (GetTokenQueryException e)
            {
                return(BadRequest(e.Message));
            }
        }
        public async Task <TokenRespose> Handle(GetTokenQuery request, CancellationToken cancellationToken)
        {
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("grant_type", "authorization_code")
                , new KeyValuePair <string, string>("code", request.AccessCode)
                , new KeyValuePair <string, string>("redirect_uri", config.Value.RedirectUri)
                , new KeyValuePair <string, string>("client_id", config.Value.ClientId)
                , new KeyValuePair <string, string>("client_secret", config.Value.ClientSecret)
            });

            var client   = httpHelpers.GetClient(config.Value.OAuthServerUrl);
            var response = await client.PostAsync("/connect/token", content);

            if (response.IsSuccessStatusCode)
            {
                dynamic result             = JsonConvert.DeserializeObject <dynamic>(await response.Content.ReadAsStringAsync());
                var     jwtSecurityHandler = new JwtSecurityTokenHandler();
                var     token = (JwtSecurityToken)jwtSecurityHandler.ReadJwtToken(result.access_token.ToString());


                var tokens = new TokenDetails
                {
                    AccessToken  = result.access_token,
                    RefreshToken = request.AccessCode,
                    ExpiryDate   = FromUnixTime(token.Claims.Where(x => x.Type == "exp").FirstOrDefault().Value)
                };

                tokenStorage.Clear();
                tokenStorage.Store(tokens, config.Value.TokenKey);

                var user = await userService.GetInfo();

                tokenStorage.Store(user, "userInfo");

                return(new TokenRespose {
                    Response = tokens
                });
            }
            return(new TokenRespose());
        }
 public async Task <ActionResult <ServiceResult <LoginResponse> > > Create(GetTokenQuery query)
 {
     return(Ok(await Mediator.Send(query)));
 }
        public void GetTokenAsync_OnCredentials_ReturnsAuthenticationModel()
        {
            var claims = new List <Claim>()
            {
                new Claim("roles", "test")
            } as IList <Claim>;

            var roles = new List <string>()
            {
                "User"
            } as IList <string>;

            var applicationUser = new ApplicationUser
            {
                Id       = Guid.NewGuid().ToString(),
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var jwt = new JWT
            {
                Audience          = "test",
                DurationInMinutes = 50,
                Issuer            = "test",
                Key = "some_big_key_value_here_secret_123"
            };

            var userManagerWrapperMock = new Mock <IUserManagerWrapper>();
            var jwtTokenMock           = new Mock <IOptions <JWT> >();

            jwtTokenMock.Setup(x => x.Value)
            .Returns(jwt);
            userManagerWrapperMock
            .Setup(x => x.FindByEmailAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(applicationUser));
            userManagerWrapperMock
            .Setup(x => x.CheckPasswordAsync(It.IsAny <ApplicationUser>(), It.IsAny <string>()))
            .Returns(Task.FromResult(true));
            userManagerWrapperMock
            .Setup(x => x.GetClaimsAsync(It.IsAny <ApplicationUser>()))
            .Returns(Task.FromResult(claims));
            userManagerWrapperMock
            .Setup(x => x.GetRolesAsync(It.IsAny <ApplicationUser>()))
            .Returns(Task.FromResult(roles));

            var sut = new UserService(userManagerWrapperMock.Object, jwtTokenMock.Object);

            var getTokenQuery = new GetTokenQuery
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            var result = sut.GetTokenAsync(getTokenQuery).GetAwaiter().GetResult();


            result.Should().NotBeNull();
            result.Email.Should().Be("*****@*****.**");
            result.IsAuthenticated.Should().Be(true);
            result.UserName.Should().Be("*****@*****.**");
        }
 public async Task <IActionResult> Token([FromBody] GetTokenQuery query)
 {
     return(Ok(await Mediator.Send(query)));
 }
Esempio n. 10
0
 public async Task <IActionResult> Post([FromQuery] GetTokenQuery credentials)
 {
     return(Ok(await Mediator.Send(credentials)));
 }