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

  1. Enable and configure the provider in the admin OAuth settings
  2. Remove or hide login buttons/links for disabled providers in the frontend
  3. Use a different, enabled provider for sign-in
  4. 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

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


AI-assisted analysis of wg-easy/wg-easy@5c38c1427a (2026-08-30). Data as JSON: /api/errors/84f20bc569be7492. Report an issue: GitHub.