{"version":3,"file":"useAuth.mjs","sources":["../../../src/lib/auth/useAuth.ts"],"sourcesContent":["import { useAuthContext } from './AuthProvider';\nimport type { Role, Permission } from './types';\n\n/**\n * Hook exposing { user, roles, login, logout, hasRole }.\n */\nexport function useAuth(): ReturnType<typeof useAuthContext> & {\n  roles: Role[];\n  permissions: Permission[];\n  displayName: string;\n  email: string;\n  avatarUrl: string | undefined;\n  isAdmin: boolean;\n  isManager: boolean;\n} {\n  const {\n    user,\n    isAuthenticated,\n    isLoading,\n    error,\n    login,\n    logout,\n    register,\n    refreshToken,\n    refreshSession,\n    hasRole,\n    hasAnyRole,\n    hasPermission,\n    hasAnyPermission,\n  } = useAuthContext();\n\n  return {\n    // State\n    user,\n    isAuthenticated,\n    isLoading,\n    error,\n    roles: user?.roles ?? [],\n    permissions: user?.permissions ?? [],\n\n    // Actions\n    login,\n    logout,\n    register,\n    refreshToken,\n    refreshSession,\n\n    // Permission helpers\n    hasRole,\n    hasAnyRole,\n    hasPermission,\n    hasAnyPermission,\n\n    // Convenience getters\n    get displayName() {\n      return user?.displayName ?? '';\n    },\n    get email() {\n      return user?.email ?? '';\n    },\n    get avatarUrl() {\n      return user?.avatarUrl;\n    },\n    get isAdmin() {\n      return hasRole('admin');\n    },\n    get isManager() {\n      return hasAnyRole(['admin', 'manager']);\n    },\n  };\n}\n\n/**\n * Hook to check if the current user has a specific role\n */\nexport function useHasRole(role: Role): boolean {\n  const { hasRole } = useAuth();\n  return hasRole(role);\n}\n\n/**\n * Hook to check if the current user has a specific permission\n */\nexport function useHasPermission(permission: Permission): boolean {\n  const { hasPermission } = useAuth();\n  return hasPermission(permission);\n}\n"],"names":["useAuth","user","isAuthenticated","isLoading","error","login","logout","register","refreshToken","refreshSession","hasRole","hasAnyRole","hasPermission","hasAnyPermission","useAuthContext","useHasRole","role","useHasPermission","permission"],"mappings":";AAMO,SAASA,IAQd;AACA,QAAM;AAAA,IACJ,MAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA,IACEC,EAAA;AAEJ,SAAO;AAAA;AAAA,IAEL,MAAAb;AAAA,IACA,iBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,OAAOH,GAAM,SAAS,CAAA;AAAA,IACtB,aAAaA,GAAM,eAAe,CAAA;AAAA;AAAA,IAGlC,OAAAI;AAAA,IACA,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC;AAAA,IACA,gBAAAC;AAAA;AAAA,IAGA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA;AAAA,IAGA,IAAI,cAAc;AAChB,aAAOZ,GAAM,eAAe;AAAA,IAC9B;AAAA,IACA,IAAI,QAAQ;AACV,aAAOA,GAAM,SAAS;AAAA,IACxB;AAAA,IACA,IAAI,YAAY;AACd,aAAOA,GAAM;AAAA,IACf;AAAA,IACA,IAAI,UAAU;AACZ,aAAOS,EAAQ,OAAO;AAAA,IACxB;AAAA,IACA,IAAI,YAAY;AACd,aAAOC,EAAW,CAAC,SAAS,SAAS,CAAC;AAAA,IACxC;AAAA,EAAA;AAEJ;AAKO,SAASI,EAAWC,GAAqB;AAC9C,QAAM,EAAE,SAAAN,EAAA,IAAYV,EAAA;AACpB,SAAOU,EAAQM,CAAI;AACrB;AAKO,SAASC,EAAiBC,GAAiC;AAChE,QAAM,EAAE,eAAAN,EAAA,IAAkBZ,EAAA;AAC1B,SAAOY,EAAcM,CAAU;AACjC;"}