package eu.eudat.security.validators.b2access; import eu.eudat.exceptions.security.NonValidTokenException; import eu.eudat.models.login.LoginInfo; import eu.eudat.models.loginprovider.LoginProviderUser; import eu.eudat.models.security.Principal; import eu.eudat.security.customproviders.B2AccessCustomProvider; import eu.eudat.security.customproviders.B2AccessUser; import eu.eudat.security.validators.TokenValidator; import eu.eudat.security.validators.b2access.helpers.B2AccessRequest; import eu.eudat.security.validators.b2access.helpers.B2AccessResponseToken; import eu.eudat.services.operations.AuthenticationServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import java.io.IOException; import java.security.GeneralSecurityException; /** * Created by ikalyvas on 2/22/2018. */ @Component("b2AccessTokenValidator ") public class B2AccessTokenValidator implements TokenValidator { private B2AccessCustomProvider b2AccessCustomProvider; private AuthenticationServiceImpl authenticationServiceImpl; private Environment environment; @Autowired public B2AccessTokenValidator(AuthenticationServiceImpl authenticationServiceImpl, Environment environment, B2AccessCustomProvider b2AccessCustomProvider) { this.authenticationServiceImpl = authenticationServiceImpl; this.environment = environment; this.b2AccessCustomProvider = b2AccessCustomProvider; } @Override public Principal validateToken(LoginInfo credentials) throws NonValidTokenException, IOException, GeneralSecurityException { B2AccessUser b2AccessUser = this.b2AccessCustomProvider.getUser(credentials.getTicket()); LoginProviderUser user = new LoginProviderUser(); user.setId(b2AccessUser.getId()); user.setEmail(b2AccessUser.getEmail()); user.setName(b2AccessUser.getName()); user.setProvider(credentials.getProvider()); user.setSecret(credentials.getTicket()); return this.authenticationServiceImpl.Touch(user); } public B2AccessResponseToken getAccessToken(B2AccessRequest b2AccessRequest) { return this.b2AccessCustomProvider.getAccessToken(b2AccessRequest.getCode(), this.environment.getProperty("b2access.externallogin.redirect_uri") , this.environment.getProperty("b2access.externallogin.clientid") , this.environment.getProperty("b2access.externallogin.clientSecret")); } }