0.6.6 • Published 6 months ago

@silgi/permission v0.6.6

Weekly downloads
-
License
-
Repository
-
Last release
6 months 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

6 months ago

0.6.5

7 months ago

0.6.4

7 months ago

0.6.3

7 months ago

0.6.2

7 months ago

0.6.1

7 months ago

0.6.0

7 months ago

0.5.12

8 months ago

0.5.11

8 months ago

0.5.10

8 months ago

0.5.9

8 months ago

0.5.8

8 months ago

0.5.7

8 months ago

0.5.6

8 months ago

0.5.4

8 months ago

0.5.3

8 months ago

0.5.2

8 months ago

0.5.0

8 months ago

0.4.15

8 months ago

0.4.14

8 months ago

0.4.13

8 months ago

0.4.12

8 months ago

0.4.11

8 months ago

0.4.10

8 months ago

0.4.9

8 months ago

0.4.8

8 months ago

0.4.7

8 months ago

0.4.6

8 months ago

0.4.5

8 months ago

0.4.4

8 months ago

0.4.3

8 months ago

0.4.2

8 months ago

0.4.1

9 months ago

0.4.0

9 months ago

0.3.12

9 months ago

0.3.11

9 months ago

0.3.10

9 months ago

0.3.9

9 months ago

0.3.8

9 months ago

0.3.7

9 months ago

0.3.6

9 months ago

0.3.5

9 months ago

0.3.4

9 months ago

0.3.3

9 months ago

0.3.2

9 months ago

0.3.1

9 months ago

0.3.0

9 months ago

0.1.0

9 months ago

0.2.0

9 months ago

0.0.36

9 months ago

0.0.35

9 months ago

0.0.34

10 months ago

0.0.33

10 months ago

0.0.32

10 months ago

0.0.31

10 months ago

0.0.29

10 months ago

0.0.28

10 months ago

0.0.27

10 months ago

0.0.26

10 months ago

0.0.25

10 months ago

0.0.24

10 months ago

0.0.23

10 months ago

0.0.22

10 months ago

0.0.21

10 months ago

0.0.20

10 months ago

0.0.19

10 months ago

0.0.18

10 months ago

0.0.17

10 months ago

0.0.16

10 months ago

0.0.15

10 months ago

0.0.14

10 months ago

0.0.13

10 months ago

0.0.12

10 months ago

0.0.11

10 months ago

0.0.10

10 months ago

0.0.9

10 months ago

0.0.8

10 months ago

0.0.7

10 months ago

0.0.5

10 months ago

0.0.4

10 months ago

0.0.3

10 months ago

0.0.2

10 months ago

0.0.1

10 months ago