Some checks are pending
E2E / Playwright e2e (push) Waiting to run
- Introduced turbopack alias for canvas in next.config.mjs. - Updated package.json scripts for development and branding tasks. - Added new dependencies for Tiptap extensions. - Implemented new demo layouts for agenda, contacts, drive, and mail applications. - Enhanced globals.css for improved theming and splash screen animations. - Added OAuth callback handling for drive mounts. - Updated layout components to integrate new demo shells and improve structure.
20 lines
794 B
TypeScript
20 lines
794 B
TypeScript
"use client"
|
|
|
|
import { useAuthStore } from "@/lib/api/auth-store"
|
|
import { useCurrentUser } from "@/lib/api/hooks/use-current-user"
|
|
import { adminScopesFromToken, isPlatformAdminFromToken } from "@/lib/auth/admin"
|
|
|
|
/** Matches AdminAccessGuard: token groups or platform_admin from /users/me. */
|
|
export function usePlatformAdminAccess() {
|
|
const token = useAuthStore((s) => s.accessToken)
|
|
const { data: me, isFetched: meFetched } = useCurrentUser()
|
|
const scopes = adminScopesFromToken(token)
|
|
const fromToken = isPlatformAdminFromToken(token) || scopes.read
|
|
const fromAccount = me?.platform_admin === true
|
|
return {
|
|
isAdmin: fromToken || fromAccount,
|
|
/** Wait for /users/me when token alone is not enough to decide admin access. */
|
|
adminReady: fromToken || meFetched,
|
|
}
|
|
}
|