Define models
It is very important that in all your permissions, you do not double the value you send as a parameter to the Perm
decorator.
Simple permission
export class MyObjectOnePermissions extends AbstractPermissionModel {
@Perm(1)
static readonly READ: Permission;
@Perm(2)
static readonly CREATE: Permission;
@Perm(3)
static readonly UPDATE: Permission;
@Perm(4)
static readonly DELETE: Permission;
}
You can add a mixed permission
AND mixed permission
export class MyObjectOnePermissions extends AbstractPermissionModel {
...
...
...
@MixedPerm(
[MyObjectOnePermissions.READ],
[MyObjectOnePermissions.CREATE],
[MyObjectOnePermissions.UPDATE],
[MyObjectOnePermissions.DELETE],
)
static readonly ADMIN: MixedPermission; // READ && CREATE && UPDATE && DELETE
}
OR mixed permission
export class MyObjectOnePermissions extends AbstractPermissionModel {
...
...
...
@MixedPerm(
[MyObjectOnePermissions.READ,
MyObjectOnePermissions.CREATE,
MyObjectOnePermissions.UPDATE,
MyObjectOnePermissions.DELETE],
)
static readonly USER: MixedPermission; // READ || CREATE || UPDATE || DELETE
}
Mixed AND and OR permission
export class MyObjectOnePermissions extends AbstractPermissionModel {
...
...
...
@MixedPerm(
[MyObjectOnePermissions.READ,
MyObjectOnePermissions.CREATE],
[MyObjectOnePermissions.UPDATE,
MyObjectOnePermissions.DELETE],
)
static readonly SUB_ADMIN: MixedPermission; // (READ || CREATE) && (UPDATE || DELETE)
}
You can use mixed permission in mixed permission
export class MyObjectOnePermissions extends AbstractPermissionModel {
...
...
...
@MixedPerm(
[MyObjectOnePermissions.READ],
[MyObjectOnePermissions.CREATE],
[MyObjectOnePermissions.UPDATE],
[MyObjectOnePermissions.DELETE],
)
static readonly ADMIN: MixedPermission; // READ && CREATE && UPDATE && DELETE
}
export class MyObjectTwoPermissions extends AbstractPermissionModel {
...
...
...
@MixedPerm(
[MyObjectOnePermissions.READ],
[MyObjectOnePermissions.CREATE],
[MyObjectOnePermissions.UPDATE],
[MyObjectOnePermissions.DELETE],
)
static readonly ADMIN: MixedPermission; // READ && CREATE && UPDATE && DELETE
}
export class MyGeneralPermissions extends AbstractPermissionModel {
...
...
...
@MixedPerm(
[MyObjectOnePermissions.ADMIN],
[MyObjectTwoPermissions.ADMIN],
)
static readonly ADMIN: MixedPermission; // READ && CREATE && UPDATE && DELETE
}
Last updated