sessionize-auth
Version:
A flexible session management library for React, Next.js, Angular, and React Native
58 lines (48 loc) • 1.35 kB
text/typescript
import { BaseSSOProvider } from "./base";
import { SSOUser } from "../types";
/**
* GitHub OAuth 2.0 Provider
*/
export class GitHubSSOProvider extends BaseSSOProvider {
protected getProviderName(): string {
return 'GitHub';
}
protected getProviderIcon(): string {
return 'https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png';
}
protected getProviderColor(): string {
return '#333333';
}
protected getScopes(): string[] {
return this.config.scopes || [
'user:email',
'read:user'
];
}
protected getAuthUrl(): string {
return 'https://github.com/login/oauth/authorize';
}
protected getTokenUrl(): string {
return 'https://github.com/login/oauth/access_token';
}
protected getUserInfoUrl(): string {
return 'https://api.github.com/user';
}
protected parseUserInfo(data: any, accessToken: string): SSOUser {
return {
id: data.id.toString(),
email: data.email,
name: data.name || data.login,
avatar: data.avatar_url,
provider: 'github',
providerId: data.id.toString(),
accessToken: accessToken
};
}
protected getCustomParams(): Record<string, string> {
return {
allow_signup: 'true',
...this.config.customParams
};
}
}