Documentation
¶
Overview ¶
Package auth holds the provider table and account auto-detection.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrOAuthNotConfigured: the provider has no OAuth client ID in this build. ErrOAuthNotConfigured = errors.New("oauth: no client ID is configured for this provider") // ErrFlowExpired: the user did not finish signing in within FlowTimeout. ErrFlowExpired = errors.New("oauth: sign-in timed out") // ErrInvalidGrant: the token endpoint answered invalid_grant (revoked, expired or used). ErrInvalidGrant = errors.New("oauth: the authorization is no longer valid") )
var ErrAccessDenied = errors.New("oauth: access was denied at the provider")
ErrAccessDenied: the user declined at the provider.
var FlowTimeout = 10 * time.Minute
FlowTimeout bounds an authorization flow from StartFlow to the callback.
var MicrosoftClientID = "13d71f3b-e47d-4cf4-a28d-25f01bae45d4"
MicrosoftClientID is Godwit's public client in Microsoft Entra (no secret; PKCE with a loopback redirect). It is read when the outlook provider is built.
Functions ¶
Types ¶
type Flow ¶
type Flow struct {
// contains filtered or unexported fields
}
Flow is one authorization-code flow with PKCE, waiting for the browser on a loopback listener.
func StartFlow ¶
StartFlow listens on 127.0.0.1 for the redirect and builds the authorization URL. The listener closes when the flow ends: callback handled, Wait's ctx done, FlowTimeout passed or Close.
type Grant ¶
Grant is the outcome of an authorization or a refresh. Secrets: never log it. Expiry is never zero: without expires_in it is 30 minutes after receipt.
type OAuthConfig ¶
OAuthConfig describes a provider's OAuth 2.0 endpoints (flow lives elsewhere).
type Provider ¶
type Provider struct {
ID, Name string
Domains []string
IMAP, SMTP Server
Login string // app_password | authorization_code | client_password | password | oauth
HelpURL string
OAuth *OAuthConfig
}
func ListProviders ¶
func ListProviders() []Provider
ListProviders returns the known providers in display order (no "other").