package eu.eudat.security; import eu.eudat.exceptions.security.NonValidTokenException; import eu.eudat.exceptions.security.UnauthorisedException; import eu.eudat.models.login.LoginInfo; import eu.eudat.models.security.Principal; import eu.eudat.security.validators.TokenValidatorFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; import java.security.GeneralSecurityException; @Component public class CustomAuthenticationProvider { @Autowired private TokenValidatorFactory tokenValidatorFactory; public Principal authenticate(LoginInfo credentials) throws GeneralSecurityException { String token = credentials.getTicket(); try { Principal principal = this.tokenValidatorFactory.getProvider(credentials.getProvider()).validateToken(credentials); return principal; } catch (NonValidTokenException e) { e.printStackTrace(); System.out.println("Could not validate a user by his token! Reason: " + e.getMessage()); throw new UnauthorisedException("Token validation failed - Not a valid token"); } catch (IOException e) { e.printStackTrace(); throw new UnauthorisedException("IO Exeption"); } } }