import { ArrowRight, Fingerprint, Smartphone, Sparkles } from "lucide-react"; const flows = [ { title: "Admin login", description: "Enforce short TTL and step-up MFA. Keep admin session separate from app session.", pill: "15m TTL", }, { title: "Tenant pick", description: "Admin chooses target tenant before hitting APIs. Propagate X-Tenant-ID on every call.", pill: "Header-ready", }, { title: "Device approval", description: "If app session exists and user opts in, use push/deeplink approval as MFA replacement.", pill: "App session", }, ]; function AuthPage() { return (

Admin auth

Admin auth guardrails

Build the admin-only login flow first, keeping app login separate. Respect the “fallback only when user chooses” rule for SMS/email vs app approval.

IDP session placeholder
{flows.map((flow) => (
{flow.pill}

{flow.title}

{flow.description}

))}
App-based approvals

App session as MFA replacement

If the admin keeps the mobile app signed in and opts in, use push/deeplink approval instead of OTP. Otherwise fall back to SMS/email based on user choice.

TTL discipline

Keep admin sessions short

Default admin TTL is 15 minutes. Show countdown and nudge re-auth with step-up MFA when critical actions (rotate secret, export logs) happen.

); } export default AuthPage;