Ctrl K
ComunidadGuías…

lib/auth-mode.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
export function hasPublicNeonAuthConfig() {
  return Boolean(process.env.NEXT_PUBLIC_NEON_AUTH_URL && process.env.NEXT_PUBLIC_NEON_DATA_API_URL);
}

export type OAuthProviderId = "google" | "github";

type OAuthProviderConfig = Record<OAuthProviderId, boolean>;

function envFlag(value: string | undefined) {
  return value === "1" || value === "true" || value === "yes" || value === "on";
}

function envExplicitlyFalse(value: string | undefined) {
  return value === "0" || value === "false" || value === "no" || value === "off";
}

function providerEnabled(publicValue: string | undefined, serverValue: string | undefined) {
  if (envExplicitlyFalse(publicValue) || envExplicitlyFalse(serverValue)) return false;
  if (envFlag(publicValue) || envFlag(serverValue)) return true;
  return hasPublicNeonAuthConfig();
}

export function enabledOAuthProviders(): OAuthProviderConfig {
  return {
    google: providerEnabled(process.env.NEXT_PUBLIC_ASTRAIL_GOOGLE_OAUTH_ENABLED, process.env.ASTRAIL_GOOGLE_OAUTH_ENABLED),
    github: providerEnabled(process.env.NEXT_PUBLIC_ASTRAIL_GITHUB_OAUTH_ENABLED, process.env.ASTRAIL_GITHUB_OAUTH_ENABLED),
  };
}

export function isOAuthProviderEnabled(provider: OAuthProviderId) {
  return enabledOAuthProviders()[provider];
}

export function oauthProviderDisabledMessage(provider: OAuthProviderId) {
  const name = provider === "google" ? "Google" : "GitHub";
  return `${name} sign-in is not enabled yet. Use email sign-in or finish ${name} OAuth setup for this workspace.`;
}

export function isDemoAuthAllowed() {
  if (process.env.NODE_ENV === "production") return false;
  return process.env.NEXT_PUBLIC_ASTRAIL_ALLOW_DEMO_AUTH !== "false";
}

export function missingProductionAuthMessage() {
  return "Production sign-in is not configured yet. Contact support or finish workspace auth setup before signing in.";
}