diff --git a/internal/bootstrap/app_bootstrap.go b/internal/bootstrap/app_bootstrap.go index c24638f5..698c019e 100644 --- a/internal/bootstrap/app_bootstrap.go +++ b/internal/bootstrap/app_bootstrap.go @@ -11,6 +11,7 @@ import ( "net/url" "os" "os/signal" + "slices" "sort" "strings" "syscall" @@ -131,6 +132,10 @@ func (app *BootstrapApp) Setup() error { app.runtime.OAuthProviders = app.config.OAuth.Providers for id, provider := range app.runtime.OAuthProviders { + if slices.Contains(model.ReservedProviderNames, id) { + return fmt.Errorf("provider id %s is reserved and cannot be used", id) + } + providerWhitelist, err := utils.GetStringList(provider.Whitelist, provider.WhitelistFile) if err != nil { return fmt.Errorf("failed to load oauth whitelist for provider %s: %w", id, err) diff --git a/internal/model/constants.go b/internal/model/constants.go index d5885dcf..ff44a729 100644 --- a/internal/model/constants.go +++ b/internal/model/constants.go @@ -17,6 +17,8 @@ var OverrideProviders = map[string]string{ "github": "GitHub", } +var ReservedProviderNames = []string{"local", "ldap", "tailscale"} + const SessionCookieName = "tinyauth-session" const CSRFCookieName = "tinyauth-csrf" const RedirectCookieName = "tinyauth-redirect"