javascript / expert
Snippet
BigInt-Bitmasken-Auswertung für Mandantenfähige Berechtigungsprüfungen
Nutzt bitweise Bitmasken-Operationen mit BigInt-Primitiven für Flag-Vergleiche beliebig großer Präzision jenseits der 32-Bit-Grenze von JavaScript zur feingranularen Berechtigungssteuerung in der UI.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import React, { createContext, useContext, useMemo } from 'react';const PERMISSIONS = {READ_ANALYTICS: 1n << 0n,WRITE_SETTINGS: 1n << 32n,EXECUTE_DEPLOY: 1n << 64n};const AuthContext = createContext(0n);export function PermissionGate({ requiredBit, children }) {const userFlags = useContext(AuthContext);const hasAccess = useMemo(() => {return (userFlags & requiredBit) === requiredBit;}, [userFlags, requiredBit]);return hasAccess ? <>{children}</> : null;}
react
Erklärung
1
WRITE_SETTINGS: 1n << 32n,
Verwendet BigInt-Literale (n-Suffix) und Bitshift, um Flags über 32 Bit hinaus zu definieren.
2
return (userFlags & requiredBit) === requiredBit;
Führt eine bitweise UND-Operation auf BigInt-Primitiven aus, um Berechtigungsmasken zu prüfen.
3
const hasAccess = useMemo(() => {
Memoisiert die Prüfung, um unnötige Neuberechnungen der Bitmasken zu vermeiden.