【发布时间】:2020-09-02 09:03:58
【问题描述】:
import { Entity, Column, BaseEntity, ManyToMany, JoinColumn, PrimaryColumn } from 'typeorm';
@Entity()
export class Permission extends BaseEntity {
@PrimaryColumn()
code: string;
}
@Entity()
export class Role extends BaseEntity {
@PrimaryColumn()
code: string;
@ManyToMany(() => Permission, { cascade: false })
@JoinColumn()
permission: Permission[];
}
@Entity('users')
export class User extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ unique: true })
email: string;
@ManyToMany(() => Role)
@JoinColumn()
roles: Role[];
@ManyToMany(() => Permission)
@JoinColumn()
permissions: Permission[];
}
hasPermission(user: User, code: string): Boolean => {
// ...
}
我想有效地检查用户是否有权限。
即 John 是一个角色 ['inventoryManager'] 和权限 ['listing:delete'] 的用户。并且角色inventoryManager 具有权限['listing:read', 'listing:update']。所以,John.hasPermission('listing:update') 和 John.hasPermission('listing:delete') 都将返回 true,而 John.hasPermission('listing:create') 应该返回 false。
虽然我可以选择所有然后循环将是一个解决方案,但我认为效率低下且过度选择。
【问题讨论】:
标签: postgresql typescript typeorm typeorm-datamapper typeorm-activerecord