Documentation
¶
Index ¶
- func FetchJSON(ctx context.Context, client *http.Client, url string, v interface{}) error
- func GenerateAppleClientSecret(teamID, clientID, keyID string, privateKey *rsa.PrivateKey) (string, error)
- func PostForm(ctx context.Context, client *http.Client, url string, data url.Values, ...) error
- type AppleProvider
- type BaseProvider
- type BitbucketProvider
- type DiscordProvider
- type DropboxProvider
- type FacebookProvider
- type GitHubProvider
- type GitLabProvider
- type GoogleProvider
- type LINEProvider
- type LinkedInProvider
- type MicrosoftProvider
- type NotionProvider
- type Provider
- type ProviderConfig
- type RedditProvider
- type SlackProvider
- type SpotifyProvider
- type TokenResponse
- type TwitchProvider
- type TwitterProvider
- type UserInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GenerateAppleClientSecret ¶
func GenerateAppleClientSecret(teamID, clientID, keyID string, privateKey *rsa.PrivateKey) (string, error)
GenerateClientSecret generates a client secret JWT for Apple Required for Apple's OAuth flow
Types ¶
type AppleProvider ¶
type AppleProvider struct {
*BaseProvider
// contains filtered or unexported fields
}
AppleProvider implements Sign in with Apple
func NewAppleProvider ¶
func NewAppleProvider(config ProviderConfig) *AppleProvider
NewAppleProvider creates a new Apple OAuth provider
func (*AppleProvider) GetUserInfo ¶
GetUserInfo extracts user information from Apple's ID token
type BaseProvider ¶
type BaseProvider struct {
// contains filtered or unexported fields
}
BaseProvider provides common OAuth2 functionality
func NewBaseProvider ¶
func NewBaseProvider(id, name, authURL, tokenURL, userInfoURL, clientID, clientSecret, redirectURL string, scopes []string) *BaseProvider
NewBaseProvider creates a new base provider
func (*BaseProvider) GetOAuth2Config ¶
func (bp *BaseProvider) GetOAuth2Config() *oauth2.Config
func (*BaseProvider) GetScopes ¶
func (bp *BaseProvider) GetScopes() []string
func (*BaseProvider) ID ¶
func (bp *BaseProvider) ID() string
func (*BaseProvider) Name ¶
func (bp *BaseProvider) Name() string
type BitbucketProvider ¶
type BitbucketProvider struct {
*BaseProvider
}
BitbucketProvider implements OAuth for Bitbucket
func NewBitbucketProvider ¶
func NewBitbucketProvider(config ProviderConfig) *BitbucketProvider
NewBitbucketProvider creates a new Bitbucket OAuth provider
func (*BitbucketProvider) GetUserInfo ¶
func (b *BitbucketProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*UserInfo, error)
GetUserInfo fetches user information from Bitbucket API
type DiscordProvider ¶
type DiscordProvider struct {
*BaseProvider
}
DiscordProvider implements OAuth for Discord
func NewDiscordProvider ¶
func NewDiscordProvider(config ProviderConfig) *DiscordProvider
NewDiscordProvider creates a new Discord OAuth provider
func (*DiscordProvider) GetUserInfo ¶
GetUserInfo fetches user information from Discord API
type DropboxProvider ¶
type DropboxProvider struct {
*BaseProvider
}
DropboxProvider implements OAuth for Dropbox
func NewDropboxProvider ¶
func NewDropboxProvider(config ProviderConfig) *DropboxProvider
NewDropboxProvider creates a new Dropbox OAuth provider
func (*DropboxProvider) GetUserInfo ¶
GetUserInfo fetches user information from Dropbox API
type FacebookProvider ¶
type FacebookProvider struct {
*BaseProvider
}
FacebookProvider implements OAuth for Facebook
func NewFacebookProvider ¶
func NewFacebookProvider(config ProviderConfig) *FacebookProvider
NewFacebookProvider creates a new Facebook OAuth provider
func (*FacebookProvider) GetUserInfo ¶
GetUserInfo fetches user information from Facebook Graph API
type GitHubProvider ¶
type GitHubProvider struct {
*BaseProvider
}
GitHubProvider implements OAuth for GitHub
func NewGitHubProvider ¶
func NewGitHubProvider(config ProviderConfig) *GitHubProvider
NewGitHubProvider creates a new GitHub OAuth provider
func (*GitHubProvider) GetUserInfo ¶
GetUserInfo fetches user information from GitHub
type GitLabProvider ¶
type GitLabProvider struct {
*BaseProvider
}
GitLabProvider implements OAuth for GitLab
func NewGitLabProvider ¶
func NewGitLabProvider(config ProviderConfig) *GitLabProvider
NewGitLabProvider creates a new GitLab OAuth provider
func (*GitLabProvider) GetUserInfo ¶
GetUserInfo fetches user information from GitLab API
type GoogleProvider ¶
type GoogleProvider struct {
*BaseProvider
// contains filtered or unexported fields
}
GoogleProvider implements OAuth for Google
func NewGoogleProvider ¶
func NewGoogleProvider(config ProviderConfig) *GoogleProvider
NewGoogleProvider creates a new Google OAuth provider
func (*GoogleProvider) GetAuthURL ¶
func (g *GoogleProvider) GetAuthURL(state string) string
GetAuthURL returns the authorization URL with Google-specific parameters
func (*GoogleProvider) GetOAuth2Config ¶
func (g *GoogleProvider) GetOAuth2Config() *oauth2.Config
GetOAuth2Config overrides to add Google-specific options
func (*GoogleProvider) GetUserInfo ¶
GetUserInfo fetches user information from Google
type LINEProvider ¶
type LINEProvider struct {
*BaseProvider
}
LINEProvider implements OAuth for LINE
func NewLINEProvider ¶
func NewLINEProvider(config ProviderConfig) *LINEProvider
NewLINEProvider creates a new LINE OAuth provider
func (*LINEProvider) GetUserInfo ¶
GetUserInfo fetches user information from LINE API
type LinkedInProvider ¶
type LinkedInProvider struct {
*BaseProvider
}
LinkedInProvider implements OAuth for LinkedIn
func NewLinkedInProvider ¶
func NewLinkedInProvider(config ProviderConfig) *LinkedInProvider
NewLinkedInProvider creates a new LinkedIn OAuth provider
func (*LinkedInProvider) GetUserInfo ¶
GetUserInfo fetches user information from LinkedIn API
type MicrosoftProvider ¶
type MicrosoftProvider struct {
*BaseProvider
}
MicrosoftProvider implements OAuth for Microsoft
func NewMicrosoftProvider ¶
func NewMicrosoftProvider(config ProviderConfig) *MicrosoftProvider
NewMicrosoftProvider creates a new Microsoft OAuth provider
func (*MicrosoftProvider) GetUserInfo ¶
func (m *MicrosoftProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*UserInfo, error)
GetUserInfo fetches user information from Microsoft Graph API
type NotionProvider ¶
type NotionProvider struct {
*BaseProvider
}
NotionProvider implements OAuth for Notion
func NewNotionProvider ¶
func NewNotionProvider(config ProviderConfig) *NotionProvider
NewNotionProvider creates a new Notion OAuth provider
func (*NotionProvider) GetUserInfo ¶
GetUserInfo fetches user information from Notion API
type Provider ¶
type Provider interface {
// ID returns the provider identifier (e.g., "google", "github")
ID() string
// Name returns the human-readable provider name
Name() string
// GetOAuth2Config returns the OAuth2 configuration
GetOAuth2Config() *oauth2.Config
// GetUserInfo fetches user information from the provider
GetUserInfo(ctx context.Context, token *oauth2.Token) (*UserInfo, error)
// GetScopes returns the default scopes for this provider
GetScopes() []string
}
Provider defines the interface for OAuth providers
type ProviderConfig ¶
type ProviderConfig struct {
ClientID string `json:"clientId" yaml:"clientId"`
ClientSecret string `json:"clientSecret" yaml:"clientSecret"`
RedirectURL string `json:"redirectUrl" yaml:"redirectUrl"`
CallbackURL string `json:"callbackUrl" yaml:"callbackUrl"`
Scopes []string `json:"scopes" yaml:"scopes"`
Enabled bool `json:"enabled" yaml:"enabled"`
// Advanced options (provider-specific)
AccessType string `json:"accessType" yaml:"accessType"` // For Google: "offline" for refresh tokens
Prompt string `json:"prompt" yaml:"prompt"` // For Google: "select_account consent"
}
ProviderConfig holds configuration for a social provider
type RedditProvider ¶
type RedditProvider struct {
*BaseProvider
}
RedditProvider implements OAuth for Reddit
func NewRedditProvider ¶
func NewRedditProvider(config ProviderConfig) *RedditProvider
NewRedditProvider creates a new Reddit OAuth provider
func (*RedditProvider) GetUserInfo ¶
GetUserInfo fetches user information from Reddit API
type SlackProvider ¶
type SlackProvider struct {
*BaseProvider
}
SlackProvider implements OAuth for Slack
func NewSlackProvider ¶
func NewSlackProvider(config ProviderConfig) *SlackProvider
NewSlackProvider creates a new Slack OAuth provider
func (*SlackProvider) GetUserInfo ¶
GetUserInfo fetches user information from Slack API
type SpotifyProvider ¶
type SpotifyProvider struct {
*BaseProvider
}
SpotifyProvider implements OAuth for Spotify
func NewSpotifyProvider ¶
func NewSpotifyProvider(config ProviderConfig) *SpotifyProvider
NewSpotifyProvider creates a new Spotify OAuth provider
func (*SpotifyProvider) GetUserInfo ¶
GetUserInfo fetches user information from Spotify API
type TokenResponse ¶
type TokenResponse struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token,omitempty"`
TokenType string `json:"token_type"`
ExpiresIn int `json:"expires_in,omitempty"`
Scope string `json:"scope,omitempty"`
IDToken string `json:"id_token,omitempty"` // For OIDC providers
ExpiresAt time.Time `json:"-"` // Calculated expiration time
}
TokenResponse represents a standardized OAuth token response
func (*TokenResponse) CalculateExpiration ¶
func (tr *TokenResponse) CalculateExpiration()
CalculateExpiration calculates the token expiration time
type TwitchProvider ¶
type TwitchProvider struct {
*BaseProvider
}
TwitchProvider implements OAuth for Twitch
func NewTwitchProvider ¶
func NewTwitchProvider(config ProviderConfig) *TwitchProvider
NewTwitchProvider creates a new Twitch OAuth provider
func (*TwitchProvider) GetUserInfo ¶
GetUserInfo fetches user information from Twitch API
type TwitterProvider ¶
type TwitterProvider struct {
*BaseProvider
}
TwitterProvider implements OAuth 2.0 for Twitter (X)
func NewTwitterProvider ¶
func NewTwitterProvider(config ProviderConfig) *TwitterProvider
NewTwitterProvider creates a new Twitter OAuth provider
func (*TwitterProvider) GetUserInfo ¶
GetUserInfo fetches user information from Twitter API v2
type UserInfo ¶
type UserInfo struct {
ID string // Provider's user ID
Email string // User email
EmailVerified bool // Whether email is verified
Name string // Full name
FirstName string // First name
LastName string // Last name
Avatar string // Profile picture URL
Username string // Username (if available)
Raw map[string]interface{} // Raw provider response
}
UserInfo represents standardized user information from OAuth providers