Skip to content

角色

a-user: IRole

模块a-user提供了接口IRole,约定了 Role 的基础字段

typescript
export interface IRole {
  id: TableIdentity;
  name: string;
}

a-user: bean.role

模块a-user提供了全局 Bean bean.role,为业务提供了通用的调用规范

typescript
// find role
const role = await this.bean.role.findOneById(roleId);
// find roles of user
const roles = await this.bean.role.findAllByUserId(userId);
  • bean.role方法清单
名称说明
findOneByName通过name查找角色
findOneById通过id查找角色
findOne查找角色
findAllByUserId查找某个用户的所有角色

home-user适配器: ServiceRoleAdapter

模块home-user提供了适配器ServiceRoleAdapter,允许我们定制角色的操作逻辑。业务代码调用bean.rolebean.role调用ServiceRoleAdapter,从而实现了开箱即用灵活定制的完美结合

src/suite/a-home/modules/home-user/src/service/roleAdapter.ts

名称说明
findOneByName通过name查找角色
findOne查找角色
findAllByUserId查找某个用户的所有角色

获取当前角色

diff
class ControllerStudent {
  @Web.get('test')
  test() {
+   const roles = this.bean.passport.currentRoles;
    console.log(roles);
  }
}

角色: admin

在模块home-usermeta.version中自动创建admin角色

src/suite/a-home/modules/home-user/src/bean/meta.version.ts

typescript
async init(options) {
  if (options.version === 1) {
    // role: admin
    await this.scope.model.role.insert({
      name: 'admin',
    });
  }
}

为用户分配角色

typescript
await this.scope.model.roleUser.insert({
  userId,
  roleId,
});
  • this.scope: 取得模块home-user的 scope 对象

基于 MIT 许可发布