Documentation
¶
Overview ¶
contract.go: Wires the magiclink plugin into the forge-dashboard contract surface via plugin.ContractContributor.
Package magiclink provides passwordless magic link authentication for AuthSome.
The magic link plugin allows users to sign in by clicking a one-time link sent to their email. It uses the core verification entity (type="magic_link") for token storage, so no additional database tables are required.
Usage:
mailer := &MyMailer{} // implements magiclink.Mailer
eng, _ := authsome.NewEngine(
authsome.WithStore(store),
authsome.WithPlugin(magiclink.New(magiclink.Config{
Mailer: mailer,
})),
)
Index ¶
- Constants
- Variables
- type Config
- type Mailer
- type MailerFunc
- type Plugin
- func (p *Plugin) DeclareSettings(m *settings.Manager) error
- func (p *Plugin) Name() string
- func (p *Plugin) OnInit(_ context.Context, engine plugin.Engine) error
- func (p *Plugin) RegisterContract(d *dispatcher.Dispatcher, reg contract.Registry, wreg contract.WardenRegistry, ...) error
- func (p *Plugin) RegisterRoutes(router forge.Router) error
- func (p *Plugin) SetAppID(appID string)
- func (p *Plugin) SetStore(s store.Store)
- type SendRequest
- type SendResponse
- type VerifyRequest
- type VerifyResponse
Constants ¶
const VerificationTypeMagicLink account.VerificationType = "magic_link"
VerificationTypeMagicLink is the verification type used for magic link tokens.
Variables ¶
var ( // SettingTokenTTLSeconds controls the magic link token lifetime in seconds. SettingTokenTTLSeconds = settings.Define("magiclink.token_ttl_seconds", 600, settings.WithDisplayName("Token TTL (seconds)"), settings.WithDescription("Lifetime of magic link tokens in seconds"), settings.WithCategory("Magic Link"), settings.WithScopes(settings.ScopeGlobal, settings.ScopeApp), settings.WithInputType(formconfig.FieldNumber), settings.WithUIValidation(formconfig.Validation{Required: true, Min: intPtr(60), Max: intPtr(3600)}), settings.WithHelpText("How long magic link tokens remain valid. Default: 600 (10 minutes)"), settings.WithOrder(10), ) // SettingSessionTokenTTLSeconds controls the session token lifetime for magic link sessions. SettingSessionTokenTTLSeconds = settings.Define("magiclink.session_token_ttl_seconds", 3600, settings.WithDisplayName("Session Token TTL (seconds)"), settings.WithDescription("Lifetime of sessions created via magic link in seconds"), settings.WithCategory("Magic Link"), settings.WithScopes(settings.ScopeGlobal, settings.ScopeApp), settings.WithInputType(formconfig.FieldNumber), settings.WithUIValidation(formconfig.Validation{Required: true, Min: intPtr(300), Max: intPtr(86400)}), settings.WithHelpText("How long sessions created via magic link remain valid. Default: 3600 (1 hour)"), settings.WithOrder(20), ) // SettingSessionRefreshTTLSeconds controls the refresh token lifetime for magic link sessions. SettingSessionRefreshTTLSeconds = settings.Define("magiclink.session_refresh_ttl_seconds", 2592000, settings.WithDisplayName("Refresh Token TTL (seconds)"), settings.WithDescription("Lifetime of refresh tokens for magic link sessions in seconds"), settings.WithCategory("Magic Link"), settings.WithScopes(settings.ScopeGlobal, settings.ScopeApp), settings.WithInputType(formconfig.FieldNumber), settings.WithUIValidation(formconfig.Validation{Required: true, Min: intPtr(3600), Max: intPtr(7776000)}), settings.WithHelpText("How long refresh tokens remain valid. Default: 2592000 (30 days)"), settings.WithOrder(30), ) )
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// Mailer sends magic link emails. Required.
Mailer Mailer
// TokenTTL is the lifetime of magic link tokens (default: 10 minutes).
TokenTTL time.Duration
// SessionTokenTTL is the lifetime of sessions created via magic link (default: 1 hour).
SessionTokenTTL time.Duration
// SessionRefreshTTL is the lifetime of refresh tokens for magic link sessions (default: 30 days).
SessionRefreshTTL time.Duration
}
Config configures the magic link plugin.
type MailerFunc ¶ added in v1.9.0
MailerFunc is an adapter to use a plain function as a Mailer.
func (MailerFunc) SendMagicLink ¶ added in v1.9.0
func (f MailerFunc) SendMagicLink(ctx context.Context, email, token string) error
SendMagicLink implements Mailer.
type Plugin ¶
type Plugin struct {
// contains filtered or unexported fields
}
Plugin is the magic link authentication plugin.
func (*Plugin) DeclareSettings ¶ added in v1.9.0
DeclareSettings implements plugin.SettingsProvider.
func (*Plugin) RegisterContract ¶ added in v1.9.0
func (p *Plugin) RegisterContract( d *dispatcher.Dispatcher, reg contract.Registry, wreg contract.WardenRegistry, engine plugin.Engine, ) error
func (*Plugin) RegisterRoutes ¶
RegisterRoutes registers magic link HTTP endpoints on a forge.Router.
type SendRequest ¶
SendRequest is the request body for sending a magic link.
type SendResponse ¶
type SendResponse struct {
Status string `json:"status"`
}
SendResponse is returned when a magic link is sent.
type VerifyRequest ¶ added in v1.9.0
VerifyRequest is the request body for verifying a magic link.