package org.pac4j.oauth.client;
import org.pac4j.core.context.WebContext;
import org.pac4j.core.redirect.RedirectAction;
import org.pac4j.core.util.CommonHelper;
import org.pac4j.oauth.profile.paypal.PayPalProfile;
import org.pac4j.oauth.profile.paypal.PayPalProfileDefinition;
import org.pac4j.scribe.builder.api.PayPalApi20;
/**
* <p>This class is the OAuth client to authenticate users in PayPal.</p>
* <p>By default, the following <i>scope</i> is requested to PayPal : openid profile email address.</p>
* <p>The <i>scope</i> can be defined to require permissions from the user and retrieve attributes from PayPal, by using the
* {@link #setScope(String)} method.</p>
* <p>It returns a {@link org.pac4j.oauth.profile.paypal.PayPalProfile}.</p>
* <p>More information at https://developer.paypal.com/webapps/developer/docs/integration/direct/log-in-with-paypal/detailed/</p>
*
* @author Jerome Leleu
* @since 1.4.2
*/
public class PayPalClient extends OAuth20Client<PayPalProfile> {
public final static String DEFAULT_SCOPE = "openid profile email address";
protected String scope = DEFAULT_SCOPE;
public PayPalClient() {
}
public PayPalClient(final String key, final String secret) {
setKey(key);
setSecret(secret);
}
@Override
protected void clientInit(final WebContext context) {
CommonHelper.assertNotBlank("scope", this.scope);
configuration.setApi(new PayPalApi20());
configuration.setProfileDefinition(new PayPalProfileDefinition());
configuration.setScope(this.scope);
configuration.setHasGrantType(true);
configuration.setTokenAsHeader(true);
setConfiguration(configuration);
defaultLogoutActionBuilder((ctx, profile, targetUrl) -> RedirectAction.redirect("https://www.paypal.com/myaccount/logout"));
super.clientInit(context);
}
public String getScope() {
return this.scope;
}
public void setScope(final String scope) {
this.scope = scope;
}
}