@holoyan/adonisjs-permissions 0.8.21 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +295 -4
  2. package/build/index.d.ts +1 -1
  3. package/build/index.js +1 -1
  4. package/build/providers/role_permission_provider.js +11 -0
  5. package/build/src/acl.d.ts +18 -7
  6. package/build/src/acl.js +43 -21
  7. package/build/src/decorators.d.ts +3 -1
  8. package/build/src/events/index.d.ts +2 -0
  9. package/build/src/events/index.js +2 -0
  10. package/build/src/events/permissions/permissions.d.ts +80 -0
  11. package/build/src/events/permissions/permissions.js +113 -0
  12. package/build/src/events/roles/roles.d.ts +40 -0
  13. package/build/src/events/roles/roles.js +55 -0
  14. package/build/src/mixins/has_permissions.d.ts +248 -79
  15. package/build/src/mixins/has_permissions.js +199 -23
  16. package/build/src/models/model_permission.d.ts +0 -1
  17. package/build/src/models/model_permission.js +0 -4
  18. package/build/src/models/model_role.d.ts +0 -1
  19. package/build/src/models/model_role.js +0 -4
  20. package/build/src/models/permission.d.ts +3 -4
  21. package/build/src/models/permission.js +2 -8
  22. package/build/src/models/role.d.ts +3 -4
  23. package/build/src/models/role.js +2 -8
  24. package/build/src/services/base_adapter.d.ts +10 -3
  25. package/build/src/services/base_adapter.js +30 -6
  26. package/build/src/services/base_service.d.ts +7 -3
  27. package/build/src/services/base_service.js +8 -4
  28. package/build/src/services/models/model_has_role_permissions.d.ts +185 -0
  29. package/build/src/services/models/model_has_role_permissions.js +346 -0
  30. package/build/src/services/{model_service.d.ts → models/model_service.d.ts} +7 -5
  31. package/build/src/services/{model_service.js → models/model_service.js} +6 -4
  32. package/build/src/services/permissions/empty_permission.d.ts +10 -8
  33. package/build/src/services/permissions/empty_permission.js +26 -10
  34. package/build/src/services/permissions/permission_has_model_roles.d.ts +24 -17
  35. package/build/src/services/permissions/permission_has_model_roles.js +48 -31
  36. package/build/src/services/permissions/permissions_service.d.ts +25 -23
  37. package/build/src/services/permissions/permissions_service.js +12 -11
  38. package/build/src/services/roles/empty_roles.d.ts +11 -8
  39. package/build/src/services/roles/empty_roles.js +27 -8
  40. package/build/src/services/roles/role_has_model_permissions.d.ts +71 -20
  41. package/build/src/services/roles/role_has_model_permissions.js +87 -19
  42. package/build/src/services/roles/roles_service.d.ts +8 -4
  43. package/build/src/services/roles/roles_service.js +15 -16
  44. package/build/src/types.d.ts +18 -7
  45. package/build/stubs/middlewares/acl_middleware.stub +1 -0
  46. package/build/stubs/migrations/create_db.stub +71 -56
  47. package/package.json +3 -2
  48. package/build/src/services/model_has_role_permissions.d.ts +0 -65
  49. package/build/src/services/model_has_role_permissions.js +0 -189
@@ -1,26 +1,35 @@
1
1
  import { destructTarget } from '../helper.js';
2
- import ModelService from '../model_service.js';
2
+ import ModelService from '../models/model_service.js';
3
3
  import PermissionService from '../permissions/permissions_service.js';
4
4
  import BaseAdapter from '../base_adapter.js';
