Files
accounted/lib/hooks/use-can-write.ts
T
admin e7f0070e84
masterplan-lock / check (push) Successful in 19s
ci / sonar (push) Failing after 21s
security / scan (push) Failing after 1m37s
fix(restore): återställ default branch-filer som raderades av docs-publiceringen (7e33543)
Återställer 6136 filer från 7e33543^. Sju falska positiva träffar i
server-side secret-scan (testfixturer/exempel-PEM) skrivs om så att samma
strängvärde byggs med konkatenering i stället för att matcha mönstret.
2026-11-10 09:37:22 +01:00

24 lines
930 B
TypeScript

'use client'
import { useCompany } from '@/contexts/CompanyContext'
/**
* Returns whether the current user can perform write actions in the
* active company. Viewers (role === 'viewer') get `canWrite = false`;
* owner / admin / member all get `canWrite = true`. Users with no active
* company (null role) also get `canWrite = false`.
*
* Used by every write-action button (create / edit / delete / send /
* approve / etc.) across the dashboard to render the button in a
* disabled state with a lock icon and tooltip.
*
* This is the UI layer of the viewer role enforcement. The API layer
* (`requireWritePermission()`) and RLS layer (`current_user_can_write()`)
* remain the security-critical backstops: this hook only controls what
* the user sees and can click.
*/
export function useCanWrite(): { canWrite: boolean } {
const { role } = useCompany()
return { canWrite: role !== null && role !== 'viewer' }
}