-- Migration: Erstelle admin_audit_logs Tabelle für Login-Sicherheit
-- Datum: 2026-04-17
-- Zweck: Protokollierung aller Admin-Login-Versuche (erfolgreich und fehlgeschlagen)

-- Tabelle erstellen
CREATE TABLE IF NOT EXISTS admin_audit_logs (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  email text NOT NULL,
  ip_addr text NOT NULL,
  user_agent text NOT NULL,
  success boolean NOT NULL,
  reason text,  -- z.B. "invalid_password", "user_not_found_or_inactive", "missing_credentials"
  timestamp timestamptz DEFAULT now()
);

-- Indexes für Performance
CREATE INDEX IF NOT EXISTS idx_audit_logs_email ON admin_audit_logs(email);
CREATE INDEX IF NOT EXISTS idx_audit_logs_ip ON admin_audit_logs(ip_addr);
CREATE INDEX IF NOT EXISTS idx_audit_logs_success ON admin_audit_logs(success);
CREATE INDEX IF NOT EXISTS idx_audit_logs_timestamp ON admin_audit_logs(timestamp DESC);
CREATE INDEX IF NOT EXISTS idx_audit_logs_email_timestamp ON admin_audit_logs(email, timestamp DESC);

-- RLS (Row Level Security) - nur Admins können Logs anschauen
ALTER TABLE admin_audit_logs ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Admin können ihre eigenen Logs sehen" ON admin_audit_logs
  FOR SELECT
  USING (true);  -- TODO: Später auf Admin-Session prüfen

-- Automatische Cleanup: Alte Logs nach 90 Tagen löschen (optional)
-- Dies kann auch manuell als Cron-Job eingerichtet werden via supabase/functions
