import { z } from "zod";

/**
 * Reine Helfer für die Authentik-Gruppensteuerung des Admin-Zugangs.
 * Bewusst OHNE DB-/Node-Importe, damit sie isoliert unit-testbar sind und
 * auch im Edge-Pfad unbedenklich wären.
 */

const profileWithGroups = z
  .object({ groups: z.array(z.string()).optional() })
  .passthrough();

/** Extrahiert den `groups`-Claim aus dem Authentik-OIDC-Profil (defensiv). */
export function extractGroups(profile: unknown): string[] {
  const parsed = profileWithGroups.safeParse(profile);
  return parsed.success && parsed.data.groups ? parsed.data.groups : [];
}

/** Entscheidung: Ist der Benutzer Mitglied der konfigurierten Admin-Gruppe? */
export function isAdminGroupMember(
  groups: readonly string[],
  adminGroup: string,
): boolean {
  return groups.includes(adminGroup);
}
