Exemplo n.º 1
0
        public LoginResponse AuthenticateClient(LoginRequest request)
        {
            var client = GetClientByLogin(request.Login);

            if (client == null)
            {
                throw new Exception("Client with login " + request.Login + " DOESNT EXIST");
            }

            string hashedPassword  = GetHashedPassword(client.IdClient);
            string salt            = GetSalt(client.IdClient);
            bool   isPasswordValid = ValidationHelper.IsPasswordValid(request.Password, hashedPassword, salt);

            if (!isPasswordValid)
            {
                throw new Exception("Incorrect password for client with login " + request.Login);
            }

            var accessToken  = TokensGenerator.GenerateAccessToken(client.IdClient, _configuration);
            var refreshToken = TokensGenerator.GenerateRefreshToken(client.IdClient, accessToken);

            var updatedAccessToken  = UpdateAccessToken(accessToken);
            var updatedRefreshToken = UpdateRefreshToken(refreshToken);

            return(new LoginResponse
            {
                AccessToken = updatedAccessToken,
                RefreshToken = updatedRefreshToken
            });
        }
Exemplo n.º 2
0
        public NewClientResponse AddNewClient(NewClientRequest request)
        {
            if (LoginExists(request.Login))
            {
                throw new Exception("User with login " + request.Login + " already exists");
            }

            var clientId       = GenerateNewClientId();
            var hashSalt       = HashSaltGenerator.GenerateSaltedHash(request.Password);
            var hashedPassword = hashSalt.Hash;
            var salt           = hashSalt.Salt;
            var accessToken    = TokensGenerator.GenerateAccessToken(clientId, _configuration);
            var refreshToken   = TokensGenerator.GenerateRefreshToken(clientId, accessToken);

            SaveClient(request, clientId, hashedPassword, salt);
            var refreshId = GetNewRefreshTokenId();
            var accessId  = GetNewAccessTokenId();

            SaveAccessToken(accessToken, clientId, accessId);
            SaveRefreshToken(refreshToken, clientId, refreshId);
            AssignTokensToClient(clientId, accessToken, refreshToken);

            return(new NewClientResponse
            {
                AccessToken = accessToken.Token,
                RefreshToken = refreshToken.Token
            });
        }
Exemplo n.º 3
0
        public RefreshTokenResponse RefreshToken(RefreshTokenRequest request)
        {
            var client = GetUserByRefreshToken(request.RefreshToken);

            var accessToken        = TokensGenerator.GenerateAccessToken(client.IdClient, _configuration);
            var updatedAccessToken = UpdateAccessToken(accessToken);

            var refreshToken        = TokensGenerator.GenerateRefreshToken(client.IdClient, accessToken);
            var updatedRefreshToken = UpdateRefreshToken(refreshToken);

            return(new RefreshTokenResponse
            {
                AccessToken = updatedAccessToken,
                RefreshToken = updatedRefreshToken
            });
        }