@holoyan/adonisjs-permissions 0.8.21 → 0.8.23
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.
- package/README.md +144 -2
- package/build/src/acl.d.ts +1 -1
- package/build/src/acl.js +1 -1
- package/build/src/decorators.d.ts +3 -1
- package/build/src/mixins/has_permissions.d.ts +236 -67
- package/build/src/mixins/has_permissions.js +199 -23
- package/build/src/services/{model_has_role_permissions.d.ts → models/model_has_role_permissions.d.ts} +41 -13
- package/build/src/services/{model_has_role_permissions.js → models/model_has_role_permissions.js} +42 -4
- package/build/src/services/{model_service.d.ts → models/model_service.d.ts} +4 -4
- package/build/src/services/{model_service.js → models/model_service.js} +2 -2
- package/build/src/services/permissions/permission_has_model_roles.d.ts +1 -1
- package/build/src/services/permissions/permission_has_model_roles.js +1 -1
- package/build/src/services/roles/role_has_model_permissions.d.ts +7 -1
- package/build/src/services/roles/role_has_model_permissions.js +10 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
[//]: # ([](https://github.com/holoyan/adonisjs-permissions/actions/workflows/test.yml))
|
|
4
4
|
[](https://github.com/holoyan/adonisjs-permissions/blob/master/LICENSE.md)
|
|
5
5
|
|
|
6
|
+
## How can you support me?
|
|
7
|
+
|
|
8
|
+
- It's simple, just star this repository, that is enough to keep me motivated to maintain this package.
|
|
9
|
+
|
|
10
|
+
|
|
6
11
|
## Table of Contents
|
|
7
12
|
|
|
8
13
|
<details><summary>Click to expand</summary><p>
|
|
@@ -128,7 +133,7 @@ export default class Post extends BaseModel implements AclModelInterface {
|
|
|
128
133
|
## Release Notes
|
|
129
134
|
|
|
130
135
|
Version: >= 'v0.8.21'
|
|
131
|
-
*
|
|
136
|
+
* Added `sync` methods
|
|
132
137
|
|
|
133
138
|
## Mixins
|
|
134
139
|
|
|
@@ -984,7 +989,144 @@ await trx.commit()
|
|
|
984
989
|
|
|
985
990
|
## Cheat sheet
|
|
986
991
|
|
|
987
|
-
|
|
992
|
+
Model methods
|
|
993
|
+
```typescript
|
|
994
|
+
// getting model roles
|
|
995
|
+
await Acl.model(user).roles()
|
|
996
|
+
|
|
997
|
+
// Checking the current model's roles
|
|
998
|
+
await Acl.model(user).hasRole('role_slug')
|
|
999
|
+
await Acl.model(user).hasAllRoles('role_slug1', 'role_slug2')
|
|
1000
|
+
await Acl.model(user).hasAnyRole('role_slug1', 'role_slug2')
|
|
1001
|
+
|
|
1002
|
+
// assigning roles
|
|
1003
|
+
await Acl.model(user).assignRole('role_slug')
|
|
1004
|
+
await Acl.model(user).assign('role_slug') // alias for assignRole()
|
|
1005
|
+
await Acl.model(user).assignAllRoles('role_slug1', 'role_slug2')
|
|
1006
|
+
|
|
1007
|
+
// revoking roles
|
|
1008
|
+
await Acl.model(user).revokeRole('role_slug')
|
|
1009
|
+
await Acl.model(user).revokeAllRoles('role_slug1', 'role_slug2')
|
|
1010
|
+
await Acl.model(user).flushRoles() // remove all roles
|
|
1011
|
+
|
|
1012
|
+
// syncing roles
|
|
1013
|
+
await Acl.model(user).syncRoles(['role_slug1', 'role_slug2']) // remove all roles and assign new
|
|
1014
|
+
await Acl.model(user).syncRolesWithoutDetaching(['role_slug1', 'role_slug2') // assign new roles without removing old
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
// getting model permissions
|
|
1018
|
+
|
|
1019
|
+
await Acl.model(user).permissions()
|
|
1020
|
+
await Acl.model(user).globalPermissions() // get list of global permissions
|
|
1021
|
+
await Acl.mode(user).onResourcePermissions() // get list of on resrouce permissions
|
|
1022
|
+
await Acl.model(user).directPermissions() // list of permissions assigned to the user drectly
|
|
1023
|
+
await Acl.model(user).rolePermissions() // Get permissions through roles
|
|
1024
|
+
await Acl.model(user).directGlobalPermissions()
|
|
1025
|
+
await Acl.model(user).directResourcePermissions()
|
|
1026
|
+
|
|
1027
|
+
// checking for permission
|
|
1028
|
+
await Acl.model(user).hasPermission(permission)
|
|
1029
|
+
await Acl.model(user).hasAllPermissions([permission1, permission2])
|
|
1030
|
+
await Acl.model(user).hasAnyPermission([permission1, permission2])
|
|
1031
|
+
await Acl.model(user).hasAnyDirectPermission([permission1, permission2])
|
|
1032
|
+
await Acl.model(user).hasDirectPermission(permission1)
|
|
1033
|
+
await Acl.model(user).hasAllPermissionsDirect([permission1, permission2])
|
|
1034
|
+
await Acl.model(user).can(permission1) // alias for hasPermission()
|
|
1035
|
+
await Acl.model(user).canAll([permission1, permission2])
|
|
1036
|
+
await Acl.model(user).canAny([permission1, permission2])
|
|
1037
|
+
|
|
1038
|
+
// check Contains vs hasPermission section to see the diferrence
|
|
1039
|
+
await Acl.model(user).containsPermission(permission)
|
|
1040
|
+
await Acl.model(user).contains(permission) // alias for containsPermission
|
|
1041
|
+
await Acl.model(user).containsAllPermissions([permission1])
|
|
1042
|
+
await Acl.model(user).containsAnyPermission([permission1])
|
|
1043
|
+
await Acl.model(user).containsDirectPermission([permission1])
|
|
1044
|
+
await Acl.model(user).containsAllPermissionsDirectly([permission1])
|
|
1045
|
+
await Acl.model(user).containsAnyPermissionDirectly([permission1])
|
|
1046
|
+
|
|
1047
|
+
// assigning permissions
|
|
1048
|
+
await Acl.model(user).assignDirectPermission(permission)
|
|
1049
|
+
await Acl.model(user).assignDirectAllPermissions([permission1, permission2])
|
|
1050
|
+
await Acl.model(user).allow(permission1) // alias for assignDirectPermission()
|
|
1051
|
+
await Acl.model(user).allowAll([permission1, permission2])
|
|
1052
|
+
|
|
1053
|
+
// reviking permissions
|
|
1054
|
+
await Acl.model(user).revokePermission(permission1)
|
|
1055
|
+
await Acl.model(user).revoke(permission1) // alias for revokePermission()
|
|
1056
|
+
await Acl.model(user).revokeAllPermissions([permission1, permission2])
|
|
1057
|
+
await Acl.model(user).revokeAll([permission1, permission2]) // alias for revokeAllPermissions()
|
|
1058
|
+
await Acl.model(user).flushPermissions() // revoke/delete all direct assigned permissions
|
|
1059
|
+
await Acl.model(user).flush() // revoke/delete all assigned roles and permissions
|
|
1060
|
+
|
|
1061
|
+
// sync permissions
|
|
1062
|
+
await Acl.model(user).syncPermissions([permission1, permission2]) // all direct assigned permissions will be revoked and only permission1, permission2 will be assigned
|
|
1063
|
+
|
|
1064
|
+
// forbid/unforbiding permissions
|
|
1065
|
+
await Acl.model(user).forbid(permission1)
|
|
1066
|
+
await Acl.model(user).forbidAll([permission1, permission2])
|
|
1067
|
+
await Acl.model(user).unforbid(permission1)
|
|
1068
|
+
await Acl.model(user).unforbidAll([permission1, permission2])
|
|
1069
|
+
|
|
1070
|
+
```
|
|
1071
|
+
|
|
1072
|
+
Role methods
|
|
1073
|
+
|
|
1074
|
+
```typescript
|
|
1075
|
+
|
|
1076
|
+
await Acl.role(myAdminRole).models() // get list of models assigned to the role
|
|
1077
|
+
await Acl.role(myAdminRole).modelsFor('ALIAS_FOR_MODEL')
|
|
1078
|
+
|
|
1079
|
+
await Acl.role(myAdminRole).permissions()
|
|
1080
|
+
await Acl.role(myAdminRole).globalPermissions()
|
|
1081
|
+
await Acl.role(myAdminRole).onResourcePermissions()
|
|
1082
|
+
|
|
1083
|
+
// checking for a permissions
|
|
1084
|
+
await Acl.role(myAdminRole).hasPermission(permission)
|
|
1085
|
+
await Acl.role(myAdminRole).hasAllPermissions([permission1, permission2])
|
|
1086
|
+
await Acl.role(myAdminRole).hasAnyPermissions([permission1, permission2])
|
|
1087
|
+
await Acl.role(myAdminRole).can(permission) // alias for hasPermission
|
|
1088
|
+
await Acl.role(myAdminRole).canAll([permission1, permission2])
|
|
1089
|
+
await Acl.role(myAdminRole).canAny([permission1, permission2])
|
|
1090
|
+
|
|
1091
|
+
await Acl.role(myAdminRole).containsPermission(permission)
|
|
1092
|
+
await Acl.role(myAdminRole).containsAllPermissions([permission1, permission2])
|
|
1093
|
+
await Acl.role(myAdminRole).containsAnyPermissions([permission1, permission2])
|
|
1094
|
+
await Acl.role(myAdminRole).forbidden(permission) // check if permission forbidden for a role
|
|
1095
|
+
|
|
1096
|
+
// assigning permission
|
|
1097
|
+
await Acl.role(myAdminRole).give(permission)
|
|
1098
|
+
await Acl.role(myAdminRole).assign(permission) // alias for give()
|
|
1099
|
+
await Acl.role(myAdminRole).allow(permission) // alias for give()
|
|
1100
|
+
|
|
1101
|
+
await Acl.role(myAdminRole).giveAll([permission1])
|
|
1102
|
+
await Acl.role(myAdminRole).assignAll([permission1])
|
|
1103
|
+
await Acl.role(myAdminRole).allowAll([permission1])
|
|
1104
|
+
|
|
1105
|
+
// revoking permission
|
|
1106
|
+
await Acl.role(myAdminRole).revokePermission(permission1)
|
|
1107
|
+
await Acl.role(myAdminRole).revoke(permission1) // alias for revokePermission()
|
|
1108
|
+
await Acl.role(myAdminRole).revokeAllPermissions([permission1])
|
|
1109
|
+
await Acl.role(myAdminRole).revokeAll([permission1]) // alias for revokeAllPermissions()
|
|
1110
|
+
await Acl.role(myAdminRole).flush() // revoke all
|
|
1111
|
+
|
|
1112
|
+
await Acl.role(myAdminRole).sync([permission1, permission2]) // revoke all and assign only permission1, permission2
|
|
1113
|
+
|
|
1114
|
+
// forbid/unforbid
|
|
1115
|
+
|
|
1116
|
+
await Acl.role(myAdminRole).forbid(permission)
|
|
1117
|
+
await Acl.role(myAdminRole).unforbid(permission)
|
|
1118
|
+
|
|
1119
|
+
```
|
|
1120
|
+
|
|
1121
|
+
Permission methods
|
|
1122
|
+
```typescript
|
|
1123
|
+
await Acl.permission(myPermission).roles() // list of roles
|
|
1124
|
+
await Acl.permission(myPermission).modelsFor('MODEL_ALIAS')
|
|
1125
|
+
await Acl.permission(myPermission).belongsToRole(role_slug) // check if permission belongs to role
|
|
1126
|
+
await Acl.permission(myPermission).attachToRole(role_slug)
|
|
1127
|
+
await Acl.permission(myPermission).detachFromRole(role_slug)
|
|
1128
|
+
|
|
1129
|
+
```
|
|
988
1130
|
|
|
989
1131
|
|
|
990
1132
|
## TODO
|
package/build/src/acl.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RoleHasModelPermissions } from './services/roles/role_has_model_permissions.js';
|
|
2
|
-
import { ModelHasRolePermissions } from './services/model_has_role_permissions.js';
|
|
2
|
+
import { ModelHasRolePermissions } from './services/models/model_has_role_permissions.js';
|
|
3
3
|
import { AclModel, MorphInterface, OptionsInterface, PermissionInterface, RoleInterface, ScopeInterface } from './types.js';
|
|
4
4
|
import ModelManager from './model_manager.js';
|
|
5
5
|
import EmptyPermission from './services/permissions/empty_permission.js';
|
package/build/src/acl.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RoleHasModelPermissions } from './services/roles/role_has_model_permissions.js';
|
|
2
|
-
import { ModelHasRolePermissions } from './services/model_has_role_permissions.js';
|
|
2
|
+
import { ModelHasRolePermissions } from './services/models/model_has_role_permissions.js';
|
|
3
3
|
import PermissionHasModelRoles from './services/permissions/permission_has_model_roles.js';
|
|
4
4
|
import ModelManager from './model_manager.js';
|
|
5
5
|
import EmptyPermission from './services/permissions/empty_permission.js';
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export declare function MorphMap(param: string): <T extends
|
|
1
|
+
export declare function MorphMap(param: string): <T extends {
|
|
2
|
+
new (...args: any[]): {};
|
|
3
|
+
}>(target: T) => void;
|
|
2
4
|
export declare function getClassPath<T extends {
|
|
3
5
|
new (...args: any[]): {};
|
|
4
6
|
}>(clazz: T): string;
|
|
@@ -1,43 +1,214 @@
|
|
|
1
1
|
import type { NormalizeConstructor } from '@adonisjs/core/types/helpers';
|
|
2
|
+
import { BaseModel } from '@adonisjs/lucid/orm';
|
|
2
3
|
import { AclModel, ModelIdType } from '../types.js';
|
|
3
|
-
export declare function hasPermissions(): <Model extends NormalizeConstructor<
|
|
4
|
+
export declare function hasPermissions(): <Model extends NormalizeConstructor<typeof BaseModel>>(superclass: Model) => {
|
|
4
5
|
new (...args: any[]): {
|
|
5
6
|
getModelId(): ModelIdType;
|
|
7
|
+
/**
|
|
8
|
+
* returns list of roles assigned to the model
|
|
9
|
+
*/
|
|
6
10
|
roles(): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("../types.js").RoleModel<import("@adonisjs/lucid/types/model").LucidModel>>;
|
|
11
|
+
/**
|
|
12
|
+
* Check if model has role
|
|
13
|
+
* @param role
|
|
14
|
+
*/
|
|
7
15
|
hasRole(role: string): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Check if model has all roles - returns true ONLY, if model has all roles
|
|
18
|
+
* @param roles
|
|
19
|
+
*/
|
|
8
20
|
hasAllRoles(...roles: string[]): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Check if model has any role - returns true if model has any of the roles
|
|
23
|
+
* @param roles
|
|
24
|
+
*/
|
|
9
25
|
hasAnyRole(...roles: string[]): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Assign role to model
|
|
28
|
+
* @param role
|
|
29
|
+
*/
|
|
10
30
|
assignRole(role: string): Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Revoke role from model
|
|
33
|
+
* @param role
|
|
34
|
+
*/
|
|
11
35
|
revokeRole(role: string): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Revoke all roles from model
|
|
38
|
+
* @param roles
|
|
39
|
+
*/
|
|
12
40
|
revokeAllRoles(...roles: string[]): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* returns list of permissions assigned to the model
|
|
43
|
+
* @param includeForbiddings
|
|
44
|
+
*/
|
|
13
45
|
permissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
46
|
+
/**
|
|
47
|
+
* returns list of global permissions assigned to the model
|
|
48
|
+
* @param includeForbiddings
|
|
49
|
+
*/
|
|
14
50
|
globalPermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
51
|
+
/**
|
|
52
|
+
* returns list of resource permissions assigned to the model
|
|
53
|
+
* @param includeForbiddings
|
|
54
|
+
*/
|
|
15
55
|
onResourcePermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Returns list of direct permissions assigned to the model
|
|
58
|
+
* @param includeForbiddings
|
|
59
|
+
*/
|
|
16
60
|
directGlobalPermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Returns list of direct resource permissions assigned to the model
|
|
63
|
+
* @param includeForbiddings
|
|
64
|
+
*/
|
|
17
65
|
directResourcePermissions(includeForbiddings?: boolean): Promise<import("../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Check if model has "contains" permission
|
|
68
|
+
* If permission is forbidden, it will return true
|
|
69
|
+
* @param permission
|
|
70
|
+
*/
|
|
18
71
|
containsPermission(permission: string): Promise<boolean>;
|
|
72
|
+
/**
|
|
73
|
+
* Check if model contains all permissions
|
|
74
|
+
* @param permissions
|
|
75
|
+
*/
|
|
19
76
|
containsAllPermissions(permissions: string[]): Promise<boolean>;
|
|
77
|
+
/**
|
|
78
|
+
* Check if model contains any permission
|
|
79
|
+
* @param permissions
|
|
80
|
+
*/
|
|
20
81
|
containsAnyPermission(permissions: string[]): Promise<boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* Check if model contains direct permission
|
|
84
|
+
* @param permission
|
|
85
|
+
*/
|
|
21
86
|
containsDirectPermission(permission: string): Promise<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Check if model contains all direct permissions
|
|
89
|
+
* @param permissions
|
|
90
|
+
*/
|
|
22
91
|
containsAllPermissionsDirectly(permissions: string[]): Promise<boolean>;
|
|
92
|
+
/**
|
|
93
|
+
* Check if model contains any direct permission
|
|
94
|
+
* @param permissions
|
|
95
|
+
*/
|
|
23
96
|
containsAnyPermissionDirectly(permissions: string[]): Promise<boolean>;
|
|
97
|
+
/**
|
|
98
|
+
* Check if model has permission
|
|
99
|
+
* @param permission
|
|
100
|
+
* @param target
|
|
101
|
+
*/
|
|
24
102
|
hasPermission(permission: string, target?: AclModel | Function): Promise<boolean>;
|
|
103
|
+
/**
|
|
104
|
+
* Check if model has all permissions
|
|
105
|
+
* @param permissions
|
|
106
|
+
* @param target
|
|
107
|
+
*/
|
|
25
108
|
hasAllPermissions(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
109
|
+
/**
|
|
110
|
+
* Check if model has any permission
|
|
111
|
+
* @param permissions
|
|
112
|
+
* @param target
|
|
113
|
+
*/
|
|
26
114
|
hasAnyPermission(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
115
|
+
/**
|
|
116
|
+
* Check if model has direct permission
|
|
117
|
+
* @param permissions
|
|
118
|
+
* @param target
|
|
119
|
+
*/
|
|
27
120
|
hasAnyDirectPermission(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
121
|
+
/**
|
|
122
|
+
* Check if model has direct permission
|
|
123
|
+
* @param permission
|
|
124
|
+
* @param target
|
|
125
|
+
*/
|
|
28
126
|
hasDirectPermission(permission: string, target?: AclModel | Function): Promise<boolean>;
|
|
127
|
+
/**
|
|
128
|
+
* Check if model has all direct permissions
|
|
129
|
+
* @param permissions
|
|
130
|
+
* @param target
|
|
131
|
+
*/
|
|
29
132
|
hasAllPermissionsDirect(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
133
|
+
/**
|
|
134
|
+
* Check if model has all permission
|
|
135
|
+
* @param permissions
|
|
136
|
+
* @param target
|
|
137
|
+
*/
|
|
30
138
|
canAll(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
31
139
|
canAny(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
140
|
+
/**
|
|
141
|
+
* Check if model has any permission
|
|
142
|
+
* @param permission
|
|
143
|
+
* @param target
|
|
144
|
+
*/
|
|
32
145
|
assignDirectPermission(permission: string, target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
146
|
+
/**
|
|
147
|
+
* Allow permission for model
|
|
148
|
+
* @param permission
|
|
149
|
+
* @param target
|
|
150
|
+
*/
|
|
33
151
|
allow(permission: string, target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
152
|
+
/**
|
|
153
|
+
* Revoke permission from model
|
|
154
|
+
* @param permission
|
|
155
|
+
* @param target
|
|
156
|
+
*/
|
|
34
157
|
revokePermission(permission: string, target?: AclModel | Function): Promise<any[]>;
|
|
158
|
+
/**
|
|
159
|
+
* Revoke all permissions from model
|
|
160
|
+
* @param permissions
|
|
161
|
+
* @param target
|
|
162
|
+
*/
|
|
35
163
|
revokeAllPermissions(permissions: string[], target?: AclModel | Function): Promise<any[]>;
|
|
164
|
+
/**
|
|
165
|
+
* Flush(revoke all) permissions from model
|
|
166
|
+
*/
|
|
36
167
|
flushPermissions(): Promise<any[]>;
|
|
168
|
+
/**
|
|
169
|
+
* Flush(revoke all) roles and permissions from model
|
|
170
|
+
*/
|
|
37
171
|
flush(): Promise<boolean>;
|
|
172
|
+
/**
|
|
173
|
+
* Sync Role with the given list
|
|
174
|
+
* @param roles
|
|
175
|
+
* @param detach
|
|
176
|
+
*/
|
|
177
|
+
syncRoles(roles: string[], detach?: boolean): Promise<boolean>;
|
|
178
|
+
/**
|
|
179
|
+
* Sync Role with the given list without detaching existing roles
|
|
180
|
+
* @param roles
|
|
181
|
+
*/
|
|
182
|
+
syncRolesWithoutDetaching(roles: string[]): Promise<boolean>;
|
|
183
|
+
/**
|
|
184
|
+
* Sync permissions with the given list
|
|
185
|
+
* @param permissions
|
|
186
|
+
* @param target
|
|
187
|
+
*/
|
|
188
|
+
syncPermissions(permissions: string[], target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
189
|
+
/**
|
|
190
|
+
* Forbid permission for model
|
|
191
|
+
* @param permission
|
|
192
|
+
* @param target
|
|
193
|
+
*/
|
|
38
194
|
forbid(permission: string, target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
195
|
+
/**
|
|
196
|
+
* Forbid all permissions for model
|
|
197
|
+
* @param permissions
|
|
198
|
+
* @param target
|
|
199
|
+
*/
|
|
39
200
|
forbidAll(permissions: string[], target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
201
|
+
/**
|
|
202
|
+
* Unforbid all permissions for model
|
|
203
|
+
* @param permissions
|
|
204
|
+
* @param target
|
|
205
|
+
*/
|
|
40
206
|
unforbidAll(permissions: string[], target?: AclModel | Function): Promise<any[]>;
|
|
207
|
+
/**
|
|
208
|
+
* Unforbid permission for model
|
|
209
|
+
* @param permission
|
|
210
|
+
* @param target
|
|
211
|
+
*/
|
|
41
212
|
unforbid(permission: string, target?: AclModel | Function): Promise<any[]>;
|
|
42
213
|
$attributes: import("@adonisjs/lucid/types/model").ModelObject;
|
|
43
214
|
$extras: import("@adonisjs/lucid/types/model").ModelObject;
|
|
@@ -47,59 +218,56 @@ export declare function hasPermissions(): <Model extends NormalizeConstructor<im
|
|
|
47
218
|
};
|
|
48
219
|
$columns: undefined;
|
|
49
220
|
$sideloaded: import("@adonisjs/lucid/types/model").ModelObject;
|
|
50
|
-
$primaryKeyValue?:
|
|
221
|
+
$primaryKeyValue?: number | string;
|
|
51
222
|
$isPersisted: boolean;
|
|
52
223
|
$isNew: boolean;
|
|
53
224
|
$isLocal: boolean;
|
|
54
225
|
$dirty: import("@adonisjs/lucid/types/model").ModelObject;
|
|
55
226
|
$isDirty: boolean;
|
|
56
227
|
$isDeleted: boolean;
|
|
57
|
-
$options?: import("@adonisjs/lucid/types/model").ModelOptions
|
|
58
|
-
$trx?: import("@adonisjs/lucid/types/database").TransactionClientContract
|
|
59
|
-
$setOptionsAndTrx(options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions
|
|
60
|
-
useTransaction(trx: import("@adonisjs/lucid/types/database").TransactionClientContract): any;
|
|
61
|
-
useConnection(connection: string): any;
|
|
62
|
-
$getQueryFor(action: "insert", client: import("@adonisjs/lucid/types/database").QueryClientContract): import("@adonisjs/lucid/types/
|
|
63
|
-
$getQueryFor(action: "
|
|
228
|
+
$options?: import("@adonisjs/lucid/types/model").ModelOptions;
|
|
229
|
+
$trx?: import("@adonisjs/lucid/types/database").TransactionClientContract;
|
|
230
|
+
$setOptionsAndTrx(options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): void;
|
|
231
|
+
useTransaction(trx: import("@adonisjs/lucid/types/database").TransactionClientContract): /*elided*/ any;
|
|
232
|
+
useConnection(connection: string): /*elided*/ any;
|
|
233
|
+
$getQueryFor(action: "insert", client: import("@adonisjs/lucid/types/database").QueryClientContract): ReturnType<import("@adonisjs/lucid/types/database").QueryClientContract["insertQuery"]>;
|
|
234
|
+
$getQueryFor(action: "update" | "delete" | "refresh", client: import("@adonisjs/lucid/types/database").QueryClientContract): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel>;
|
|
64
235
|
$setAttribute(key: string, value: any): void;
|
|
65
236
|
$getAttribute(key: string): any;
|
|
66
|
-
$getAttributeFromCache(key: string, callback: (
|
|
237
|
+
$getAttributeFromCache(key: string, callback: import("@adonisjs/lucid/types/model").CacheNode["getter"]): any;
|
|
67
238
|
$hasRelated(key: string): boolean;
|
|
68
239
|
$setRelated(key: string, result: import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | null): void;
|
|
69
240
|
$pushRelated(key: string, result: import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | null): void;
|
|
70
|
-
$getRelated(key: string, defaultValue?: any): import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> |
|
|
71
|
-
$consumeAdapterResult(adapterResult: import("@adonisjs/lucid/types/model").ModelObject, sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject
|
|
241
|
+
$getRelated(key: string, defaultValue?: any): import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | undefined | null;
|
|
242
|
+
$consumeAdapterResult(adapterResult: import("@adonisjs/lucid/types/model").ModelObject, sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject): void;
|
|
72
243
|
$hydrateOriginals(): void;
|
|
73
|
-
fill(value: Partial<{}>, allowExtraProperties?: boolean
|
|
74
|
-
merge(value: Partial<{}>, allowExtraProperties?: boolean
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
244
|
+
fill(value: Partial<{}>, allowExtraProperties?: boolean): /*elided*/ any;
|
|
245
|
+
merge(value: Partial<{}>, allowExtraProperties?: boolean): /*elided*/ any;
|
|
246
|
+
isDirty(fields?: undefined[] | undefined): boolean;
|
|
247
|
+
enableForceUpdate(): /*elided*/ any;
|
|
248
|
+
save(): Promise</*elided*/ any>;
|
|
249
|
+
lockForUpdate<T>(callback: (user: /*elided*/ any) => T | Promise<T>): Promise<T>;
|
|
78
250
|
delete(): Promise<void>;
|
|
79
|
-
refresh(): Promise
|
|
80
|
-
load: import("@adonisjs/lucid/types/model").LucidRowPreload
|
|
81
|
-
loadOnce: import("@adonisjs/lucid/types/model").LucidRowPreloadOnce
|
|
82
|
-
preload: import("@adonisjs/lucid/types/model").LucidRowPreload
|
|
83
|
-
loadAggregate: <Self extends any, Name extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<Self>, RelatedBuilder = Self[Name] extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? Self[Name]["subQuery"] : never>(name: Name, callback: (builder: RelatedBuilder) => void) => import("@adonisjs/lucid/types/model").LazyLoadAggregatesContract<Self>;
|
|
84
|
-
loadCount: <
|
|
85
|
-
serializeAttributes(fields?: import("@adonisjs/lucid/types/model").CherryPickFields
|
|
86
|
-
serializeComputed(fields?: import("@adonisjs/lucid/types/model").CherryPickFields
|
|
251
|
+
refresh(): Promise</*elided*/ any>;
|
|
252
|
+
load: import("@adonisjs/lucid/types/model").LucidRowPreload</*elided*/ any>;
|
|
253
|
+
loadOnce: import("@adonisjs/lucid/types/model").LucidRowPreloadOnce</*elided*/ any>;
|
|
254
|
+
preload: import("@adonisjs/lucid/types/model").LucidRowPreload</*elided*/ any>;
|
|
255
|
+
loadAggregate: <Self extends /*elided*/ any, Name extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<Self>, RelatedBuilder = Self[Name] extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? Self[Name]["subQuery"] : never>(name: Name, callback: (builder: RelatedBuilder) => void) => import("@adonisjs/lucid/types/model").LazyLoadAggregatesContract<Self>;
|
|
256
|
+
loadCount: <Self extends /*elided*/ any, Name_1 extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<Self>, RelatedBuilder_1 = Self[Name_1] extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? Self[Name_1]["subQuery"] : never>(name: Name_1, callback?: ((builder: RelatedBuilder_1) => void) | undefined) => import("@adonisjs/lucid/types/model").LazyLoadAggregatesContract<Self>;
|
|
257
|
+
serializeAttributes(fields?: import("@adonisjs/lucid/types/model").CherryPickFields, raw?: boolean): import("@adonisjs/lucid/types/model").ModelObject;
|
|
258
|
+
serializeComputed(fields?: import("@adonisjs/lucid/types/model").CherryPickFields): import("@adonisjs/lucid/types/model").ModelObject;
|
|
87
259
|
serializeRelations(fields: undefined, raw: true): {
|
|
88
260
|
[key: string]: import("@adonisjs/lucid/types/model").LucidRow | import("@adonisjs/lucid/types/model").LucidRow[];
|
|
89
261
|
};
|
|
90
|
-
serializeRelations(cherryPick:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
serializeRelations(cherryPick?: {
|
|
94
|
-
[relation: string]: import("@adonisjs/lucid/types/model").CherryPick;
|
|
95
|
-
} | undefined, raw?: boolean | undefined): import("@adonisjs/lucid/types/model").ModelObject;
|
|
96
|
-
serialize(cherryPick?: import("@adonisjs/lucid/types/model").CherryPick | undefined): import("@adonisjs/lucid/types/model").ModelObject;
|
|
262
|
+
serializeRelations(cherryPick: import("@adonisjs/lucid/types/model").CherryPick["relations"] | undefined, raw: false | undefined): import("@adonisjs/lucid/types/model").ModelObject;
|
|
263
|
+
serializeRelations(cherryPick?: import("@adonisjs/lucid/types/model").CherryPick["relations"], raw?: boolean): import("@adonisjs/lucid/types/model").ModelObject;
|
|
264
|
+
serialize(cherryPick?: import("@adonisjs/lucid/types/model").CherryPick): import("@adonisjs/lucid/types/model").ModelObject;
|
|
97
265
|
toObject(): import("@adonisjs/lucid/types/model").ModelObject;
|
|
98
266
|
toJSON(): import("@adonisjs/lucid/types/model").ModelObject;
|
|
99
|
-
related<Name_2 extends undefined>(relation: Name_2): any[Name_2] extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? any[Name_2]["client"] : never;
|
|
267
|
+
related<Name_2 extends undefined>(relation: Name_2): /*elided*/ any[Name_2] extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? /*elided*/ any[Name_2]["client"] : never;
|
|
100
268
|
};
|
|
101
|
-
find: <
|
|
102
|
-
all: <
|
|
269
|
+
find: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<null | InstanceType<T>>;
|
|
270
|
+
all: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>[]>;
|
|
103
271
|
namingStrategy: import("@adonisjs/lucid/types/model").NamingStrategyContract;
|
|
104
272
|
readonly booted: boolean;
|
|
105
273
|
$columnsDefinitions: Map<string, import("@adonisjs/lucid/types/model").ModelColumnOptions>;
|
|
@@ -120,56 +288,57 @@ export declare function hasPermissions(): <Model extends NormalizeConstructor<im
|
|
|
120
288
|
serializedToColumns: import("@adonisjs/lucid/types/model").ModelKeysContract;
|
|
121
289
|
serializedToAttributes: import("@adonisjs/lucid/types/model").ModelKeysContract;
|
|
122
290
|
};
|
|
123
|
-
$createFromAdapterResult: <
|
|
124
|
-
$createMultipleFromAdapterResult: <
|
|
291
|
+
$createFromAdapterResult: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, result?: import("@adonisjs/lucid/types/model").ModelObject, sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => null | InstanceType<T>;
|
|
292
|
+
$createMultipleFromAdapterResult: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, results: import("@adonisjs/lucid/types/model").ModelObject[], sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => InstanceType<T>[];
|
|
125
293
|
$addColumn: (name: string, options: Partial<import("@adonisjs/lucid/types/model").ColumnOptions>) => import("@adonisjs/lucid/types/model").ColumnOptions;
|
|
126
294
|
$hasColumn: (name: string) => boolean;
|
|
127
295
|
$getColumn: (name: string) => import("@adonisjs/lucid/types/model").ModelColumnOptions | undefined;
|
|
128
296
|
$addComputed: (name: string, options: Partial<import("@adonisjs/lucid/types/model").ComputedOptions>) => import("@adonisjs/lucid/types/model").ComputedOptions;
|
|
129
297
|
$hasComputed: (name: string) => boolean;
|
|
130
298
|
$getComputed: (name: string) => import("@adonisjs/lucid/types/model").ComputedOptions | undefined;
|
|
131
|
-
$addRelation: (name: string, type: "
|
|
299
|
+
$addRelation: (name: string, type: import("@adonisjs/lucid/types/relations").ModelRelationTypes["__opaque_type"], relatedModel: () => import("@adonisjs/lucid/types/model").LucidModel, options: import("@adonisjs/lucid/types/model").ModelRelationOptions) => void;
|
|
132
300
|
$hasRelation: (name: string) => boolean;
|
|
133
301
|
$getRelation: {
|
|
134
|
-
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel,
|
|
135
|
-
<
|
|
302
|
+
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel, Name_2 extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<InstanceType<Model_1>>>(this: Model_1, name: Name_2): InstanceType<Model_1>[Name_2] extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? InstanceType<Model_1>[Name_2]["client"]["relation"] : import("@adonisjs/lucid/types/relations").RelationshipsContract;
|
|
303
|
+
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model_1, name: string): import("@adonisjs/lucid/types/relations").RelationshipsContract;
|
|
136
304
|
};
|
|
137
|
-
$defineProperty: <
|
|
305
|
+
$defineProperty: <Model_1 extends import("@adonisjs/lucid/types/model").LucidModel, Prop extends keyof Model_1>(this: Model_1, propertyName: Prop, defaultValue: Model_1[Prop], strategy: "inherit" | "define" | ((value: Model_1[Prop]) => Model_1[Prop])) => void;
|
|
138
306
|
boot: () => void;
|
|
139
307
|
before: {
|
|
140
|
-
<
|
|
141
|
-
<
|
|
142
|
-
<
|
|
308
|
+
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel, Event extends "find" | "fetch">(this: Model_1, event: Event, handler: import("@adonisjs/lucid/types/model").HooksHandler<import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model_1>, Event>): void;
|
|
309
|
+
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model_1, event: "paginate", handler: import("@adonisjs/lucid/types/model").HooksHandler<[import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model_1>, import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model_1>], "paginate">): void;
|
|
310
|
+
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel, Event_1 extends import("@adonisjs/lucid/types/model").EventsList>(this: Model_1, event: Event_1, handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model_1>, Event_1>): void;
|
|
143
311
|
};
|
|
144
312
|
after: {
|
|
145
|
-
<
|
|
146
|
-
<
|
|
147
|
-
<
|
|
313
|
+
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model_1, event: "fetch", handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model_1>[], "fetch">): void;
|
|
314
|
+
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model_1, event: "paginate", handler: import("@adonisjs/lucid/types/model").HooksHandler<import("@adonisjs/lucid/types/model").ModelPaginatorContract<InstanceType<Model_1>>, "paginate">): void;
|
|
315
|
+
<Model_1 extends import("@adonisjs/lucid/types/model").LucidModel, Event_2 extends import("@adonisjs/lucid/types/model").EventsList>(this: Model_1, event: Event_2, handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model_1>, Event_2>): void;
|
|
148
316
|
};
|
|
149
|
-
create: <
|
|
150
|
-
createMany: <
|
|
151
|
-
findOrFail: <
|
|
317
|
+
create: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
|
|
318
|
+
createMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
|
|
319
|
+
findOrFail: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>>;
|
|
152
320
|
findBy: {
|
|
153
|
-
<
|
|
154
|
-
<
|
|
321
|
+
<T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<null | InstanceType<T>>;
|
|
322
|
+
<T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<null | InstanceType<T>>;
|
|
155
323
|
};
|
|
156
324
|
findByOrFail: {
|
|
157
|
-
<
|
|
158
|
-
<
|
|
325
|
+
<T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>>;
|
|
326
|
+
<T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>>;
|
|
159
327
|
};
|
|
160
328
|
findManyBy: {
|
|
161
|
-
<
|
|
162
|
-
<
|
|
329
|
+
<T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>[]>;
|
|
330
|
+
<T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>[]>;
|
|
163
331
|
};
|
|
164
|
-
first: <
|
|
165
|
-
firstOrFail: <
|
|
166
|
-
findMany: <
|
|
167
|
-
firstOrNew: <
|
|
168
|
-
firstOrCreate: <
|
|
169
|
-
updateOrCreate: <
|
|
170
|
-
fetchOrNewUpMany: <
|
|
171
|
-
fetchOrCreateMany: <
|
|
172
|
-
updateOrCreateMany: <
|
|
173
|
-
query: <
|
|
174
|
-
|
|
332
|
+
first: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<null | InstanceType<T>>;
|
|
333
|
+
firstOrFail: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>>;
|
|
334
|
+
findMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any[], options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>[]>;
|
|
335
|
+
firstOrNew: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, savePayload?: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
|
|
336
|
+
firstOrCreate: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, savePayload?: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
|
|
337
|
+
updateOrCreate: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, updatePayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
|
|
338
|
+
fetchOrNewUpMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
|
|
339
|
+
fetchOrCreateMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
|
|
340
|
+
updateOrCreateMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
|
|
341
|
+
query: <Model_1 extends import("@adonisjs/lucid/types/model").LucidModel, Result = InstanceType<Model_1>>(this: Model_1, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model_1, Result>;
|
|
342
|
+
transaction: import("@adonisjs/lucid/types/database").TransactionFn;
|
|
343
|
+
truncate: (cascade?: boolean) => Promise<void>;
|
|
175
344
|
} & Model;
|
|
@@ -5,114 +5,290 @@ export function hasPermissions() {
|
|
|
5
5
|
getModelId() {
|
|
6
6
|
throw new Error('method getModelId must be implemented in target model, which will return key for current object');
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* returns list of roles assigned to the model
|
|
10
|
+
*/
|
|
8
11
|
roles() {
|
|
9
12
|
return Acl.model(this).roles();
|
|
10
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Check if model has role
|
|
16
|
+
* @param role
|
|
17
|
+
*/
|
|
11
18
|
hasRole(role) {
|
|
12
19
|
return Acl.model(this).hasRole(role);
|
|
13
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if model has all roles - returns true ONLY, if model has all roles
|
|
23
|
+
* @param roles
|
|
24
|
+
*/
|
|
14
25
|
hasAllRoles(...roles) {
|
|
15
26
|
return Acl.model(this).hasAllRoles(...roles);
|
|
16
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if model has any role - returns true if model has any of the roles
|
|
30
|
+
* @param roles
|
|
31
|
+
*/
|
|
17
32
|
hasAnyRole(...roles) {
|
|
18
33
|
return Acl.model(this).hasAnyRole(...roles);
|
|
19
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Assign role to model
|
|
37
|
+
* @param role
|
|
38
|
+
*/
|
|
20
39
|
assignRole(role) {
|
|
21
40
|
return Acl.model(this).assignRole(role);
|
|
22
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Revoke role from model
|
|
44
|
+
* @param role
|
|
45
|
+
*/
|
|
23
46
|
revokeRole(role) {
|
|
24
47
|
return Acl.model(this).revokeRole(role);
|
|
25
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Revoke all roles from model
|
|
51
|
+
* @param roles
|
|
52
|
+
*/
|
|
26
53
|
revokeAllRoles(...roles) {
|
|
27
54
|
return Acl.model(this).revokeAllRoles(...roles);
|
|
28
55
|
}
|
|
29
56
|
// roles related section END
|
|
30
57
|
// permissions related section BEGIN
|
|
58
|
+
/**
|
|
59
|
+
* returns list of permissions assigned to the model
|
|
60
|
+
* @param includeForbiddings
|
|
61
|
+
*/
|
|
31
62
|
permissions(includeForbiddings = false) {
|
|
32
63
|
return Acl.model(this).permissions(includeForbiddings);
|
|
33
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* returns list of global permissions assigned to the model
|
|
67
|
+
* @param includeForbiddings
|
|
68
|
+
*/
|
|
34
69
|
globalPermissions(includeForbiddings = false) {
|
|
35
70
|
return Acl.model(this).globalPermissions(includeForbiddings);
|
|
36
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* returns list of resource permissions assigned to the model
|
|
74
|
+
* @param includeForbiddings
|
|
75
|
+
*/
|
|
37
76
|
async onResourcePermissions(includeForbiddings = false) {
|
|
38
77
|
return Acl.model(this).onResourcePermissions(includeForbiddings);
|
|
39
78
|
}
|
|
40
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Returns list of direct permissions assigned to the model
|
|
81
|
+
* @param includeForbiddings
|
|
82
|
+
*/
|
|
83
|
+
directGlobalPermissions(includeForbiddings = false) {
|
|
41
84
|
return Acl.model(this).directGlobalPermissions(includeForbiddings);
|
|
42
85
|
}
|
|
43
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Returns list of direct resource permissions assigned to the model
|
|
88
|
+
* @param includeForbiddings
|
|
89
|
+
*/
|
|
90
|
+
directResourcePermissions(includeForbiddings = false) {
|
|
44
91
|
return Acl.model(this).directResourcePermissions(includeForbiddings);
|
|
45
92
|
}
|
|
46
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Check if model has "contains" permission
|
|
95
|
+
* If permission is forbidden, it will return true
|
|
96
|
+
* @param permission
|
|
97
|
+
*/
|
|
98
|
+
containsPermission(permission) {
|
|
47
99
|
return Acl.model(this).containsPermission(permission);
|
|
48
100
|
}
|
|
49
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Check if model contains all permissions
|
|
103
|
+
* @param permissions
|
|
104
|
+
*/
|
|
105
|
+
containsAllPermissions(permissions) {
|
|
50
106
|
return Acl.model(this).containsAllPermissions(permissions);
|
|
51
107
|
}
|
|
52
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Check if model contains any permission
|
|
110
|
+
* @param permissions
|
|
111
|
+
*/
|
|
112
|
+
containsAnyPermission(permissions) {
|
|
53
113
|
return Acl.model(this).containsAnyPermission(permissions);
|
|
54
114
|
}
|
|
55
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Check if model contains direct permission
|
|
117
|
+
* @param permission
|
|
118
|
+
*/
|
|
119
|
+
containsDirectPermission(permission) {
|
|
56
120
|
return Acl.model(this).containsDirectPermission(permission);
|
|
57
121
|
}
|
|
58
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Check if model contains all direct permissions
|
|
124
|
+
* @param permissions
|
|
125
|
+
*/
|
|
126
|
+
containsAllPermissionsDirectly(permissions) {
|
|
59
127
|
return Acl.model(this).containsAllPermissionsDirectly(permissions);
|
|
60
128
|
}
|
|
61
|
-
|
|
129
|
+
/**
|
|
130
|
+
* Check if model contains any direct permission
|
|
131
|
+
* @param permissions
|
|
132
|
+
*/
|
|
133
|
+
containsAnyPermissionDirectly(permissions) {
|
|
62
134
|
return Acl.model(this).containsAnyPermissionDirectly(permissions);
|
|
63
135
|
}
|
|
64
|
-
|
|
136
|
+
/**
|
|
137
|
+
* Check if model has permission
|
|
138
|
+
* @param permission
|
|
139
|
+
* @param target
|
|
140
|
+
*/
|
|
141
|
+
hasPermission(permission, target) {
|
|
65
142
|
return Acl.model(this).hasPermission(permission, target);
|
|
66
143
|
}
|
|
67
|
-
|
|
144
|
+
/**
|
|
145
|
+
* Check if model has all permissions
|
|
146
|
+
* @param permissions
|
|
147
|
+
* @param target
|
|
148
|
+
*/
|
|
149
|
+
hasAllPermissions(permissions, target) {
|
|
68
150
|
return Acl.model(this).hasAllPermissions(permissions, target);
|
|
69
151
|
}
|
|
70
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Check if model has any permission
|
|
154
|
+
* @param permissions
|
|
155
|
+
* @param target
|
|
156
|
+
*/
|
|
157
|
+
hasAnyPermission(permissions, target) {
|
|
71
158
|
return Acl.model(this).hasAnyPermission(permissions, target);
|
|
72
159
|
}
|
|
73
|
-
|
|
160
|
+
/**
|
|
161
|
+
* Check if model has direct permission
|
|
162
|
+
* @param permissions
|
|
163
|
+
* @param target
|
|
164
|
+
*/
|
|
165
|
+
hasAnyDirectPermission(permissions, target) {
|
|
74
166
|
return Acl.model(this).hasAnyDirectPermission(permissions, target);
|
|
75
167
|
}
|
|
76
|
-
|
|
168
|
+
/**
|
|
169
|
+
* Check if model has direct permission
|
|
170
|
+
* @param permission
|
|
171
|
+
* @param target
|
|
172
|
+
*/
|
|
173
|
+
hasDirectPermission(permission, target) {
|
|
77
174
|
return Acl.model(this).hasDirectPermission(permission, target);
|
|
78
175
|
}
|
|
79
|
-
|
|
176
|
+
/**
|
|
177
|
+
* Check if model has all direct permissions
|
|
178
|
+
* @param permissions
|
|
179
|
+
* @param target
|
|
180
|
+
*/
|
|
181
|
+
hasAllPermissionsDirect(permissions, target) {
|
|
80
182
|
return Acl.model(this).hasAllPermissionsDirect(permissions, target);
|
|
81
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Check if model has all permission
|
|
186
|
+
* @param permissions
|
|
187
|
+
* @param target
|
|
188
|
+
*/
|
|
82
189
|
canAll(permissions, target) {
|
|
83
190
|
return Acl.model(this).canAll(permissions, target);
|
|
84
191
|
}
|
|
85
192
|
canAny(permissions, target) {
|
|
86
193
|
return Acl.model(this).canAny(permissions, target);
|
|
87
194
|
}
|
|
88
|
-
|
|
195
|
+
/**
|
|
196
|
+
* Check if model has any permission
|
|
197
|
+
* @param permission
|
|
198
|
+
* @param target
|
|
199
|
+
*/
|
|
200
|
+
assignDirectPermission(permission, target) {
|
|
89
201
|
return Acl.model(this).assignDirectPermission(permission, target);
|
|
90
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Allow permission for model
|
|
205
|
+
* @param permission
|
|
206
|
+
* @param target
|
|
207
|
+
*/
|
|
91
208
|
allow(permission, target) {
|
|
92
209
|
return Acl.model(this).allow(permission, target);
|
|
93
210
|
}
|
|
94
|
-
|
|
211
|
+
/**
|
|
212
|
+
* Revoke permission from model
|
|
213
|
+
* @param permission
|
|
214
|
+
* @param target
|
|
215
|
+
*/
|
|
216
|
+
revokePermission(permission, target) {
|
|
95
217
|
return Acl.model(this).revokePermission(permission, target);
|
|
96
218
|
}
|
|
97
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Revoke all permissions from model
|
|
221
|
+
* @param permissions
|
|
222
|
+
* @param target
|
|
223
|
+
*/
|
|
224
|
+
revokeAllPermissions(permissions, target) {
|
|
98
225
|
return Acl.model(this).revokeAllPermissions(permissions, target);
|
|
99
226
|
}
|
|
100
|
-
|
|
227
|
+
/**
|
|
228
|
+
* Flush(revoke all) permissions from model
|
|
229
|
+
*/
|
|
230
|
+
flushPermissions() {
|
|
101
231
|
return Acl.model(this).flushPermissions();
|
|
102
232
|
}
|
|
103
|
-
|
|
233
|
+
/**
|
|
234
|
+
* Flush(revoke all) roles and permissions from model
|
|
235
|
+
*/
|
|
236
|
+
flush() {
|
|
104
237
|
return Acl.model(this).flush();
|
|
105
238
|
}
|
|
106
|
-
|
|
239
|
+
/**
|
|
240
|
+
* Sync Role with the given list
|
|
241
|
+
* @param roles
|
|
242
|
+
* @param detach
|
|
243
|
+
*/
|
|
244
|
+
syncRoles(roles, detach = true) {
|
|
245
|
+
return Acl.model(this).syncRoles(roles, detach);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Sync Role with the given list without detaching existing roles
|
|
249
|
+
* @param roles
|
|
250
|
+
*/
|
|
251
|
+
syncRolesWithoutDetaching(roles) {
|
|
252
|
+
return Acl.model(this).syncRolesWithoutDetaching(roles);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Sync permissions with the given list
|
|
256
|
+
* @param permissions
|
|
257
|
+
* @param target
|
|
258
|
+
*/
|
|
259
|
+
syncPermissions(permissions, target) {
|
|
260
|
+
return Acl.model(this).syncPermissions(permissions, target);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Forbid permission for model
|
|
264
|
+
* @param permission
|
|
265
|
+
* @param target
|
|
266
|
+
*/
|
|
267
|
+
forbid(permission, target) {
|
|
107
268
|
return Acl.model(this).forbid(permission, target);
|
|
108
269
|
}
|
|
109
|
-
|
|
270
|
+
/**
|
|
271
|
+
* Forbid all permissions for model
|
|
272
|
+
* @param permissions
|
|
273
|
+
* @param target
|
|
274
|
+
*/
|
|
275
|
+
forbidAll(permissions, target) {
|
|
110
276
|
return Acl.model(this).forbidAll(permissions, target);
|
|
111
277
|
}
|
|
112
|
-
|
|
278
|
+
/**
|
|
279
|
+
* Unforbid all permissions for model
|
|
280
|
+
* @param permissions
|
|
281
|
+
* @param target
|
|
282
|
+
*/
|
|
283
|
+
unforbidAll(permissions, target) {
|
|
113
284
|
return Acl.model(this).unforbidAll(permissions, target);
|
|
114
285
|
}
|
|
115
|
-
|
|
286
|
+
/**
|
|
287
|
+
* Unforbid permission for model
|
|
288
|
+
* @param permission
|
|
289
|
+
* @param target
|
|
290
|
+
*/
|
|
291
|
+
unforbid(permission, target) {
|
|
116
292
|
return Acl.model(this).unforbid(permission, target);
|
|
117
293
|
}
|
|
118
294
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AclModel, MorphInterface, OptionsInterface } from '
|
|
2
|
-
import RolesService from '
|
|
3
|
-
import BaseAdapter from '
|
|
4
|
-
import ModelManager from '
|
|
5
|
-
import PermissionService from '
|
|
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
6
|
export declare class ModelHasRolePermissions extends BaseAdapter {
|
|
7
7
|
protected manager: ModelManager;
|
|
8
8
|
protected map: MorphInterface;
|
|
@@ -11,7 +11,7 @@ export declare class ModelHasRolePermissions extends BaseAdapter {
|
|
|
11
11
|
protected roleService: RolesService;
|
|
12
12
|
protected permissionService: PermissionService;
|
|
13
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("
|
|
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
15
|
hasRole(role: string): Promise<boolean>;
|
|
16
16
|
hasAllRoles(...roles: string[]): Promise<boolean>;
|
|
17
17
|
hasAnyRole(...roles: string[]): Promise<boolean>;
|
|
@@ -21,17 +21,35 @@ export declare class ModelHasRolePermissions extends BaseAdapter {
|
|
|
21
21
|
revokeRole(role: string): Promise<boolean>;
|
|
22
22
|
revokeAllRoles(...roles: string[]): Promise<boolean>;
|
|
23
23
|
flushRoles(): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, any>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Sync roles with the model (detach all roles and assign new roles)
|
|
26
|
+
* @param roles - array of roles
|
|
27
|
+
* @param detach - if true, it will detach the existing roles
|
|
28
|
+
*/
|
|
29
|
+
syncRoles(roles: string[], detach?: boolean): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Sync roles with the model without detaching the existing ones
|
|
32
|
+
* @param roles
|
|
33
|
+
*/
|
|
34
|
+
syncRolesWithoutDetaching(roles: string[]): Promise<boolean>;
|
|
35
|
+
permissions(includeForbiddings?: boolean): Promise<import("../../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
36
|
+
/**
|
|
37
|
+
* returns list of global permissions assigned to the model
|
|
38
|
+
* @param includeForbiddings
|
|
39
|
+
*/
|
|
40
|
+
globalPermissions(includeForbiddings?: boolean): Promise<import("../../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
41
|
+
/**
|
|
42
|
+
* @param includeForbiddings
|
|
43
|
+
*/
|
|
44
|
+
onResourcePermissions(includeForbiddings?: boolean): Promise<import("../../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
45
|
+
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
46
|
/**
|
|
29
47
|
* Get permission through roles
|
|
30
48
|
* @param includeForbiddings
|
|
31
49
|
*/
|
|
32
|
-
rolePermissions(includeForbiddings?: boolean): Promise<import("
|
|
33
|
-
directGlobalPermissions(includeForbiddings?: boolean): Promise<import("
|
|
34
|
-
directResourcePermissions(includeForbiddings?: boolean): Promise<import("
|
|
50
|
+
rolePermissions(includeForbiddings?: boolean): Promise<import("../../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
51
|
+
directGlobalPermissions(includeForbiddings?: boolean): Promise<import("../../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
52
|
+
directResourcePermissions(includeForbiddings?: boolean): Promise<import("../../types.js").PermissionModel<import("@adonisjs/lucid/types/model").LucidModel>[]>;
|
|
35
53
|
containsPermission(permission: string): Promise<boolean>;
|
|
36
54
|
contains(permission: string): Promise<boolean>;
|
|
37
55
|
containsAllPermissions(permissions: string[]): Promise<boolean>;
|
|
@@ -39,7 +57,16 @@ export declare class ModelHasRolePermissions extends BaseAdapter {
|
|
|
39
57
|
containsDirectPermission(permission: string): Promise<boolean>;
|
|
40
58
|
containsAllPermissionsDirectly(permissions: string[]): Promise<boolean>;
|
|
41
59
|
containsAnyPermissionDirectly(permissions: string[]): Promise<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* @param permission
|
|
62
|
+
* @param target
|
|
63
|
+
*/
|
|
42
64
|
hasPermission(permission: string, target?: AclModel | Function): Promise<boolean>;
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
* @param permissions
|
|
68
|
+
* @param target
|
|
69
|
+
*/
|
|
43
70
|
hasAllPermissions(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
44
71
|
hasAnyPermission(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
45
72
|
hasAnyDirectPermission(permissions: string[], target?: AclModel | Function): Promise<boolean>;
|
|
@@ -57,6 +84,7 @@ export declare class ModelHasRolePermissions extends BaseAdapter {
|
|
|
57
84
|
revokeAll(permissions: string[], target?: AclModel | Function): Promise<any[]>;
|
|
58
85
|
revokeAllPermissions(permissions: string[], target?: AclModel | Function): Promise<any[]>;
|
|
59
86
|
flushPermissions(): Promise<any[]>;
|
|
87
|
+
syncPermissions(permissions: string[], target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
60
88
|
flush(): Promise<boolean>;
|
|
61
89
|
forbid(permission: string, target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
62
90
|
forbidAll(permissions: string[], target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
package/build/src/services/{model_has_role_permissions.js → models/model_has_role_permissions.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import RolesService from '
|
|
2
|
-
import { destructTarget, formatList } from '
|
|
3
|
-
import BaseAdapter from '
|
|
4
|
-
import PermissionService from '
|
|
1
|
+
import RolesService from '../roles/roles_service.js';
|
|
2
|
+
import { destructTarget, formatList } from '../helper.js';
|
|
3
|
+
import BaseAdapter from '../base_adapter.js';
|
|
4
|
+
import PermissionService from '../permissions/permissions_service.js';
|
|
5
5
|
export class ModelHasRolePermissions extends BaseAdapter {
|
|
6
6
|
manager;
|
|
7
7
|
map;
|
|
@@ -53,14 +53,39 @@ export class ModelHasRolePermissions extends BaseAdapter {
|
|
|
53
53
|
flushRoles() {
|
|
54
54
|
return this.roleService.flush(this.map.getAlias(this.model), this.model.getModelId());
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Sync roles with the model (detach all roles and assign new roles)
|
|
58
|
+
* @param roles - array of roles
|
|
59
|
+
* @param detach - if true, it will detach the existing roles
|
|
60
|
+
*/
|
|
61
|
+
async syncRoles(roles, detach = true) {
|
|
62
|
+
if (detach) {
|
|
63
|
+
await this.flushRoles();
|
|
64
|
+
}
|
|
65
|
+
return this.assignAllRoles(...roles);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Sync roles with the model without detaching the existing ones
|
|
69
|
+
* @param roles
|
|
70
|
+
*/
|
|
71
|
+
syncRolesWithoutDetaching(roles) {
|
|
72
|
+
return this.syncRoles(roles, false);
|
|
73
|
+
}
|
|
56
74
|
// roles related section END
|
|
57
75
|
// permissions related section BEGIN
|
|
58
76
|
async permissions(includeForbiddings = false) {
|
|
59
77
|
return this.permissionService.all(this.map.getAlias(this.model), this.model.getModelId(), includeForbiddings);
|
|
60
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* returns list of global permissions assigned to the model
|
|
81
|
+
* @param includeForbiddings
|
|
82
|
+
*/
|
|
61
83
|
async globalPermissions(includeForbiddings = false) {
|
|
62
84
|
return this.permissionService.global(this.map.getAlias(this.model), this.model.getModelId(), includeForbiddings);
|
|
63
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* @param includeForbiddings
|
|
88
|
+
*/
|
|
64
89
|
async onResourcePermissions(includeForbiddings = false) {
|
|
65
90
|
return this.permissionService.onResource(this.map.getAlias(this.model), this.model.getModelId(), includeForbiddings);
|
|
66
91
|
}
|
|
@@ -106,9 +131,18 @@ export class ModelHasRolePermissions extends BaseAdapter {
|
|
|
106
131
|
const result = await this.permissionService.containsAnyDirect(this.map.getAlias(this.model), this.model.getModelId(), permissions);
|
|
107
132
|
return result;
|
|
108
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* @param permission
|
|
136
|
+
* @param target
|
|
137
|
+
*/
|
|
109
138
|
async hasPermission(permission, target) {
|
|
110
139
|
return this.hasAnyPermission([permission], target);
|
|
111
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
*
|
|
143
|
+
* @param permissions
|
|
144
|
+
* @param target
|
|
145
|
+
*/
|
|
112
146
|
async hasAllPermissions(permissions, target) {
|
|
113
147
|
const entity = await destructTarget(this.map, target);
|
|
114
148
|
return await this.permissionService.hasAll(this.map.getAlias(this.model), this.model.getModelId(), permissions, entity.targetClass, entity.targetId);
|
|
@@ -167,6 +201,10 @@ export class ModelHasRolePermissions extends BaseAdapter {
|
|
|
167
201
|
async flushPermissions() {
|
|
168
202
|
return this.permissionService.flush(this.map.getAlias(this.model), this.model.getModelId());
|
|
169
203
|
}
|
|
204
|
+
async syncPermissions(permissions, target) {
|
|
205
|
+
await this.flushPermissions();
|
|
206
|
+
return this.allowAll(permissions, target);
|
|
207
|
+
}
|
|
170
208
|
async flush() {
|
|
171
209
|
await this.permissionService.flush(this.map.getAlias(this.model), this.model.getModelId());
|
|
172
210
|
await this.roleService.flush(this.map.getAlias(this.model), this.model.getModelId());
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import BaseService from '
|
|
1
|
+
import BaseService from '../base_service.js';
|
|
2
2
|
import { BaseModel } from '@adonisjs/lucid/orm';
|
|
3
|
-
import { ModelIdType, MorphInterface, OptionsInterface } from '
|
|
3
|
+
import { ModelIdType, MorphInterface, OptionsInterface } from '../../types.js';
|
|
4
4
|
export default class ModelService extends BaseService {
|
|
5
5
|
protected options: OptionsInterface;
|
|
6
6
|
private modelPermissionClassName;
|
|
@@ -11,8 +11,8 @@ export default class ModelService extends BaseService {
|
|
|
11
11
|
private modelRoleQuery;
|
|
12
12
|
private readonly modelRoleTable;
|
|
13
13
|
constructor(options: OptionsInterface, modelPermissionClassName: typeof BaseModel, modelRoleClassName: typeof BaseModel, map: MorphInterface);
|
|
14
|
-
all(roleId: number): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("
|
|
14
|
+
all(roleId: number): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("../../types.js").ModelRoleModel<import("@adonisjs/lucid/types/model").LucidModel>>;
|
|
15
15
|
allFor(modelType: string, roleId: number): Promise<any>;
|
|
16
|
-
allByPermission(permissionId: ModelIdType): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("
|
|
16
|
+
allByPermission(permissionId: ModelIdType): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel, import("../../types.js").ModelPermissionModel<import("@adonisjs/lucid/types/model").LucidModel>>;
|
|
17
17
|
allByPermissionFor(modelType: string, permissionId: ModelIdType): Promise<any>;
|
|
18
18
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import BaseService from '
|
|
2
|
-
import { getModelPermissionModelQuery, getModelRoleModelQuery } from '
|
|
1
|
+
import BaseService from '../base_service.js';
|
|
2
|
+
import { getModelPermissionModelQuery, getModelRoleModelQuery } from '../query_helper.js';
|
|
3
3
|
export default class ModelService extends BaseService {
|
|
4
4
|
options;
|
|
5
5
|
modelPermissionClassName;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AclModel, MorphInterface, OptionsInterface, PermissionInterface } from '../../types.js';
|
|
2
|
-
import ModelService from '../model_service.js';
|
|
2
|
+
import ModelService from '../models/model_service.js';
|
|
3
3
|
import RoleService from '../roles/roles_service.js';
|
|
4
4
|
import PermissionService from './permissions_service.js';
|
|
5
5
|
import { BaseModel } from '@adonisjs/lucid/orm';
|
|
@@ -1,5 +1,5 @@
|
|
|
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_service.js';
|
|
4
4
|
import { getModelPermissionModelQuery, getRoleModelQuery } from '../query_helper.js';
|
|
5
5
|
import BaseAdapter from '../base_adapter.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ModelService from '../model_service.js';
|
|
1
|
+
import ModelService from '../models/model_service.js';
|
|
2
2
|
import PermissionService from '../permissions/permissions_service.js';
|
|
3
3
|
import { AclModel, MorphInterface, OptionsInterface, RoleInterface } from '../../types.js';
|
|
4
4
|
import BaseAdapter from '../base_adapter.js';
|
|
@@ -64,6 +64,12 @@ export declare class RoleHasModelPermissions extends BaseAdapter {
|
|
|
64
64
|
revokeAll(permissions: string[], target?: AclModel | Function): Promise<any[]>;
|
|
65
65
|
revokeAllPermissions(permissions: string[]): Promise<any[]>;
|
|
66
66
|
flush(): Promise<any[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Sync permissions with the given list
|
|
69
|
+
* @param permissions - list of permissions
|
|
70
|
+
* @param target
|
|
71
|
+
*/
|
|
72
|
+
sync(permissions: string[], target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
67
73
|
forbid(permission: string, target?: AclModel | Function): Promise<import("@adonisjs/lucid/types/model").LucidRow[]>;
|
|
68
74
|
unforbid(permission: string, target?: AclModel | Function): Promise<any[]>;
|
|
69
75
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
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
5
|
export class RoleHasModelPermissions extends BaseAdapter {
|
|
@@ -142,6 +142,15 @@ export class RoleHasModelPermissions extends BaseAdapter {
|
|
|
142
142
|
async flush() {
|
|
143
143
|
return this.permissionService.flush(this.map.getAlias(this.role), this.role.getModelId());
|
|
144
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Sync permissions with the given list
|
|
147
|
+
* @param permissions - list of permissions
|
|
148
|
+
* @param target
|
|
149
|
+
*/
|
|
150
|
+
async sync(permissions, target) {
|
|
151
|
+
await this.flush();
|
|
152
|
+
return this.giveAll(permissions, target);
|
|
153
|
+
}
|
|
145
154
|
async forbid(permission, target) {
|
|
146
155
|
const entity = await destructTarget(this.map, target);
|
|
147
156
|
return this.permissionService.forbid(this.map.getAlias(this.role), this.role.getModelId(), permission, entity.targetClass, entity.targetId);
|