services

package
v2.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 6, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeriveOAuthHMACKey

func DeriveOAuthHMACKey(appSecret string) []byte

DeriveOAuthHMACKey derives an HMAC key from the app secret for OAuth2 operations

func FetchUserInfo

func FetchUserInfo(ctx context.Context, token *oauth2.Token, url string) (map[string]interface{}, error)

FetchUserInfo is a helper to fetch and parse user info

func GeneratePKCEChallenge

func GeneratePKCEChallenge() (verifier string, challenge string, err error)

GeneratePKCEChallenge generates PKCE code_verifier and code_challenge

func GenerateRandomString

func GenerateRandomString(length int) (string, error)

GenerateRandomString generates a cryptographically secure random string

func GetStringField

func GetStringField(data map[string]interface{}, field string) string

GetStringField safely gets a string field from a map

func SignCookie

func SignCookie(payload string, secret []byte) (string, error)

SignCookie creates a signed cookie value with format: payload.timestamp.signature

func ValidateCookie

func ValidateCookie(signed string, secret []byte, maxAge time.Duration) (string, error)

ValidateCookie validates a signed cookie and returns the payload

func ValidateRedirectTo

func ValidateRedirectTo(redirectTo string, trustedOrigins []string) error

ValidateRedirectTo validates a redirect URL against trusted origins

func VerifyHMAC

func VerifyHMAC(signature, data string, secret []byte) bool

VerifyHMAC verifies an HMAC signature

Types

type BaseProvider

type BaseProvider struct {
	// contains filtered or unexported fields
}

BaseProvider provides common functionality for OAuth2 providers

func NewBaseProvider

func NewBaseProvider(name string, config *oauth2.Config) *BaseProvider

NewBaseProvider creates a new base provider

func (*BaseProvider) Exchange

func (p *BaseProvider) Exchange(ctx context.Context, code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)

Exchange exchanges the authorization code for a token

func (*BaseProvider) GetAuthURL

func (p *BaseProvider) GetAuthURL(state string, opts ...oauth2.AuthCodeOption) string

GetAuthURL returns the authorization URL

func (*BaseProvider) GetConfig

func (p *BaseProvider) GetConfig() *oauth2.Config

GetConfig returns the oauth2 config

func (*BaseProvider) Name

func (p *BaseProvider) Name() string

Name returns the provider name

func (*BaseProvider) RequiresPKCE

func (p *BaseProvider) RequiresPKCE() bool

RequiresPKCE returns whether the provider requires PKCE

type DiscordProvider

type DiscordProvider struct {
	*BaseProvider
}

DiscordProvider implements OAuth2Provider for Discord

func NewDiscordProvider

func NewDiscordProvider(clientID, clientSecret, redirectURL string) *DiscordProvider

NewDiscordProvider creates a new Discord OAuth2 provider

func (*DiscordProvider) GetUserInfo

func (p *DiscordProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error)

GetUserInfo fetches and normalizes Discord user information

type GenericProvider

type GenericProvider struct {
	*BaseProvider
	// contains filtered or unexported fields
}

GenericProvider implements OAuth2Provider for custom OIDC/OAuth2 endpoints

func NewGenericProvider

func NewGenericProvider(
	name, clientID, clientSecret, redirectURL,
	authURL, tokenURL, userInfoURL string,
	scopes []string,
	userIDField, emailField, nameField, pictureField string,
) *GenericProvider

NewGenericProvider creates a new generic OAuth2 provider

func (*GenericProvider) GetUserInfo

func (p *GenericProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error)

GetUserInfo fetches and normalizes user information using custom field mapping

type GitHubProvider

type GitHubProvider struct {
	*BaseProvider
}

GitHubProvider implements OAuth2Provider for GitHub

func NewGitHubProvider

func NewGitHubProvider(clientID, clientSecret, redirectURL string) *GitHubProvider

NewGitHubProvider creates a new GitHub OAuth2 provider

func (*GitHubProvider) GetUserInfo

func (p *GitHubProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error)

GetUserInfo fetches and normalizes GitHub user information

func (*GitHubProvider) RequiresPKCE

func (p *GitHubProvider) RequiresPKCE() bool

RequiresPKCE returns false for GitHub (doesn't require PKCE)

type GoogleProvider

type GoogleProvider struct {
	*BaseProvider
}

GoogleProvider implements OAuth2Provider for Google

func NewGoogleProvider

func NewGoogleProvider(clientID, clientSecret, redirectURL string) *GoogleProvider

NewGoogleProvider creates a new Google OAuth2 provider

func (*GoogleProvider) GetUserInfo

func (p *GoogleProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error)

GetUserInfo fetches and normalizes Google user information

type ProviderRegistry

type ProviderRegistry struct {
	// contains filtered or unexported fields
}

ProviderRegistry manages OAuth2 providers

func NewProviderRegistry

func NewProviderRegistry() *ProviderRegistry

NewProviderRegistry creates a new provider registry

func (*ProviderRegistry) Get

Get retrieves a provider by name

func (*ProviderRegistry) GetAll

func (r *ProviderRegistry) GetAll() map[string]types.OAuth2Provider

GetAll returns all registered providers

func (*ProviderRegistry) IsProviderEnabled

func (r *ProviderRegistry) IsProviderEnabled(name string) bool

IsProviderEnabled checks if a provider is registered

func (*ProviderRegistry) Register

func (r *ProviderRegistry) Register(name string, provider types.OAuth2Provider) error

Register registers a provider

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL