예제 #1
0
        public Task <AuthResult> Handle(LoginCommand request, CancellationToken cancellationToken)
        {
            var user = _userRepository.GetUser(new PrzedsiebiorstwoSpecification(request.Email), request.PrzedsiebiorstwoId);

            if (user != null && user.ValidatePassword(request.Password))
            {
                var refreshToken = _tokenStore.GetRefreshToken(user.Id);
                var authResult   = new AuthResult
                {
                    Token        = new JwtSecurityTokenHandler().WriteToken(_tokenManager.CreateJWTToken(user.Claims)),
                    RefreshToken = refreshToken.Token,
                    ExpireAt     = refreshToken.ExpireTimestamp
                };
                return(Task.FromResult(authResult));
            }
            else
            {
                return(Task.FromResult((AuthResult)null));
            }
        }
 public Task <AuthResult> Handle(RefreshTokenCommand request, CancellationToken cancellationToken)
 {
     if (!_tokenManager.ValidateToken(request.AuthResult.Token, out var userId_przedsiebiorstwoId))
     {
         return(Task.FromResult((AuthResult)null));
     }
     if (_tokenStore.ValidateToken(userId_przedsiebiorstwoId.Item1.Value, request.AuthResult.RefreshToken))
     {
         var refreshToken = _tokenStore.GetRefreshToken(userId_przedsiebiorstwoId.Item1.Value);
         var user         = _userRepository.GetUser(new IdSpecification <User, Guid>(userId_przedsiebiorstwoId.Item1.Value), userId_przedsiebiorstwoId.Item2.Value);
         var authResult   = new AuthResult
         {
             Token        = new JwtSecurityTokenHandler().WriteToken(_tokenManager.CreateJWTToken(user.Claims)),
             RefreshToken = refreshToken.Token,
             ExpireAt     = refreshToken.ExpireTimestamp
         };
         return(Task.FromResult(authResult));
     }
     else
     {
         return(Task.FromResult((AuthResult)null));
     }
 }