{"version":3,"file":"authConfig.mjs","sources":["../../src/config/authConfig.ts"],"sourcesContent":["import type { Role, Permission } from '@/lib/auth/types';\n\n/**\n * Centralized role definitions, permission mapping, and route guard metadata.\n */\n\n/**\n * Available roles in the application\n */\nexport const roles = {\n  ADMIN: 'admin',\n  MANAGER: 'manager',\n  USER: 'user',\n  GUEST: 'guest',\n} as const;\n\n/**\n * Available permissions in the application\n */\nexport const permissions = {\n  // Dashboard\n  VIEW_DASHBOARD: 'view:dashboard',\n  EDIT_DASHBOARD: 'edit:dashboard',\n\n  // Reports\n  VIEW_REPORTS: 'view:reports',\n  CREATE_REPORTS: 'create:reports',\n  EXPORT_REPORTS: 'export:reports',\n  DELETE_REPORTS: 'delete:reports',\n\n  // Users\n  VIEW_USERS: 'view:users',\n  CREATE_USERS: 'create:users',\n  EDIT_USERS: 'edit:users',\n  DELETE_USERS: 'delete:users',\n\n  // Settings\n  VIEW_SETTINGS: 'view:settings',\n  EDIT_SETTINGS: 'edit:settings',\n\n  // Admin\n  ADMIN_ACCESS: 'admin:access',\n} as const;\n\n/**\n * Role to permissions mapping\n */\nexport const rolePermissions: Record<Role, Permission[]> = {\n  admin: [\n    permissions.VIEW_DASHBOARD,\n    permissions.EDIT_DASHBOARD,\n    permissions.VIEW_REPORTS,\n    permissions.CREATE_REPORTS,\n    permissions.EXPORT_REPORTS,\n    permissions.DELETE_REPORTS,\n    permissions.VIEW_USERS,\n    permissions.CREATE_USERS,\n    permissions.EDIT_USERS,\n    permissions.DELETE_USERS,\n    permissions.VIEW_SETTINGS,\n    permissions.EDIT_SETTINGS,\n    permissions.ADMIN_ACCESS,\n  ],\n  manager: [\n    permissions.VIEW_DASHBOARD,\n    permissions.EDIT_DASHBOARD,\n    permissions.VIEW_REPORTS,\n    permissions.CREATE_REPORTS,\n    permissions.EXPORT_REPORTS,\n    permissions.VIEW_USERS,\n    permissions.VIEW_SETTINGS,\n  ],\n  user: [permissions.VIEW_DASHBOARD, permissions.VIEW_REPORTS, permissions.VIEW_SETTINGS],\n  guest: [permissions.VIEW_DASHBOARD],\n};\n\n/**\n * Role hierarchy (higher index = higher privilege)\n */\nexport const roleHierarchy: Role[] = ['guest', 'user', 'manager', 'admin'];\n\n/**\n * Check if a role has a specific permission\n */\nexport function hasPermission(role: Role, permission: Permission): boolean {\n  return rolePermissions[role]?.includes(permission) ?? false;\n}\n\n/**\n * Check if roleA is at least as privileged as roleB\n */\nexport function hasMinimumRole(currentRole: Role, requiredRole: Role): boolean {\n  const currentIndex = roleHierarchy.indexOf(currentRole);\n  const requiredIndex = roleHierarchy.indexOf(requiredRole);\n  return currentIndex >= requiredIndex;\n}\n\n/**\n * Get all permissions for a role (including inherited from lower roles)\n */\nexport function getAllPermissions(role: Role): Permission[] {\n  const roleIndex = roleHierarchy.indexOf(role);\n  const applicableRoles = roleHierarchy.slice(0, roleIndex + 1);\n\n  const allPermissions = new Set<Permission>();\n  applicableRoles.forEach((r) => {\n    rolePermissions[r]?.forEach((p) => allPermissions.add(p));\n  });\n\n  return Array.from(allPermissions);\n}\n\n/**\n * Auth configuration constants\n */\nexport const authConfig = {\n  /** Token storage key */\n  tokenKey: 'auth_token',\n  /** Refresh token storage key */\n  refreshTokenKey: 'refresh_token',\n  /** Token expiry buffer in milliseconds (refresh 5 min before expiry) */\n  tokenExpiryBuffer: 5 * 60 * 1000,\n  /** Session timeout in milliseconds (30 minutes of inactivity) */\n  sessionTimeout: 30 * 60 * 1000,\n  /** Maximum failed login attempts before lockout */\n  maxLoginAttempts: 5,\n  /** Lockout duration in milliseconds (15 minutes) */\n  lockoutDuration: 15 * 60 * 1000,\n};\n"],"names":["permissions","rolePermissions","hasPermission","role","permission"],"mappings":"AAmBO,MAAMA,IAAc;AAAA;AAAA,EAEzB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA;AAAA,EAGhB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA;AAAA,EAGhB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA;AAAA,EAGd,eAAe;AAAA,EACf,eAAe;AAAA;AAAA,EAGf,cAAc;AAChB,GAKaC,IAA8C;AAAA,EACzD,OAAO;AAAA,IACLD,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,EAAA;AAAA,EAEd,SAAS;AAAA,IACPA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,IACZA,EAAY;AAAA,EAAA;AAAA,EAEd,MAAM,CAACA,EAAY,gBAAgBA,EAAY,cAAcA,EAAY,aAAa;AAAA,EACtF,OAAO,CAACA,EAAY,cAAc;AACpC;AAUO,SAASE,EAAcC,GAAYC,GAAiC;AACzE,SAAOH,EAAgBE,CAAI,GAAG,SAASC,CAAU,KAAK;AACxD;"}