server: build OIDC client at startup; sweep oidc_state on alert tick
This commit is contained in:
@@ -19,6 +19,7 @@ import (
|
|||||||
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/config"
|
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/config"
|
||||||
rmhttp "gitea.dcglab.co.uk/steve/restic-manager/internal/server/http"
|
rmhttp "gitea.dcglab.co.uk/steve/restic-manager/internal/server/http"
|
||||||
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/maintenance"
|
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/maintenance"
|
||||||
|
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/oidc"
|
||||||
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/ui"
|
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/ui"
|
||||||
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/ws"
|
"gitea.dcglab.co.uk/steve/restic-manager/internal/server/ws"
|
||||||
"gitea.dcglab.co.uk/steve/restic-manager/internal/store"
|
"gitea.dcglab.co.uk/steve/restic-manager/internal/store"
|
||||||
@@ -92,6 +93,17 @@ func run() error {
|
|||||||
return fmt.Errorf("ui: %w", err)
|
return fmt.Errorf("ui: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var oidcClient *oidc.Client
|
||||||
|
if cfg.OIDC != nil {
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
oidcClient, err = oidc.New(ctx, cfg.OIDC, cfg.BaseURL)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("oidc: %w", err)
|
||||||
|
}
|
||||||
|
slog.Info("oidc enabled", "issuer", cfg.OIDC.Issuer, "display", cfg.OIDC.DisplayName)
|
||||||
|
}
|
||||||
|
|
||||||
deps := rmhttp.Deps{
|
deps := rmhttp.Deps{
|
||||||
Cfg: cfg,
|
Cfg: cfg,
|
||||||
Store: st,
|
Store: st,
|
||||||
@@ -102,6 +114,7 @@ func run() error {
|
|||||||
NotificationHub: notifHub,
|
NotificationHub: notifHub,
|
||||||
UI: renderer,
|
UI: renderer,
|
||||||
Version: version,
|
Version: version,
|
||||||
|
OIDC: oidcClient,
|
||||||
}
|
}
|
||||||
|
|
||||||
// First-run bootstrap: if the users table is empty, mint a one-time
|
// First-run bootstrap: if the users table is empty, mint a one-time
|
||||||
|
|||||||
@@ -193,6 +193,9 @@ func (e *Engine) tick(ctx context.Context, now time.Time) {
|
|||||||
if _, err := e.store.CleanupExpiredSetupTokens(ctx, now); err != nil {
|
if _, err := e.store.CleanupExpiredSetupTokens(ctx, now); err != nil {
|
||||||
slog.Warn("alert: cleanup expired setup tokens", "err", err)
|
slog.Warn("alert: cleanup expired setup tokens", "err", err)
|
||||||
}
|
}
|
||||||
|
if _, err := e.store.CleanupExpiredOIDCState(ctx, now.Add(-5*time.Minute)); err != nil {
|
||||||
|
slog.Warn("alert: cleanup expired oidc state", "err", err)
|
||||||
|
}
|
||||||
|
|
||||||
hosts, err := e.store.ListHosts(ctx)
|
hosts, err := e.store.ListHosts(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user