diff options
| author | Chia <Chia@93.nz> | 2026-08-05 14:48:00 +1200 |
|---|---|---|
| committer | Chia <Chia@93.nz> | 2026-08-05 14:48:00 +1200 |
| commit | cd0dd91ab93653631904f2ea0e574ccde6d60339 (patch) | |
| tree | c65417b880a3f4a35c504c44edae821bc2122f70 /cmd | |
| parent | 86b1f42e3c5601ff10621a9779cf0076590797a1 (diff) | |
add passkey, totp.
Diffstat (limited to '')
| -rw-r--r-- | cmd/aigw/main.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/cmd/aigw/main.go b/cmd/aigw/main.go index 44a22d0..c7d9ed3 100644 --- a/cmd/aigw/main.go +++ b/cmd/aigw/main.go @@ -20,9 +20,12 @@ import ( "aigw/internal/controlplane" "aigw/internal/httpapi" "aigw/internal/limits" + "aigw/internal/mailer" "aigw/internal/provider" "aigw/internal/routing" "aigw/internal/telemetry" + + "github.com/go-webauthn/webauthn/webauthn" ) func main() { @@ -60,6 +63,7 @@ func run(ctx context.Context, cfg config.Config, logger *slog.Logger) error { var managerCancel context.CancelFunc var managerDone chan struct{} var requestLimiter *limits.Limiter + var webAuthn *webauthn.WebAuthn if cfg.ControlPlane.Enabled { var err error store, err = controlplane.NewStore(ctx, controlplane.Options{ @@ -108,6 +112,33 @@ func run(ctx context.Context, cfg config.Config, logger *slog.Logger) error { } modelCatalog = catalog.New(cfg) } + if cfg.Admin.Enabled && cfg.Admin.WebAuthn.Enabled { + configured, err := webauthn.New(&webauthn.Config{ + RPDisplayName: cfg.Admin.WebAuthn.RPDisplayName, + RPID: cfg.Admin.WebAuthn.RPID, + RPOrigins: cfg.Admin.WebAuthn.Origins, + EncodeUserIDAsString: true, + Timeouts: webauthn.TimeoutsConfig{ + Login: webauthn.TimeoutConfig{Enforce: true}, + Registration: webauthn.TimeoutConfig{Enforce: true}, + }, + }) + if err != nil { + return fmt.Errorf("configure WebAuthn: %w", err) + } + webAuthn = configured + } + if cfg.Admin.Enabled && cfg.Admin.Mail.Enabled { + sender, err := mailer.NewSender(mailer.SMTPConfig{ + Address: cfg.Admin.Mail.SMTPAddress, Username: cfg.Admin.Mail.SMTPUsername, + Password: cfg.Admin.Mail.SMTPPassword, FromName: cfg.Admin.Mail.FromName, + FromAddress: cfg.Admin.Mail.FromAddress, TLSMode: cfg.Admin.Mail.TLSMode, + }) + if err != nil { + return fmt.Errorf("configure SMTP: %w", err) + } + go mailer.NewWorker(store, sender, logger).Run(ctx) + } var billingService *billing.Service if cfg.Billing.Enabled { @@ -151,6 +182,7 @@ func run(ctx context.Context, cfg config.Config, logger *slog.Logger) error { Store: store, Manager: manager, Billing: billingService, Token: cfg.Admin.Token, Logger: logger, Prefix: cfg.Admin.BasePath, RegistrationEnabled: cfg.Admin.RegistrationEnabled, SessionTTL: time.Duration(cfg.Admin.SessionTTLHours) * time.Hour, Currency: cfg.Billing.Currency, + PublicURL: cfg.Admin.PublicURL, WebAuthn: webAuthn, MailEnabled: cfg.Admin.Mail.Enabled, }).Handler() root.Handle(cfg.Admin.BasePath, adminHandler) root.Handle(cfg.Admin.BasePath+"/", adminHandler) |
