argos/dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/TokenValidatorFactoryImpl.java

83 lines
3.3 KiB
Java
Raw Normal View History

2018-06-27 12:29:21 +02:00
package eu.eudat.logic.security.validators;
2018-01-09 12:31:01 +01:00
2018-08-30 13:09:36 +02:00
import eu.eudat.logic.security.customproviders.B2AccessCustomProvider;
2018-06-27 12:29:21 +02:00
import eu.eudat.logic.security.validators.b2access.B2AccessTokenValidator;
import eu.eudat.logic.security.validators.facebook.FacebookTokenValidator;
import eu.eudat.logic.security.validators.google.GoogleTokenValidator;
import eu.eudat.logic.security.validators.linkedin.LinkedInTokenValidator;
import eu.eudat.logic.security.validators.twitter.TwitterTokenValidator;
2018-08-30 13:09:36 +02:00
import eu.eudat.logic.services.ApiContext;
import eu.eudat.logic.services.operations.AuthenticationService;
import eu.eudat.logic.services.operations.AuthenticationServiceImpl;
2018-01-09 12:31:01 +01:00
import org.springframework.beans.factory.annotation.Autowired;
2018-08-30 13:09:36 +02:00
import org.springframework.core.env.Environment;
2018-01-09 12:31:01 +01:00
import org.springframework.stereotype.Service;
2018-02-01 10:08:06 +01:00
2018-01-09 12:31:01 +01:00
@Service("tokenValidatorFactory")
2018-02-16 11:34:02 +01:00
public class TokenValidatorFactoryImpl implements TokenValidatorFactory {
2018-01-09 12:31:01 +01:00
public enum LoginProvider {
2018-03-21 11:57:56 +01:00
GOOGLE(1), FACEBOOK(2), TWITTER(3), LINKEDIN(4), NATIVELOGIN(5), B2_ACCESS(6);
2018-01-09 12:31:01 +01:00
2018-03-21 11:57:56 +01:00
private int value;
2018-01-09 12:31:01 +01:00
2018-03-21 11:57:56 +01:00
private LoginProvider(int value) {
2018-01-09 12:31:01 +01:00
this.value = value;
}
2018-03-21 11:57:56 +01:00
public int getValue() {
2018-01-09 12:31:01 +01:00
return value;
}
public static LoginProvider fromInteger(int value) {
switch (value) {
case 1:
return GOOGLE;
case 2:
return FACEBOOK;
case 3:
return TWITTER;
case 4:
return LINKEDIN;
2018-01-31 16:39:16 +01:00
case 5:
return NATIVELOGIN;
2018-02-23 11:36:51 +01:00
case 6:
return B2_ACCESS;
2018-01-09 12:31:01 +01:00
default:
throw new RuntimeException("Unsupported LoginProvider");
}
}
}
2018-08-30 13:09:36 +02:00
private ApiContext apiContext;
private Environment environment;
private AuthenticationServiceImpl authenticationService;
private B2AccessCustomProvider b2AccessCustomProvider;
2018-02-16 11:34:02 +01:00
2018-01-09 12:31:01 +01:00
@Autowired
2018-08-30 13:09:36 +02:00
public TokenValidatorFactoryImpl(ApiContext apiContext, Environment environment, AuthenticationServiceImpl authenticationService, B2AccessCustomProvider b2AccessCustomProvider) {
this.apiContext = apiContext;
this.environment = environment;
this.authenticationService = authenticationService;
this.b2AccessCustomProvider = b2AccessCustomProvider;
2018-01-09 12:31:01 +01:00
}
public TokenValidator getProvider(LoginProvider provider) {
switch (provider) {
case GOOGLE:
2018-08-30 13:09:36 +02:00
return new GoogleTokenValidator(this.apiContext, this.environment, this.authenticationService);
2018-01-09 12:31:01 +01:00
case FACEBOOK:
2018-08-30 13:09:36 +02:00
return new FacebookTokenValidator(this.apiContext, this.environment, this.authenticationService);
2018-01-10 17:05:23 +01:00
case LINKEDIN:
2018-08-30 13:09:36 +02:00
return new LinkedInTokenValidator(this.apiContext, this.environment, this.authenticationService);
2018-01-11 12:13:01 +01:00
case TWITTER:
2018-08-30 13:09:36 +02:00
return new TwitterTokenValidator(this.apiContext, this.environment, this.authenticationService);
2018-02-23 11:36:51 +01:00
case B2_ACCESS:
2018-08-30 13:09:36 +02:00
return new B2AccessTokenValidator(this.environment, this.authenticationService, this.b2AccessCustomProvider);
2018-01-09 12:31:01 +01:00
default:
throw new RuntimeException("Login Provider Not Implemented");
}
}
}