@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/permission
Configuration
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 false
Using 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 false
Roles 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 false
License
This project is licensed under the MIT License.
28 days ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago