@silgi/permission v0.6.6
@silgi/permission
Overview
@silgi/permission is a module designed to manage permissions using bitmasking techniques. It provides utilities for defining, checking, and managing permissions in a structured and efficient way.
Installation
To install the module, use:
npm install @silgi/permissionConfiguration
You can configure the module in your silgi.config.ts file:
import { defineSilgiConfig } from 'silgi/config'
export default defineSilgiConfig({
modules: [
'@silgi/permission',
],
permission: {
groups: {
USER: 301,
ADMIN: 302,
},
defaultRoles: [
{
id: 'admin-role-id',
name: 'Admin',
permissions: 'AAATPwAAEt8AABNPAAATXw==',
key: 'admin',
description: 'Administrator role',
},
],
},
})Usage
Defining Permissions
Permissions are defined using bitmasking. For example:
import { PermissionAccess } from '@silgi/permission/constants/permission'
const PermissionGroups = {
USER: 301,
ADMIN: 302,
}
const permask = createPermask(PermissionGroups)Checking Permissions
You can check if a user has specific permissions:
import { hasRequiredPermissions } from '@silgi/permission/runtime/bitmask'
const userPermissions = [0b1111] // Example bitmask
const canRead = hasRequiredPermissions(userPermissions, PermissionGroups.USER, PermissionAccess.READ)
console.log(canRead) // true or falseUsing AuthGuard
AuthGuard can be used to manage permission checks:
import { AuthGuard } from '@silgi/permission/runtime/authGuard'
const authGuard = new AuthGuard()
const hasAccess = authGuard.check({ group: PermissionGroups.ADMIN, access: PermissionAccess.CREATE })
console.log(hasAccess) // true or falseRoles and Permissions
Define roles and their permissions:
const adminRole = {
id: 'admin-role-id',
name: 'Admin',
permissions: permissionsToBase64([
permask.create({ group: PermissionGroups.ADMIN, create: true, read: true }),
]),
}Examples
Example Configuration
import { defineSilgiConfig } from 'silgi/config'
export default defineSilgiConfig({
modules: [
'@silgi/permission',
],
permission: {
groups: {
USER: 301,
ADMIN: 302,
},
defaultRoles: [
{
id: 'admin-role-id',
name: 'Admin',
permissions: 'AAATPwAAEt8AABNPAAATXw==',
key: 'admin',
description: 'Administrator role',
},
],
},
})Example Permission Check
import { hasRequiredPermissions } from '@silgi/permission/runtime/bitmask'
const userPermissions = [0b1111]
const canUpdate = hasRequiredPermissions(userPermissions, PermissionGroups.ADMIN, PermissionAccess.UPDATE)
console.log(canUpdate) // true or falseLicense
This project is licensed under the MIT License.
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago