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 }); }
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 }); }
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 }); }