0.6.6 • Published 28 days ago

@silgi/permission v0.6.6

Weekly downloads
-
License
-
Repository
-
Last release
28 days ago

@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.

0.6.6

28 days ago

0.6.5

1 month ago

0.6.4

2 months ago

0.6.3

2 months ago

0.6.2

2 months ago

0.6.1

2 months ago

0.6.0

2 months ago

0.5.12

2 months ago

0.5.11

2 months ago

0.5.10

2 months ago

0.5.9

2 months ago

0.5.8

2 months ago

0.5.7

2 months ago

0.5.6

2 months ago

0.5.4

2 months ago

0.5.3

2 months ago

0.5.2

2 months ago

0.5.0

2 months ago

0.4.15

3 months ago

0.4.14

3 months ago

0.4.13

3 months ago

0.4.12

3 months ago

0.4.11

3 months ago

0.4.10

3 months ago

0.4.9

3 months ago

0.4.8

3 months ago

0.4.7

3 months ago

0.4.6

3 months ago

0.4.5

3 months ago

0.4.4

3 months ago

0.4.3

3 months ago

0.4.2

3 months ago

0.4.1

3 months ago

0.4.0

3 months ago

0.3.12

3 months ago

0.3.11

3 months ago

0.3.10

3 months ago

0.3.9

3 months ago

0.3.8

3 months ago

0.3.7

3 months ago

0.3.6

3 months ago

0.3.5

3 months ago

0.3.4

3 months ago

0.3.3

3 months ago

0.3.2

3 months ago

0.3.1

3 months ago

0.3.0

4 months ago

0.1.0

4 months ago

0.2.0

4 months ago

0.0.36

4 months ago

0.0.35

4 months ago

0.0.34

4 months ago

0.0.33

4 months ago

0.0.32

4 months ago

0.0.31

4 months ago

0.0.29

4 months ago

0.0.28

4 months ago

0.0.27

4 months ago

0.0.26

4 months ago

0.0.25

4 months ago

0.0.24

4 months ago

0.0.23

4 months ago

0.0.22

4 months ago

0.0.21

4 months ago

0.0.20

4 months ago

0.0.19

4 months ago

0.0.18

4 months ago

0.0.17

4 months ago

0.0.16

4 months ago

0.0.15

4 months ago

0.0.14

4 months ago

0.0.13

4 months ago

0.0.12

4 months ago

0.0.11

4 months ago

0.0.10

4 months ago

0.0.9

4 months ago

0.0.8

4 months ago

0.0.7

4 months ago

0.0.5

4 months ago

0.0.4

5 months ago

0.0.3

5 months ago

0.0.2

5 months ago

0.0.1

5 months ago