auth: split dev-mode auth constructor and wire up dev-login/logout UI
Squeamish about New()'s empty-domain-string sentinel for "dev mode, skip OIDC discovery" - split into New (always makes a real OIDC discovery call, all params required) and NewDev (no ctx/domain/credentials at all, since none are used). main.go now branches on cfg.DevAuthEnabled to pick the right constructor instead of main.go/config.go coordinating on when it's safe to pass empty strings. Also finishes out the dev-auth flow this enables: config.Load reads a DEV_AUTH_ENABLED-aware env file and only requires Auth0 vars when dev auth is off; a PORT config var replaces the hardcoded :8082; and the nav UI (layout/index templates, ui router) points login/logout links at /api/auth/dev-login and a new /api/auth/dev-logout route when dev auth is enabled, so the whole login/logout loop works locally without a real Auth0 app. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,10 @@ type (
|
||||
}
|
||||
)
|
||||
|
||||
// New instantiates the *Authenticator.
|
||||
// New instantiates an *Authenticator backed by a real Auth0 tenant: it makes
|
||||
// an OIDC discovery call against domain, so login/callback/logout are fully
|
||||
// functional. Use NewDev instead when DEV_AUTH_ENABLED is set and no real
|
||||
// Auth0 app is configured.
|
||||
func New(
|
||||
ctx context.Context,
|
||||
db *pgxpool.Pool,
|
||||
@@ -75,6 +78,18 @@ func New(
|
||||
}, nil
|
||||
}
|
||||
|
||||
// NewDev instantiates an *Authenticator with no real Auth0 tenant behind it:
|
||||
// no OIDC discovery call is made, and Provider/Config are left zero-valued.
|
||||
// Only DevLogin is safe to call on the result - Exchange, VerifyIDToken, and
|
||||
// GetLogoutURL all assume a real Auth0 setup and will misbehave. Only use
|
||||
// this from a route gated on an explicit dev-mode flag.
|
||||
func NewDev(db *pgxpool.Pool, logger *logging.Logger) *Authenticator {
|
||||
return &Authenticator{
|
||||
log: logger,
|
||||
db: db,
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Authenticator) RunBackgroundCleanup(ctx context.Context) error {
|
||||
for {
|
||||
if _, err := a.db.Exec(ctx, "DELETE FROM oauth_tokens WHERE expiry < NOW()"); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user