import { z } from "zod";
import { uuidSchema } from "./common";

/**
 * Zod-Schemas für die Benutzerverwaltung im Wehr-Bereich (Workstream 7).
 *
 * WICHTIG (Sicherheit): Die Rolle ist auf `wehr_admin | wehr_read` beschränkt.
 * Ein Wehr-Admin darf NIEMALS `platform_admin` vergeben — Zod lehnt das an der
 * Grenze ab (Querschnittsstandard 4, Verteidigung in der Tiefe zusätzlich zum
 * serverseitigen Scope-Guard).
 */

export const brigadeUserRoleSchema = z.enum(["wehr_admin", "wehr_read"], {
  errorMap: () => ({ message: "Unzulässige Rolle." }),
});

export const brigadeUserCreateSchema = z.object({
  email: z
    .string()
    .trim()
    .email({ message: "Ungültige E-Mail." })
    .transform((v) => v.toLowerCase()),
  name: z.string().trim().min(1, { message: "Name ist Pflicht." }),
  rolle: brigadeUserRoleSchema,
});

export type BrigadeUserCreateInput = z.infer<typeof brigadeUserCreateSchema>;

export const brigadeUserDeactivateSchema = z.object({
  userId: uuidSchema,
});

export type BrigadeUserDeactivateInput = z.infer<
  typeof brigadeUserDeactivateSchema
>;
