-- 2FA e detyrueshme për stafin, e zbatuar në bazën e të dhënave (jo vetëm në ndërfaqe).
-- Pa këtë, një fjalëkalim i vjedhur do të mjaftonte për të thirrur API-n drejtpërdrejt.
-- Supabase vendos "aal" në JWT: aal1 = vetëm fjalëkalim, aal2 = fjalëkalim + kod TOTP.
-- Lexim i rreshtit të vet në staff_users mbetet i lejuar në aal1 (politika staff_self_read nuk përdor is_staff),
-- që paneli të dijë nëse duhet regjistruar ose kërkuar kodi.

create or replace function public.is_staff() returns boolean
language sql stable security definer set search_path = public, pg_temp as $$
  select coalesce(auth.jwt() ->> 'aal', '') = 'aal2'
    and exists (select 1 from public.staff_users where user_id = auth.uid() and active)
$$;

create or replace function public.is_admin() returns boolean
language sql stable security definer set search_path = public, pg_temp as $$
  select coalesce(auth.jwt() ->> 'aal', '') = 'aal2'
    and exists (select 1 from public.staff_users where user_id = auth.uid() and active and role = 'admin')
$$;
