
com.manywho.sdk.services.controllers.AbstractOauth2Controller Maven / Gradle / Ivy
package com.manywho.sdk.services.controllers;
import com.manywho.sdk.entities.UserObject;
import com.manywho.sdk.entities.run.elements.type.ObjectDataRequest;
import com.manywho.sdk.entities.run.elements.type.ObjectDataResponse;
import com.manywho.sdk.enums.AuthorizationType;
import com.manywho.sdk.services.annotations.AuthorizationRequired;
import com.manywho.sdk.services.oauth.AbstractOauth2Provider;
import org.scribe.builder.ServiceBuilder;
import org.scribe.oauth.OAuthService;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
public abstract class AbstractOauth2Controller extends AbstractOauthController {
protected AbstractOauth2Provider oauth2Provider;
public AbstractOauth2Controller(AbstractOauth2Provider oauth2Provider) {
this.oauth2Provider = oauth2Provider;
}
public AbstractOauth2Provider getOauth2Provider() {
return oauth2Provider;
}
public OAuthService getOauthService() {
return new ServiceBuilder()
.provider(oauth2Provider)
.callback(oauth2Provider.getRedirectUri())
.apiKey(oauth2Provider.getClientId())
.apiSecret(oauth2Provider.getClientSecret())
.build();
}
@Path("/authorization")
@POST
@AuthorizationRequired
public ObjectDataResponse authorization(ObjectDataRequest objectDataRequest) throws Exception {
String authorizationStatus = getAuthStatus(objectDataRequest);
return new ObjectDataResponse(
new UserObject(this.getOauth2Provider().getName(), AuthorizationType.Oauth2, getOauthService().getAuthorizationUrl(null), authorizationStatus)
);
}
protected String getAuthStatus(ObjectDataRequest objectDataRequest) throws Exception {
switch (objectDataRequest.getAuthorization().getGlobalAuthenticationType()) {
case Public:
return "200";
case AllUsers:
// @todo Not really sure how to get the user from Box for an ID
if (!this.getAuthenticatedWho().getUserId().equalsIgnoreCase("PUBLIC_USER")) {
return "200";
}else {
return "401";
}
case Specified:
default:
return "401";
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy