角色
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.role,bean.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-user的meta.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 对象