5
+ import { PermissionsAttachedToRoleEvent, PermissionsDetachedFromRoleEvent, PermissionsFlushedFromRoleEvent, } from '../../events/index.js';
5
6
  export class RoleHasModelPermissions extends BaseAdapter {
6
7
  manager;
7
8
  map;
8
9
  options;
10
+ scope;
9
11
  role;
10
- modelService;
11
- permissionService;
12
- constructor(manager, map, options, role) {
13
- super(manager, map, options);
12
+ emitter;
13
+ constructor(manager, map, options, scope, role, emitter) {
14
+ super(manager, map, options, scope, emitter);
14
15
  this.manager = manager;
15
16
  this.map = map;
16
17
  this.options = options;
18
+ this.scope = scope;
17
19
  this.role = role;
18
- const roleClass = manager.getModel('role');
19
- const modelPermission = manager.getModel('modelPermission');
20
- const modelRole = manager.getModel('modelRole');
21
- const permission = manager.getModel('permission');
22
- this.modelService = new ModelService(this.options, modelPermission, modelRole, map);
23
- this.permissionService = new PermissionService(this.options, permission, roleClass, modelPermission, modelRole, map);
20
+ this.emitter = emitter;
21
+ }
22
+ get modelService() {
23
+ const modelPermission = this.manager.getModel('modelPermission');
24
+ const modelRole = this.manager.getModel('modelRole');
25
+ return new ModelService(this.options, this.scope, modelPermission, modelRole, this.map).setQueryOptions(this.queryOptions);
26
+ }
27
+ get permissionService() {
28
+ const roleClass = this.manager.getModel('role');
29
+ const modelPermission = this.manager.getModel('modelPermission');
30
+ const modelRole = this.manager.getModel('modelRole');
31
+ const permission = this.manager.getModel('permission');
32
+ return new PermissionService(this.options, this.scope, permission, roleClass, modelPermission, modelRole, this.map).setQueryOptions(this.queryOptions);
24
33
  }
25
34
  models() {
26
35
  return this.modelService.all(+this.role.getModelId());
@@ -106,41 +115,100 @@ export class RoleHasModelPermissions extends BaseAdapter {
106
115
  const entity = await destructTarget(this.map, target);
107
116
  return this.permissionService.forbidden(this.map.getAlias(this.role), this.role.getModelId(), permission, entity.targetClass, entity.targetId);
108
117
  }
118
+ /**
119
+ * calls giveAll()
120
+ * @param permission
121
+ * @param target
122
+ */
109
123
  assign(permission, target) {
110
- return this.give(permission, target);
124
+ return this.giveAll([permission], target);
111
125
  }
126
+ /**
127
+ * calls giveAll()
128
+ * @param permission
129
+ * @param target
130
+ */
112
131
  allow(permission, target) {
113
- return this.give(permission, target);
132
+ return this.giveAll([permission], target);
114
133
  }
134
+ /**
135
+ * calls giveAll()
136
+ * @param permission
137
+ * @param target
138
+ */
115
139
  async give(permission, target) {
116
- const entity = await destructTarget(this.map, target);
117
- return this.permissionService.giveAll(this.map.getAlias(this.role), this.role.getModelId(), [permission], entity.targetClass, entity.targetId, true);
140
+ return this.giveAll([permission], target);
118
141
  }
142
+ /**
143
+ * @param permissions
144
+ * @param target
145
+ */
119
146
  async giveAll(permissions, target) {
120
147
  const entity = await destructTarget(this.map, target);
121
- return this.permissionService.giveAll(this.map.getAlias(this.role), this.role.getModelId(), permissions, entity.targetClass, entity.targetId, true);
148
+ const attached = await this.permissionService.giveAll(this.map.getAlias(this.role), this.role.getModelId(), permissions, entity.targetClass, entity.targetId, true);
149
+ if (attached.length > 0) {
150
+ this.fire(PermissionsAttachedToRoleEvent, attached.map((item) => item.permissionId), this.role.getModelId());
151
+ }
152
+ return attached;
122
153
  }
154
+ /**
155
+ * calls giveAll()
156
+ * @param permissions
157
+ * @param target
158
+ */
123
159
  assignAll(permissions, target) {
124
160
  return this.giveAll(permissions, target);
125
161
  }
162
+ /**
163
+ * calls giveAll()
164
+ * @param permissions
165
+ * @param target
166
+ */
126
167
  allowAll(permissions, target) {
127
168
  return this.giveAll(permissions, target);
128
169
  }
170
+ /**
171
+ * calls revokeAll()
172
+ * @param permission
173
+ */
129
174
  async revokePermission(permission) {
130
- return this.revoke(permission);
175
+ return this.revokeAll([permission]);
131
176
  }
177
+ /**
178
+ * calls revokeAll()
179
+ * @param permission
180
+ */
132
181
  async revoke(permission) {
133
182
  return this.revokeAll([permission]);
134
183
  }
135
184
  async revokeAll(permissions, target) {
136
185
  const entity = await destructTarget(this.map, target);
137
- return this.permissionService.revokeAll(this.map.getAlias(this.role), this.role.getModelId(), permissions, entity.targetClass, entity.targetId);
186
+ const revoked = await this.permissionService.revokeAll(this.map.getAlias(this.role), this.role.getModelId(), permissions, entity.targetClass, entity.targetId);
187
+ if (revoked.length > 0) {
188
+ this.fire(PermissionsDetachedFromRoleEvent, permissions, this.role.getModelId());
189
+ }
138
190
  }
191
+ /**
192
+ * calls revokeAll()
193
+ * @param permissions
194
+ */
139
195
  async revokeAllPermissions(permissions) {
140
196
  return this.revokeAll(permissions);
141
197
  }
142
198
  async flush() {
143
- return this.permissionService.flush(this.map.getAlias(this.role), this.role.getModelId());
199
+ const flushed = await this.permissionService.flush(this.map.getAlias(this.role), this.role.getModelId());
200
+ if (flushed.length > 0) {
201
+ this.fire(PermissionsFlushedFromRoleEvent, this.role.getModelId());
202
+ }
203
+ }
204
+ /**
205
+ * Sync permissions with the given list
206
+ * @param permissions - list of permissions
207
+ * @param target
208
+ */
209
+ async sync(permissions, target) {
210
+ await this.flush();
211
+ return this.giveAll(permissions, target);
144
212
  }
145
213
  async forbid(permission, target) {
146
214
  const entity = await destructTarget(this.map, target);
@@ -2,20 +2,23 @@ import { AclModel, ModelIdType, MorphInterface, OptionsInterface } from '../../t
2
2
  import BaseService from '../base_service.js';
3
3
  import { BaseModel } from '@adonisjs/lucid/orm';
4
4
  import { ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';
5
+ import Role from '../../models/role.js';
6
+ import { Scope } from '../../scope.js';
5
7
  export default class RolesService extends BaseService {
6
8
  protected options: OptionsInterface;
7
- protected roleClassName: typeof BaseModel;
9
+ protected scope: Scope;
10
+ protected roleClassName: typeof Role;
8
11
  protected modelPermissionClassName: typeof BaseModel;
9
12
  protected modelRoleClassName: typeof BaseModel;
10
13
  protected map: MorphInterface;
11
14
  private readonly roleTable;
12
15
  private readonly modelPermissionTable;
13
16
  private readonly modelRoleTable;
14
- constructor(options: OptionsInterface, roleClassName: typeof BaseModel, modelPermissionClassName: typeof BaseModel, modelRoleClassName: typeof BaseModel, map: MorphInterface);
17
+ constructor(options: OptionsInterface, scope: Scope, roleClassName: typeof Role, modelPermissionClassName: typeof BaseModel, modelRoleClassName: typeof BaseModel, map: MorphInterface);
15
18
  private modelRolesQuery;
16
19
  private get roleQuery();
17
20
  private get modelRoleQuery();
18
- all(modelType: string, modelId: ModelIdType): ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("../../types.js").RoleModel<import("@adonisjs/lucid/types/model").LucidModel>>;
21
+ all(modelType: string, modelId: ModelIdType): ModelQueryBuilderContract<typeof Role, Role>;
19
22
  has(modelType: string, modelId: ModelIdType, role: string): Promise<boolean>;
20
23
  hasAll(modelType: string, modelId: ModelIdType, roles: string[]): Promise<boolean>;
21
24
  hasAny(modelType: string, modelId: ModelIdType, roles: string[]): Promise<boolean>;
@@ -24,8 +27,9 @@ export default class RolesService extends BaseService {
24
27
  revoke(role: string, model: AclModel): Promise<boolean>;
25
28
  revokeAll(roles: string[], model: AclModel): Promise<boolean>;
26
29
  private extractRoleModel;
27
- roleModelPermissionQuery(modelType: string): ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("../../types.js").RoleModel<import("@adonisjs/lucid/types/model").LucidModel>>;
30
+ roleModelPermissionQuery(modelType: string): ModelQueryBuilderContract<typeof Role, Role>;
28
31
  flush(modelType: string, modelId: ModelIdType): ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, any>;
29
32
  private applyScopes;
30
33
  private applyModelRoleScopes;
34
+ findBySlug(slug: string): Promise<Role | null>;
31
35
  }
@@ -1,11 +1,8 @@
1
1
  import BaseService from '../base_service.js';
2
- import {
3
- // getModelPermissionModelQuery,
4
- getModelRoleModelQuery,
5
- // getPermissionModelQuery,
6
- getRoleModelQuery, } from '../query_helper.js';
2
+ import { getModelRoleModelQuery } from '../query_helper.js';
7
3
  export default class RolesService extends BaseService {
8
4
  options;
5
+ scope;
9
6
  roleClassName;
10
7
  modelPermissionClassName;
11
8
  modelRoleClassName;
@@ -14,11 +11,10 @@ export default class RolesService extends BaseService {
14
11
  // private modelPermissionQuery
15
12
  modelPermissionTable;
16
13
  modelRoleTable;
17
- constructor(options, roleClassName,
18
- // private permissionClassName: typeof BaseModel,
19
- modelPermissionClassName, modelRoleClassName, map) {
20
- super(options);
14
+ constructor(options, scope, roleClassName, modelPermissionClassName, modelRoleClassName, map) {
15
+ super(options, scope);
21
16
  this.options = options;
17
+ this.scope = scope;
22
18
  this.roleClassName = roleClassName;
23
19
  this.modelPermissionClassName = modelPermissionClassName;
24
20
  this.modelRoleClassName = modelRoleClassName;
@@ -34,8 +30,8 @@ export default class RolesService extends BaseService {
34
30
  .where('mr.model_id', modelId);
35
31
  }
36
32
  get roleQuery() {
37
- const q = getRoleModelQuery(this.roleClassName, this.getQueryOptions());
38
- this.applyScopes(q, this.scope);
33
+ const q = this.roleClassName.query(this.getQueryOptions());
34
+ this.applyScopes(q, this.scope.get());
39
35
  return q;
40
36
  }
41
37
  get modelRoleQuery() {
@@ -103,8 +99,8 @@ export default class RolesService extends BaseService {
103
99
  roleId: id,
104
100
  });
105
101
  }
106
- await this.modelRoleClassName.createMany(data, this.getQueryOptions());
107
- return true;
102
+ const created = await this.modelRoleClassName.createMany(data, this.getQueryOptions());
103
+ return created.length === data.length;
108
104
  }
109
105
  async revoke(role, model) {
110
106
  return this.revokeAll([role], model);
@@ -123,9 +119,9 @@ export default class RolesService extends BaseService {
123
119
  query.orWhereIn('r.id', ids);
124
120
  }
125
121
  });
126
- this.applyModelRoleScopes(q, 'r', this.scope);
127
- await q.delete();
128
- return true;
122
+ this.applyModelRoleScopes(q, 'r', this.scope.get());
123
+ const d = await q.delete();
124
+ return d.length > 0;
129
125
  }
130
126
  extractRoleModel(roles) {
131
127
  return this.roleQuery.whereIn('slug', roles);
@@ -144,4 +140,7 @@ export default class RolesService extends BaseService {
144
140
  applyModelRoleScopes(q, table, scope) {
145
141
  q.where(table + '.scope', scope);
146
142
  }
143
+ findBySlug(slug) {
144
+ return this.roleQuery.where('slug', slug).first();
145
+ }
147
146
  }
@@ -1,7 +1,11 @@
1
1
  import { LucidModel, ModelAdapterOptions } from '@adonisjs/lucid/types/model';
2
2
  import { DateTime } from 'luxon';
3
- import { BaseModel } from '@adonisjs/lucid/orm';
4
3
  import { Scope } from './scope.js';
4
+ import Permission from './models/permission.js';
5
+ import Role from './models/role.js';
6
+ import ModelPermission from './models/model_permission.js';
7
+ import ModelRole from './models/model_role.js';
8
+ import { BaseEvent } from '@adonisjs/core/events';
5
9
  export interface AclModelInterface {
6
10
  getModelId(): ModelIdType;
7
11
  }
@@ -10,7 +14,7 @@ export interface PermissionInterface extends AclModelInterface {
10
14
  slug: string;
11
15
  title: string | null;
12
16
  entityType: string;
13
- entityId: string | null;
17
+ entityId: ModelIdType | null;
14
18
  allowed: boolean;
15
19
  scope: string;
16
20
  createdAt: DateTime;
@@ -21,7 +25,7 @@ export interface RoleInterface extends AclModelInterface {
21
25
  slug: string;
22
26
  title: string | null;
23
27
  entityType: string;
24
- entityId: string | null;
28
+ entityId: ModelIdType | null;
25
29
  scope: string;
26
30
  allowed: boolean;
27
31
  createdAt: DateTime;
@@ -78,7 +82,14 @@ export interface MorphInterface {
78
82
  export interface ModelManagerInterface {
79
83
  [key: string]: any;
80
84
  }
85
+ interface EventInterface<E extends BaseEvent = BaseEvent> {
86
+ fire: boolean;
87
+ except?: E[];
88
+ only?: E[];
89
+ }
81
90
  export interface OptionsInterface extends ModelManagerInterface {
91
+ queryOptions?: ModelAdapterOptions;
92
+ events: EventInterface;
82
93
  }
83
94
  export interface Permissions {
84
95
  tables: Object;
@@ -92,10 +103,10 @@ export interface ScopeInterface {
92
103
  }
93
104
  export interface ModelManagerBindings {
94
105
  scope: typeof Scope;
95
- role: typeof BaseModel;
96
- permission: typeof BaseModel;
97
- modelRole: typeof BaseModel;
98
- modelPermission: typeof BaseModel;
106
+ role: typeof Role;
107
+ permission: typeof Permission;
108
+ modelRole: typeof ModelRole;
109
+ modelPermission: typeof ModelPermission;
99
110
  queryClient: ModelAdapterOptions;
100
111
  }
101
112
  export interface AclMiddlewareOptions {
@@ -17,6 +17,7 @@ export default class UserScopeMiddleware {
17
17
  const scope = new Scope()
18
18
  ctx.acl = new AclManager(true).scope(scope)
19
19
  /**
20
+ * Call next method in the pipeline and return its output
20
21
  * Call next method in the pipeline and return its output
21
22
  */
22
23
  const output = await next()
@@ -8,7 +8,30 @@ import config from '@adonisjs/core/services/config'
8
8
 
9
9
  export default class extends BaseSchema {
10
10
  async up() {
11
- this.schema.createTable('permissions', (table) => {
11
+ this.schema.createTable(
12
+ config.get('permissions.permissionsConfig.tables.permissions'),
13
+ (table) => {
14
+ this.primaryKey(table, 'id')
15
+
16
+ table.string('slug')
17
+ table.string('title').nullable()
18
+ table.string('entity_type').defaultTo('*')
19
+ this.modelId(table, 'entity_id').nullable()
20
+ table.string('scope').defaultTo('default')
21
+ table.boolean('allowed').defaultTo(true)
22
+
23
+ /**
24
+ * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL
25
+ */
26
+ table.timestamp('created_at', { useTz: true })
27
+ table.timestamp('updated_at', { useTz: true })
28
+
29
+ table.index(['scope', 'slug'])
30
+ table.index(['entity_type', 'entity_id'])
31
+ }
32
+ )
33
+
34
+ this.schema.createTable(config.get('permissions.permissionsConfig.tables.roles'), (table) => {
12
35
  this.primaryKey(table, 'id')
13
36
 
14
37
  table.string('slug')
@@ -28,61 +51,53 @@ export default class extends BaseSchema {
28
51
  table.index(['entity_type', 'entity_id'])
29
52
  })
30
53
 
31
- this.schema.createTable('roles', (table) => {
32
- this.primaryKey(table, 'id')
33
-
34
- table.string('slug')
35
- table.string('title').nullable()
36
- table.string('entity_type').defaultTo('*')
37
- this.modelId(table, 'entity_id').nullable()
38
- table.string('scope').defaultTo('default')
39
- table.boolean('allowed').defaultTo(true)
40
-
41
- /**
42
- * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL
43
- */
44
- table.timestamp('created_at', { useTz: true })
45
- table.timestamp('updated_at', { useTz: true })
46
-
47
- table.index(['scope', 'slug'])
48
- table.index(['entity_type', 'entity_id'])
49
- })
50
-
51
- this.schema.createTable('model_roles', (table) => {
52
- table.bigIncrements('id')
53
-
54
- table.string('model_type')
55
- this.modelId(table, 'model_id')
56
- this.modelId(table, 'role_id')
57
-
58
- /**
59
- * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL
60
- */
61
- table.timestamp('created_at', { useTz: true })
62
- table.timestamp('updated_at', { useTz: true })
63
-
64
- table.index(['model_type', 'model_id'])
65
-
66
- table.foreign('role_id').references('roles.id').onDelete('CASCADE')
67
- })
68
-
69
- this.schema.createTable('model_permissions', (table) => {
70
- table.bigIncrements('id')
71
-
72
- table.string('model_type')
73
- this.modelId(table, 'model_id')
74
- this.modelId(table, 'permission_id')
75
-
76
- /**
77
- * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL
78
- */
79
- table.timestamp('created_at', { useTz: true })
80
- table.timestamp('updated_at', { useTz: true })
81
-
82
- table.index(['model_type', 'model_id'])
83
-
84
- table.foreign('permission_id').references('permissions.id').onDelete('CASCADE')
85
- })
54
+ this.schema.createTable(
55
+ config.get('permissions.permissionsConfig.tables.modelRoles'),
56
+ (table) => {
57
+ table.bigIncrements('id')
58
+
59
+ table.string('model_type')
60
+ this.modelId(table, 'model_id')
61
+ this.modelId(table, 'role_id')
62
+
63
+ /**
64
+ * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL
65
+ */
66
+ table.timestamp('created_at', { useTz: true })
67
+ table.timestamp('updated_at', { useTz: true })
68
+
69
+ table.index(['model_type', 'model_id'])
70
+
71
+ table
72
+ .foreign('role_id')
73
+ .references(config.get('permissions.permissionsConfig.tables.roles') + '.id')
74
+ .onDelete('CASCADE')
75
+ }
76
+ )
77
+
78
+ this.schema.createTable(
79
+ config.get('permissions.permissionsConfig.tables.modelPermissions'),
80
+ (table) => {
81
+ table.bigIncrements('id')
82
+
83
+ table.string('model_type')
84
+ this.modelId(table, 'model_id')
85
+ this.modelId(table, 'permission_id')
86
+
87
+ /**
88
+ * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL
89
+ */
90
+ table.timestamp('created_at', { useTz: true })
91
+ table.timestamp('updated_at', { useTz: true })
92
+
93
+ table.index(['model_type', 'model_id'])
94
+
95
+ table
96
+ .foreign('permission_id')
97
+ .references(config.get('permissions.permissionsConfig.tables.permissions') + '.id')
98
+ .onDelete('CASCADE')
99
+ }
100
+ )
86
101
  }
87
102
 
88
103
  async down() {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@holoyan/adonisjs-permissions",
3
3
  "description": "Adonisjs roles and permissions system",
4
- "version": "0.8.21",
4
+ "version": "0.9.0",
5
5
  "engines": {
6
6
  "node": ">=18.16.0"
7
7
  },
@@ -18,7 +18,8 @@
18
18
  "exports": {
19
19
  ".": "./build/index.js",
20
20
  "./role_permission_provider": "./build/providers/role_permission_provider.js",
21
- "./types": "./build/src/types.js"
21
+ "./types": "./build/src/types.js",
22
+ "./events": "./build/src/events/index.js"
22
23
  },
23
24
  "scripts": {
24
25
  "clean": "del-cli build",
@@ -1,65 +0,0 @@
1
- import { AclModel, MorphInterface, OptionsInterface } from '../types.js';
2
- import RolesService from './roles/roles_service.js';
3
- import BaseAdapter from './base_adapter.js';
4
- import ModelManager from '../model_manager.js';
5
- import PermissionService from './permissions/permissions_service.js';
6
- export declare class ModelHasRolePermissions extends BaseAdapter {
7
- protected manager: ModelManager;
8
- protected map: MorphInterface;
9
- protected options: OptionsInterface;
10
- private model;
11
- protected roleService: RolesService;
12
- protected permissionService: PermissionService;
13
- constructor(manager: ModelManager, map: MorphInterface, options: OptionsInterface, model: AclModel);
14
- roles(): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("../types.js").RoleModel<import("@adonisjs/lucid/types/model").LucidModel>>;
15
- hasRole(role: string): Promise<boolean>;
16
- hasAllRoles(...roles: string[]): Promise<boolean>;
17
- hasAnyRole(...roles: string[]): Promise<boolean>;
18
- assignRole(role: string): Promise<boolean>;
19
- assign(role: string): Promise<boolean>;
20
- assignAllRoles(...roles: string[]): Promise<boolean>;
21
- revokeRole(role: string): Promise<boolean>;
22
- revokeAllRoles(...roles: string[]): Promise<boolean>;
23
- flushRoles(): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, any>;
24
- permissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
25
- globalPermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
26
- onResourcePermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
27
- directPermissions(includeForbiddings?: boolean): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>>;
28
- /**
29
- * Get permission through roles
30
- * @param includeForbiddings
31
- */
32
- rolePermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
33
- directGlobalPermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
34
- directResourcePermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
35
- containsPermission(permission: string): Promise<boolean>;
36
- contains(permission: string): Promise<boolean>;
37
- containsAllPermissions(permissions: string[]): Promise<boolean>;
38
- containsAnyPermission(permissions: string[]): Promise<boolean>;
39
- containsDirectPermission(permission: string): Promise<boolean>;
40
- containsAllPermissionsDirectly(permissions: string[]): Promise<boolean>;
41
- containsAnyPermissionDirectly(permissions: string[]): Promise<boolean>;
42
- hasPermission(permission: string, target?: AclModel | Function): Promise<boolean>;
43
- hasAllPermissions(permissions: string[], target?: AclModel | Function): Promise<boolean>;
44
- hasAnyPermission(permissions: string[], target?: AclModel | Function): Promise<boolean>;
45
- hasAnyDirectPermission(permissions: string[], target?: AclModel | Function): Promise<boolean>;
46
- hasDirectPermission(permission: string, target?: AclModel | Function): Promise<boolean>;
47
- hasAllPermissionsDirect(permissions: string[], target?: AclModel | Function): Promise<boolean>;
48
- can(permission: string, target?: AclModel | Function): Promise<boolean>;
49
- canAll(permissions: string[], target?: AclModel | Function): Promise<boolean>;
50
- canAny(permissions: string[], target?: AclModel | Function): Promise<boolean>;
51
- assignDirectPermission(permission: string, target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
52
- assignDirectAllPermissions(permissions: string[], target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
53
- allow(permission: string, target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
54
- allowAll(permission: string[], target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
55
- revokePermission(permission: string, target?: AclModel | Function): Promise<any[]>;
56
- revoke(permission: string, target?: AclModel | Function): Promise<any[]>;
57
- revokeAll(permissions: string[], target?: AclModel | Function): Promise<any[]>;
58
- revokeAllPermissions(permissions: string[], target?: AclModel | Function): Promise<any[]>;
59
- flushPermissions(): Promise<any[]>;
60
- flush(): Promise<boolean>;
61
- forbid(permission: string, target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
62
- forbidAll(permissions: string[], target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
63
- unforbidAll(permissions: string[], target?: AclModel | Function): Promise<any[]>;
64
- unforbid(permission: string, target?: AclModel | Function): Promise<any[]>;
65
- }