← back to Freddy

lib/accounts.ts

21 lines

/**
 * Freddy account capabilities — three guest tiers alongside the admin login,
 * built on the shared @dw/nextjs-admin-login capability layer (v0.3.0).
 *
 *   guest  — member: can write, no AI, no admin-only controls.
 *   viewer — fully read-only.
 *   demo   — read-only data, but AI features usable.
 *
 * A tier is only an active login when its password env var is set. Enforced
 * authoritatively in middleware via capabilityGate.
 */
import { createCapabilityRegistry } from '@dw/nextjs-admin-login';

export const registry = createCapabilityRegistry({
  guests: {
    guest:  { role: 'member', displayName: 'Guest',              canWrite: true,  canUseAI: false, passwordEnv: 'FREDDY_GUEST_PASSWORD' },
    viewer: { role: 'viewer', displayName: 'Viewer (read-only)', canWrite: false, canUseAI: false, passwordEnv: 'FREDDY_VIEWER_PASSWORD' },
    demo:   { role: 'viewer', displayName: 'Demo',               canWrite: false, canUseAI: true,  passwordEnv: 'FREDDY_DEMO_PASSWORD' },
  },
});