wg-easy/wg-easy · error
Provider is not enabled
Error message
Provider is not enabled
What it means
Thrown when the provider name is valid but no enabled OAuth provider configuration exists for it (getEnabledOauthProvider returns null). HTTP 403 — the provider is known but disabled by the administrator.
Source
Thrown at src/server/utils/oauth.ts:103
return;
}
// WG_ENV.OAUTH_PROVIDERS is filtered to configured providers during startup.
return OAUTH_PROVIDERS[provider] as ConfiguredOAuthConfig;
}
export async function buildOauthConfig(event: H3Event) {
const provider = getRouterParam(event, 'provider');
if (!provider || !isValidOauthProvider(provider)) {
throw createError({
statusCode: 400,
statusMessage: 'Invalid provider',
});
}
const oauthProvider = getEnabledOauthProvider(provider);
if (!oauthProvider) {
throw createError({
statusCode: 403,
statusMessage: 'Provider is not enabled',
});
}
const config = await client.discovery(
new URL(oauthProvider.server),
oauthProvider.clientId,
{
client_secret: oauthProvider.clientSecret,
}
);
return { config, providerConfig: oauthProvider, provider };
}
export async function githubUserInfoFlow(accessToken: string) {
const OAUTH_GITHUB_FLOW = {View on GitHub (pinned to 5c38c1427a)
Solutions
- Enable and configure the provider in the admin OAuth settings
- Remove or hide login buttons/links for disabled providers in the frontend
- Use a different, enabled provider for sign-in
- Verify the provider's stored config (client id/secret, enabled flag) is saved, not just drafted
Example fix
// before
await $fetch('/auth/oauth/github'); // github not enabled
// after — admin enables github in settings first
await $fetch('/admin/oauth/github', { method: 'PUT', body: { enabled: true, clientId, clientSecret } });
await $fetch('/auth/oauth/github'); Defensive patterns
Strategy: validation
Validate before calling
const providers = await $fetch('/admin/oauth');
if (!providers.find(p => p.name === provider && p.enabled)) throw new Error(`${provider} is not enabled`); Type guard
function isProviderEnabled(p) { return p?.enabled === true && !!p?.clientId; } Try / catch
try {
await startOauth(provider);
} catch (e) {
if (e.statusCode === 403 && e.statusMessage === 'Provider is not enabled') {
// surface a friendly message: ask admin to enable the provider
}
throw e;
} Prevention
- Only render sign-in buttons for enabled providers (query enabled list)
- Configure and save the provider fully (clientId/secret + enabled flag) in admin settings
- Communicate provider disablements to users; clean up stale links
When it happens
Trigger: Attempting to log in via a provider that exists in the code but was never configured/enabled in settings; admin disabled the provider while users still have old login links.
Common situations: Fresh deployment where OAuth providers haven't been enabled yet, provider toggled off in admin settings, users bookmarking disabled sign-in buttons.
Related errors
- Email domain not allowed
- Password login not enabled
- User already linked with an OAuth provider
- OAuth account already linked with another user
- You are using an invalid Configuration for wg-easy Please f
AI-assisted analysis of wg-easy/wg-easy@5c38c1427a (2026-08-30).
Data as JSON: /api/errors/84f20bc569be7492.
Report an issue: GitHub.