0.6.6 • Published 12 months ago

@silgi/permission v0.6.6

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

12 months ago

0.6.5

12 months ago

0.6.4

1 year ago

0.6.3

1 year ago

0.6.2

1 year ago

0.6.1

1 year ago

0.6.0

1 year ago

0.5.12

1 year ago

0.5.11

1 year ago

0.5.10

1 year ago

0.5.9

1 year ago

0.5.8

1 year ago

0.5.7

1 year ago

0.5.6

1 year ago

0.5.4

1 year ago

0.5.3

1 year ago

0.5.2

1 year ago

0.5.0

1 year ago

0.4.15

1 year ago

0.4.14

1 year ago

0.4.13

1 year ago

0.4.12

1 year ago

0.4.11

1 year ago

0.4.10

1 year ago

0.4.9

1 year ago

0.4.8

1 year ago

0.4.7

1 year ago

0.4.6

1 year ago

0.4.5

1 year ago

0.4.4

1 year ago

0.4.3

1 year ago

0.4.2

1 year ago

0.4.1

1 year ago

0.4.0

1 year ago

0.3.12

1 year ago

0.3.11

1 year ago

0.3.10

1 year ago

0.3.9

1 year ago

0.3.8

1 year ago

0.3.7

1 year ago

0.3.6

1 year ago

0.3.5

1 year ago

0.3.4

1 year ago

0.3.3

1 year ago

0.3.2

1 year ago

0.3.1

1 year ago

0.3.0

1 year ago

0.1.0

1 year ago

0.2.0

1 year ago

0.0.36

1 year ago

0.0.35

1 year ago

0.0.34

1 year ago

0.0.33

1 year ago

0.0.32

1 year ago

0.0.31

1 year ago

0.0.29

1 year ago

0.0.28

1 year ago

0.0.27

1 year ago

0.0.26

1 year ago

0.0.25

1 year ago

0.0.24

1 year ago

0.0.23

1 year ago

0.0.22

1 year ago

0.0.21

1 year ago

0.0.20

1 year ago

0.0.19

1 year ago

0.0.18

1 year ago

0.0.17

1 year ago

0.0.16

1 year ago

0.0.15

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago