代码之家  ›  专栏  ›  技术社区  ›  Gustavo Mendonça

多用户角色环回

  •  0
  • Gustavo Mendonça  · 技术社区  · 6 年前

    我正在尝试使用环回作为后端制作应用程序。我以前已经用过环回了,但现在我想做一些以前从未做过的事情。

    我想要的是简单,我将有3种类型的用户,管理员,服务和默认。但是,我需要限制每种类型用户的访问控制;管理员可以请求我的所有路由,但默认用户(例如,de default user)只能请求我将指定的某些路由。ACL部分我知道如何做,但我找不到任何解释如何使每种类型的用户成为角色并使其工作的东西。

    有人可以在这里发布一个至少有两个用户和角色的示例吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Antonio Trapani    6 年前

    第一步是将这两个新角色持久化到数据库中,“administrator”和“servicer”。您可以手动执行此步骤,也可以创建可重用的脚本:

    // commands/add_roles.js
    
    let app = require('../server/server')
    
    function createRole(name, description, done) {
      app.models.Role.findOrCreate(
        {where: {name: name}}, 
        {name, description},
        err => {
          // TODO handle error
          
          done && done()
        }
      )  
    }
    
    createRole('administrator', 'Administrators have more control on the data', () => {
      createRole('servicer', 'servicer description', process.exit)
    })

    然后,将角色与用户关联。根据应用程序的不同,在需要时执行下面的代码。

    app.models.Role.findOne({where: {name: 'administrator'}}, (err, role) => {
      // TODO handle error
    
      app.models.RoleMapping.findOrCreate({where: {principalId: user.id}}, {
        roleId: role.id,
        principalType: RoleMapping.USER,
        principalId: user.id
      }, function (err) {
        // TODO handle error
          
        // if no errors, user has now the role administrator
      })
    })

    现在可以在模型的acl中使用角色“administrator”和“servicer”。