【问题标题】:How can I search this object to see if a user has a permission?如何搜索此对象以查看用户是否具有权限?
【发布时间】:2017-04-23 02:41:42
【问题描述】:

鉴于我有:

var permissions = {
    'blog': {
    'article' : ['add_article', 'view_articles']
  },
  'gallery': {
    'images' : ['upload_image', 'view_other_user_images']
  }
}

var permissionsChecker = function(permissions) {
    this.permissions = permissions;
    this.hasPermissions = function (permissionsString) {
      // permissionsString is in this.permissions
      // return true
  }
}

如何在该对象内的数组中搜索以检查我是否具有特定权限?我希望能够通过给出这样的字符串进行搜索:

'blog.article.add_article' or 'gallery.images.view_other_user_images'

【问题讨论】:

  • gallery.images.includes('view_other_user_images') 怎么样?差别不大
  • 从正确获取一般语法开始...
  • 使用 无分号 It's fine. Really! 它会解决你的语法问题
  • @Endless no 分号也不是解决方案
  • @Bergi 在他编辑/更正自己的问题之前

标签: javascript json object search recursion


【解决方案1】:

我可能没有正确理解,但我认为这就是您要寻找的:

var permissionsChecker = function(permissions) {
    this.permissions = permissions;
    this.hasPermissions = function (permissionsString) {
      var [section, subsection, permission] = permissionsString.split('.');
      if(this.permissions[section]){
        if(this.permissions[section][subsection]){
          return this.permissions[section][subsection].indexOf(permission) > -1;
        }
      }
      return false;
  }; 
}
var checker = new permissionsChecker(permissions);
checker.hasPermission('add_article');//true
checker.hasPermission('destroy_world');//false

【讨论】:

  • 感谢您提供实际有用的评论/回答,但没有光顾:)
  • 如果我传入一个不存在的部分和/或子部分,我应该如何优雅地处理呢?
  • @JohnathanAu 我已经发布了反映该评论的更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 2016-04-23
相关资源
最近更新 更多