package org.pac4j.oauth.client; import com.github.scribejava.apis.GitHubApi; import org.pac4j.core.context.WebContext; import org.pac4j.core.redirect.RedirectAction; import org.pac4j.oauth.profile.github.GitHubProfile; import org.pac4j.oauth.profile.github.GitHubProfileDefinition; /** * <p>This class is the OAuth client to authenticate users in GitHub.</p> * <p>The <i>scope</i> can be defined to require specific permissions from the user by using the {@link #setScope(String)} method. By default, * the <i>scope</i> is: <code>user</code>.</p> * <p>It returns a {@link org.pac4j.oauth.profile.github.GitHubProfile}.</p> * <p>More information at http://developer.github.com/v3/users/</p> * * @author Jerome Leleu * @since 1.0.0 */ public class GitHubClient extends OAuth20Client<GitHubProfile> { public final static String DEFAULT_SCOPE = "user"; protected String scope = DEFAULT_SCOPE; public GitHubClient() { } public GitHubClient(final String key, final String secret) { setKey(key); setSecret(secret); } @Override protected void clientInit(final WebContext context) { configuration.setApi(GitHubApi.instance()); configuration.setProfileDefinition(new GitHubProfileDefinition()); configuration.setScope(this.scope); setConfiguration(configuration); defaultLogoutActionBuilder((ctx, profile, targetUrl) -> RedirectAction.redirect("https://github.com/logout")); super.clientInit(context); } public String getScope() { return this.scope; } public void setScope(final String scope) { this.scope = scope; } }