Å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.
24 lines
930 B
TypeScript
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' }
|
|
}
|