项目作者: AZaviruha

项目描述 :
Simple lib for calculation role/access_level matching
高级语言: JavaScript
项目地址: git://github.com/AZaviruha/access-levels.git
创建时间: 2017-10-20T09:57:17Z
项目社区:https://github.com/AZaviruha/access-levels

开源协议:MIT License

下载


access-levels

Небольшая библиотечка для рассчета уровней доступов по роля, по принципу бинарных масок.

Идея реализации позаимствована отсюда.

Usage

  1. import buildLevels from 'access-levels'
  2. const accessLevelsConfig = {
  3. 'public': '*',
  4. 'anon': [ 'anon' ],
  5. 'user' : [ 'user', 'admin' ],
  6. 'admin': [ 'admin' ]
  7. }
  8. const { roles, accessLevels } = buildLevels(accessLevelsConfig)
  9. /**
  10. > roles
  11. { anon: { bitMask: 1, title: 'anon' },
  12. user: { bitMask: 2, title: 'user' },
  13. admin: { bitMask: 4, title: 'admin' } }
  14. > accessLevels
  15. { public: 7, anon: 1, user: 6, admin: 4 }
  16. */
  17. const hasUserAccess = !!(roles.user.bitMask & accessLevels.user) // true
  18. const hasAdminAccess = !!(roles.user.bitMask & accessLevels.admin) // false

Набор доступов и ролей приведенный в примере, встречается достаточно часто. Поэтому, в библиотеке он используется в качестве значения по умолчанию для функции buildLevels. Так что, эта строчка сработает аналогично:

  1. const { roles, accessLevels } = buildLevels(/* default */)