@or-sdk/permissions 1.1.0 → 1.1.1-beta.3267.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.
- package/README.md +14 -0
- package/dist/cjs/Permissions.js +42 -9
- package/dist/cjs/Permissions.js.map +1 -1
- package/dist/esm/Permissions.js +28 -9
- package/dist/esm/Permissions.js.map +1 -1
- package/dist/types/Permissions.d.ts +7 -5
- package/dist/types/Permissions.d.ts.map +1 -1
- package/dist/types/types.d.ts +21 -10
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/Permissions.ts +75 -15
- package/src/types.ts +25 -12
package/README.md
CHANGED
|
@@ -1 +1,15 @@
|
|
|
1
1
|
## Installation:
|
|
2
|
+
```
|
|
3
|
+
$ npm i @or-sdk/permissions
|
|
4
|
+
```
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## Usage:
|
|
8
|
+
```typescript
|
|
9
|
+
import { Permissions } from '@or-sdk/permissions'
|
|
10
|
+
|
|
11
|
+
const permissions = new Permissions({
|
|
12
|
+
token: 'my-account-token-string',
|
|
13
|
+
permissionsUrl: 'http://example.permissions/endpoint'
|
|
14
|
+
});
|
|
15
|
+
```
|
package/dist/cjs/Permissions.js
CHANGED
|
@@ -65,15 +65,31 @@ var Permissions = (function (_super) {
|
|
|
65
65
|
serviceKey: constants_1.SERVICE_KEY,
|
|
66
66
|
}) || this;
|
|
67
67
|
}
|
|
68
|
-
Permissions.prototype.
|
|
68
|
+
Permissions.prototype.registerService = function (params) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
70
|
+
var data;
|
|
71
|
+
return __generator(this, function (_a) {
|
|
72
|
+
switch (_a.label) {
|
|
73
|
+
case 0: return [4, this.callApiV2({
|
|
74
|
+
method: 'POST',
|
|
75
|
+
route: '/v1/permissions/services',
|
|
76
|
+
data: params,
|
|
77
|
+
})];
|
|
78
|
+
case 1:
|
|
79
|
+
data = _a.sent();
|
|
80
|
+
return [2, data];
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
Permissions.prototype.getCurrent = function () {
|
|
69
86
|
return __awaiter(this, void 0, void 0, function () {
|
|
70
87
|
var data;
|
|
71
88
|
return __generator(this, function (_a) {
|
|
72
89
|
switch (_a.label) {
|
|
73
90
|
case 0: return [4, this.callApiV2({
|
|
74
91
|
method: 'GET',
|
|
75
|
-
route: '/v1/permissions',
|
|
76
|
-
params: { service: service },
|
|
92
|
+
route: '/v1/permissions/self',
|
|
77
93
|
})];
|
|
78
94
|
case 1:
|
|
79
95
|
data = _a.sent();
|
|
@@ -82,14 +98,14 @@ var Permissions = (function (_super) {
|
|
|
82
98
|
});
|
|
83
99
|
});
|
|
84
100
|
};
|
|
85
|
-
Permissions.prototype.
|
|
101
|
+
Permissions.prototype.getCurrentForService = function (service) {
|
|
86
102
|
return __awaiter(this, void 0, void 0, function () {
|
|
87
103
|
var data;
|
|
88
104
|
return __generator(this, function (_a) {
|
|
89
105
|
switch (_a.label) {
|
|
90
106
|
case 0: return [4, this.callApiV2({
|
|
91
107
|
method: 'GET',
|
|
92
|
-
route:
|
|
108
|
+
route: "/v1/permissions/self/".concat(service),
|
|
93
109
|
})];
|
|
94
110
|
case 1:
|
|
95
111
|
data = _a.sent();
|
|
@@ -98,14 +114,14 @@ var Permissions = (function (_super) {
|
|
|
98
114
|
});
|
|
99
115
|
});
|
|
100
116
|
};
|
|
101
|
-
Permissions.prototype.
|
|
117
|
+
Permissions.prototype.updateEntity = function (data) {
|
|
102
118
|
return __awaiter(this, void 0, void 0, function () {
|
|
103
119
|
var response;
|
|
104
120
|
return __generator(this, function (_a) {
|
|
105
121
|
switch (_a.label) {
|
|
106
122
|
case 0: return [4, this.callApiV2({
|
|
107
123
|
method: 'PUT',
|
|
108
|
-
route: '/v1/permissions',
|
|
124
|
+
route: '/v1/permissions/entities',
|
|
109
125
|
data: data,
|
|
110
126
|
})];
|
|
111
127
|
case 1:
|
|
@@ -115,14 +131,31 @@ var Permissions = (function (_super) {
|
|
|
115
131
|
});
|
|
116
132
|
});
|
|
117
133
|
};
|
|
118
|
-
Permissions.prototype.
|
|
134
|
+
Permissions.prototype.getByUserIdInCurrentAccount = function (userId) {
|
|
135
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
136
|
+
var response;
|
|
137
|
+
return __generator(this, function (_a) {
|
|
138
|
+
switch (_a.label) {
|
|
139
|
+
case 0: return [4, this.callApiV2({
|
|
140
|
+
method: 'GET',
|
|
141
|
+
route: "/v1/permissions/all/".concat(userId),
|
|
142
|
+
})];
|
|
143
|
+
case 1:
|
|
144
|
+
response = _a.sent();
|
|
145
|
+
return [2, response];
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
Permissions.prototype.checkScope = function (scope) {
|
|
119
151
|
return __awaiter(this, void 0, void 0, function () {
|
|
120
152
|
var response;
|
|
121
153
|
return __generator(this, function (_a) {
|
|
122
154
|
switch (_a.label) {
|
|
123
155
|
case 0: return [4, this.callApiV2({
|
|
124
156
|
method: 'GET',
|
|
125
|
-
route:
|
|
157
|
+
route: '/v1/permissions/scope',
|
|
158
|
+
params: { scope: scope.join(',') },
|
|
126
159
|
})];
|
|
127
160
|
case 1:
|
|
128
161
|
response = _a.sent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../src/Permissions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAoC;AAEpC,yCAA0C;
|
|
1
|
+
{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../src/Permissions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAoC;AAEpC,yCAA0C;AAkB1C;IAAiC,+BAAI;IAUnC,qBAAY,MAAyB;QAC3B,IAAA,KAAK,GAAmC,MAAM,MAAzC,EAAE,YAAY,GAAqB,MAAM,aAA3B,EAAE,cAAc,GAAK,MAAM,eAAX,CAAY;QACvD,OAAA,MAAK,YAAC;YACJ,KAAK,OAAA;YACL,YAAY,cAAA;YACZ,UAAU,EAAE,cAAc;YAC1B,UAAU,EAAE,uBAAW;SACxB,CAAC,SAAC;IACL,CAAC;IAUK,qCAAe,GAArB,UAAsB,MAA0B;;;;;4BACjC,WAAM,IAAI,CAAC,SAAS,CAAe;4BAC9C,MAAM,EAAE,MAAM;4BACd,KAAK,EAAE,0BAA0B;4BACjC,IAAI,EAAE,MAAM;yBACb,CAAC,EAAA;;wBAJI,IAAI,GAAG,SAIX;wBACF,WAAO,IAAI,EAAC;;;;KACb;IAOK,gCAAU,GAAhB;;;;;4BACe,WAAM,IAAI,CAAC,SAAS,CAA6B;4BAC5D,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,sBAAsB;yBAC9B,CAAC,EAAA;;wBAHI,IAAI,GAAG,SAGX;wBACF,WAAO,IAAI,EAAC;;;;KACb;IAOK,0CAAoB,GAA1B,UAA2B,OAAe;;;;;4BAC3B,WAAM,IAAI,CAAC,SAAS,CAA+B;4BAC9D,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,+BAAwB,OAAO,CAAE;yBACzC,CAAC,EAAA;;wBAHI,IAAI,GAAG,SAGX;wBACF,WAAO,IAAI,EAAC;;;;KACb;IAUK,kCAAY,GAAlB,UAAmB,IAAgC;;;;;4BAChC,WAAM,IAAI,CAAC,SAAS,CAA6B;4BAChE,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,0BAA0B;4BACjC,IAAI,MAAA;yBACL,CAAC,EAAA;;wBAJI,QAAQ,GAAG,SAIf;wBACF,WAAO,QAAQ,EAAC;;;;KACjB;IAOK,iDAA2B,GAAjC,UAAkC,MAAc;;;;;4BAC7B,WAAM,IAAI,CAAC,SAAS,CAA0B;4BAC7D,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,8BAAuB,MAAM,CAAE;yBACvC,CAAC,EAAA;;wBAHI,QAAQ,GAAG,SAGf;wBACF,WAAO,QAAQ,EAAC;;;;KACjB;IAOK,gCAAU,GAAhB,UAAiB,KAAe;;;;;4BACb,WAAM,IAAI,CAAC,SAAS,CAAU;4BAC7C,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,uBAAuB;4BAC9B,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;yBACnC,CAAC,EAAA;;wBAJI,QAAQ,GAAG,SAIf;wBACF,WAAO,QAAQ,EAAC;;;;KACjB;IACH,kBAAC;AAAD,CAAC,AA1GD,CAAiC,WAAI,GA0GpC;AA1GY,kCAAW"}
|
package/dist/esm/Permissions.js
CHANGED
|
@@ -19,40 +19,59 @@ export class Permissions extends Base {
|
|
|
19
19
|
serviceKey: SERVICE_KEY,
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
registerService(params) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
const data = yield this.callApiV2({
|
|
25
|
+
method: 'POST',
|
|
26
|
+
route: '/v1/permissions/services',
|
|
27
|
+
data: params,
|
|
28
|
+
});
|
|
29
|
+
return data;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
getCurrent() {
|
|
23
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
34
|
const data = yield this.callApiV2({
|
|
25
35
|
method: 'GET',
|
|
26
|
-
route: '/v1/permissions',
|
|
27
|
-
params: { service },
|
|
36
|
+
route: '/v1/permissions/self',
|
|
28
37
|
});
|
|
29
38
|
return data;
|
|
30
39
|
});
|
|
31
40
|
}
|
|
32
|
-
|
|
41
|
+
getCurrentForService(service) {
|
|
33
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
43
|
const data = yield this.callApiV2({
|
|
35
44
|
method: 'GET',
|
|
36
|
-
route:
|
|
45
|
+
route: `/v1/permissions/self/${service}`,
|
|
37
46
|
});
|
|
38
47
|
return data;
|
|
39
48
|
});
|
|
40
49
|
}
|
|
41
|
-
|
|
50
|
+
updateEntity(data) {
|
|
42
51
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
52
|
const response = yield this.callApiV2({
|
|
44
53
|
method: 'PUT',
|
|
45
|
-
route: '/v1/permissions',
|
|
54
|
+
route: '/v1/permissions/entities',
|
|
46
55
|
data,
|
|
47
56
|
});
|
|
48
57
|
return response;
|
|
49
58
|
});
|
|
50
59
|
}
|
|
51
|
-
|
|
60
|
+
getByUserIdInCurrentAccount(userId) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const response = yield this.callApiV2({
|
|
63
|
+
method: 'GET',
|
|
64
|
+
route: `/v1/permissions/all/${userId}`,
|
|
65
|
+
});
|
|
66
|
+
return response;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
checkScope(scope) {
|
|
52
70
|
return __awaiter(this, void 0, void 0, function* () {
|
|
53
71
|
const response = yield this.callApiV2({
|
|
54
72
|
method: 'GET',
|
|
55
|
-
route:
|
|
73
|
+
route: '/v1/permissions/scope',
|
|
74
|
+
params: { scope: scope.join(',') },
|
|
56
75
|
});
|
|
57
76
|
return response;
|
|
58
77
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../src/Permissions.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../src/Permissions.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkB1C,MAAM,OAAO,WAAY,SAAQ,IAAI;IAUnC,YAAY,MAAyB;QACnC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;QACvD,KAAK,CAAC;YACJ,KAAK;YACL,YAAY;YACZ,UAAU,EAAE,cAAc;YAC1B,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;IACL,CAAC;IAUK,eAAe,CAAC,MAA0B;;YAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAe;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,0BAA0B;gBACjC,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAOK,UAAU;;YACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAA6B;gBAC5D,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,sBAAsB;aAC9B,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAOK,oBAAoB,CAAC,OAAe;;YACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAA+B;gBAC9D,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,wBAAwB,OAAO,EAAE;aACzC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAUK,YAAY,CAAC,IAAgC;;YACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAA6B;gBAChE,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,0BAA0B;gBACjC,IAAI;aACL,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;IAOK,2BAA2B,CAAC,MAAc;;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAA0B;gBAC7D,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,uBAAuB,MAAM,EAAE;aACvC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;IAOK,UAAU,CAAC,KAAe;;YAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAU;gBAC7C,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,uBAAuB;gBAC9B,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;aACnC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Base } from '@or-sdk/base';
|
|
2
|
-
import {
|
|
2
|
+
import { CurrentPermissionsResponse, Permission, PermissionsByServiceResponse, PermissionsConfig, RegisterServiceDto, UpdateEntityPermissionsDto, UserPermissionsResponse } from './types';
|
|
3
3
|
export declare class Permissions extends Base {
|
|
4
4
|
constructor(params: PermissionsConfig);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
registerService(params: RegisterServiceDto): Promise<Permission[]>;
|
|
6
|
+
getCurrent(): Promise<CurrentPermissionsResponse>;
|
|
7
|
+
getCurrentForService(service: string): Promise<PermissionsByServiceResponse>;
|
|
8
|
+
updateEntity(data: UpdateEntityPermissionsDto): Promise<CurrentPermissionsResponse>;
|
|
9
|
+
getByUserIdInCurrentAccount(userId: string): Promise<UserPermissionsResponse>;
|
|
10
|
+
checkScope(scope: string[]): Promise<boolean>;
|
|
9
11
|
}
|
|
10
12
|
//# sourceMappingURL=Permissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permissions.d.ts","sourceRoot":"","sources":["../../src/Permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,
|
|
1
|
+
{"version":3,"file":"Permissions.d.ts","sourceRoot":"","sources":["../../src/Permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EACL,0BAA0B,EAC1B,UAAU,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,SAAS,CAAC;AASjB,qBAAa,WAAY,SAAQ,IAAI;gBAUvB,MAAM,EAAE,iBAAiB;IAkB/B,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAclE,UAAU,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAajD,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAgB5E,YAAY,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAcnF,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAa7E,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAQpD"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -8,36 +8,47 @@ export type PermissionsConfig = {
|
|
|
8
8
|
permissionsUrl: string;
|
|
9
9
|
discoveryUrl?: string;
|
|
10
10
|
};
|
|
11
|
-
export type
|
|
11
|
+
export type PermissionsByServiceResponse = {
|
|
12
12
|
[key: string]: boolean;
|
|
13
13
|
};
|
|
14
|
-
export type
|
|
14
|
+
export type BasicPermission = {
|
|
15
15
|
name: string;
|
|
16
16
|
effect: boolean;
|
|
17
17
|
};
|
|
18
|
-
export type
|
|
18
|
+
export type DetailedPermission = BasicPermission & {
|
|
19
19
|
description: string;
|
|
20
20
|
};
|
|
21
|
-
export type
|
|
21
|
+
export type PermissionGroup = {
|
|
22
22
|
serviceName: string;
|
|
23
|
-
permissions:
|
|
23
|
+
permissions: BasicPermission[];
|
|
24
24
|
};
|
|
25
|
-
export type
|
|
25
|
+
export type DetailedPermissionGroup = {
|
|
26
26
|
serviceName: string;
|
|
27
27
|
serviceLabel: string;
|
|
28
|
-
permissions:
|
|
28
|
+
permissions: DetailedPermission[];
|
|
29
29
|
};
|
|
30
|
-
export type
|
|
31
|
-
export type
|
|
30
|
+
export type CurrentPermissionsResponse = PermissionGroup[];
|
|
31
|
+
export type UserPermissionsResponse = DetailedPermissionGroup[];
|
|
32
32
|
export type PermissionOverride = {
|
|
33
33
|
permissionName: string;
|
|
34
34
|
effect: boolean;
|
|
35
35
|
};
|
|
36
|
-
export type
|
|
36
|
+
export type UpdateEntityPermissionsDto = {
|
|
37
37
|
entityType: EntityType;
|
|
38
38
|
entityId: string;
|
|
39
39
|
permissions: {
|
|
40
40
|
[serviceName: string]: PermissionOverride[];
|
|
41
41
|
};
|
|
42
42
|
};
|
|
43
|
+
export type Permission = {
|
|
44
|
+
name: string;
|
|
45
|
+
description: string;
|
|
46
|
+
defaultEffect: boolean;
|
|
47
|
+
metadata?: unknown;
|
|
48
|
+
};
|
|
49
|
+
export type RegisterServiceDto = {
|
|
50
|
+
service: string;
|
|
51
|
+
serviceLabel: string;
|
|
52
|
+
permissions: Permission[];
|
|
53
|
+
};
|
|
43
54
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,oBAAY,UAAU;IACpB,UAAU,eAAe;IACzB,SAAS,cAAc;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAI9B,KAAK,EAAE,KAAK,CAAC;IAIb,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,oBAAY,UAAU;IACpB,UAAU,eAAe;IACzB,SAAS,cAAc;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAI9B,KAAK,EAAE,KAAK,CAAC;IAIb,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IACjD,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,eAAe,EAAE,CAAC;AAC3D,MAAM,MAAM,uBAAuB,GAAG,uBAAuB,EAAE,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE;QACX,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;KAC7C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@or-sdk/permissions",
|
|
3
|
-
"version": "1.1.0",
|
|
3
|
+
"version": "1.1.1-beta.3267.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -26,6 +26,5 @@
|
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
28
28
|
"access": "public"
|
|
29
|
-
}
|
|
30
|
-
"gitHead": "468edb5e9810689f4e523fc0df043ed1f9cadef9"
|
|
29
|
+
}
|
|
31
30
|
}
|
package/src/Permissions.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { Base } from '@or-sdk/base';
|
|
2
2
|
|
|
3
3
|
import { SERVICE_KEY } from './constants';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
CurrentPermissionsResponse,
|
|
6
|
+
Permission,
|
|
7
|
+
PermissionsByServiceResponse,
|
|
8
|
+
PermissionsConfig,
|
|
9
|
+
RegisterServiceDto,
|
|
10
|
+
UpdateEntityPermissionsDto,
|
|
11
|
+
UserPermissionsResponse,
|
|
12
|
+
} from './types';
|
|
5
13
|
|
|
6
14
|
/**
|
|
7
15
|
* OneReach Permissions service client
|
|
@@ -22,7 +30,6 @@ export class Permissions extends Base {
|
|
|
22
30
|
*/
|
|
23
31
|
constructor(params: PermissionsConfig) {
|
|
24
32
|
const { token, discoveryUrl, permissionsUrl } = params;
|
|
25
|
-
|
|
26
33
|
super({
|
|
27
34
|
token,
|
|
28
35
|
discoveryUrl,
|
|
@@ -31,36 +38,89 @@ export class Permissions extends Base {
|
|
|
31
38
|
});
|
|
32
39
|
}
|
|
33
40
|
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Registers a new service with its permissions
|
|
43
|
+
* @param {RegisterServiceParams} params - Service registration data
|
|
44
|
+
* @param {string} params.service - Service identifier
|
|
45
|
+
* @param {string} params.serviceLabel - Human-readable service name
|
|
46
|
+
* @param {Permission[]} params.permissions - List of permissions to register
|
|
47
|
+
* @returns {Promise<Permission[]>} Registered permissions
|
|
48
|
+
*/
|
|
49
|
+
async registerService(params: RegisterServiceDto): Promise<Permission[]> {
|
|
50
|
+
const data = await this.callApiV2<Permission[]>({
|
|
51
|
+
method: 'POST',
|
|
52
|
+
route: '/v1/permissions/services',
|
|
53
|
+
data: params,
|
|
54
|
+
});
|
|
55
|
+
return data;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Gets all permissions for current user across all services
|
|
60
|
+
* @returns {Promise<CurrentPermissionsResponse>} List of services with their permissions
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
async getCurrent(): Promise<CurrentPermissionsResponse> {
|
|
64
|
+
const data = await this.callApiV2<CurrentPermissionsResponse>({
|
|
36
65
|
method: 'GET',
|
|
37
|
-
route: '/v1/permissions',
|
|
38
|
-
params: { service },
|
|
66
|
+
route: '/v1/permissions/self',
|
|
39
67
|
});
|
|
40
68
|
return data;
|
|
41
69
|
}
|
|
42
70
|
|
|
43
|
-
|
|
44
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Gets current user permissions for a specific service
|
|
73
|
+
* @param {string} service - Service identifier
|
|
74
|
+
* @returns {Promise<PermissionsByServiceResponse>} Map of permission names to their effects
|
|
75
|
+
*/
|
|
76
|
+
async getCurrentForService(service: string): Promise<PermissionsByServiceResponse> {
|
|
77
|
+
const data = await this.callApiV2<PermissionsByServiceResponse>({
|
|
45
78
|
method: 'GET',
|
|
46
|
-
route:
|
|
79
|
+
route: `/v1/permissions/self/${service}`,
|
|
47
80
|
});
|
|
48
81
|
return data;
|
|
49
82
|
}
|
|
50
83
|
|
|
51
|
-
|
|
52
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Updates permissions for a specific entity (SingleUser or MultiUser)
|
|
86
|
+
* @param {UpdateEntityPermissionsDto} data - Update parameters
|
|
87
|
+
* @param {EntityType} data.entityType - Type of entity (SingleUser/MultiUser)
|
|
88
|
+
* @param {string} data.entityId - Entity identifier
|
|
89
|
+
* @param {Object} data.permissions - Map of service names to permission overrides
|
|
90
|
+
* @returns {Promise<CurrentPermissionsResponse>}
|
|
91
|
+
*/
|
|
92
|
+
async updateEntity(data: UpdateEntityPermissionsDto): Promise<CurrentPermissionsResponse> {
|
|
93
|
+
const response = await this.callApiV2<CurrentPermissionsResponse>({
|
|
53
94
|
method: 'PUT',
|
|
54
|
-
route: '/v1/permissions',
|
|
95
|
+
route: '/v1/permissions/entities',
|
|
55
96
|
data,
|
|
56
97
|
});
|
|
57
98
|
return response;
|
|
58
99
|
}
|
|
59
100
|
|
|
60
|
-
|
|
61
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Gets permissions for a specific user within an account
|
|
103
|
+
* @param {string} userId - User identifier
|
|
104
|
+
* @returns {Promise<UserPermissionsResponse>} List of services with detailed permissions
|
|
105
|
+
*/
|
|
106
|
+
async getByUserIdInCurrentAccount(userId: string): Promise<UserPermissionsResponse> {
|
|
107
|
+
const response = await this.callApiV2<UserPermissionsResponse>({
|
|
108
|
+
method: 'GET',
|
|
109
|
+
route: `/v1/permissions/all/${userId}`,
|
|
110
|
+
});
|
|
111
|
+
return response;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Checks if user has the specified permission scopes
|
|
116
|
+
* @param {string[]} scope - List of permission scopes to check
|
|
117
|
+
* @returns {Promise<boolean>} True if user has all specified scopes, false otherwise
|
|
118
|
+
*/
|
|
119
|
+
async checkScope(scope: string[]): Promise<boolean> {
|
|
120
|
+
const response = await this.callApiV2<boolean>({
|
|
62
121
|
method: 'GET',
|
|
63
|
-
route:
|
|
122
|
+
route: '/v1/permissions/scope',
|
|
123
|
+
params: { scope: scope.join(',') },
|
|
64
124
|
});
|
|
65
125
|
return response;
|
|
66
126
|
}
|
package/src/types.ts
CHANGED
|
@@ -11,48 +11,61 @@ export type PermissionsConfig = {
|
|
|
11
11
|
*/
|
|
12
12
|
token: Token;
|
|
13
13
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
* function which return token
|
|
15
|
+
*/
|
|
16
16
|
permissionsUrl: string;
|
|
17
17
|
discoveryUrl?: string;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
export type
|
|
20
|
+
export type PermissionsByServiceResponse = {
|
|
21
21
|
[key: string]: boolean;
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
export type
|
|
24
|
+
export type BasicPermission = {
|
|
25
25
|
name: string;
|
|
26
26
|
effect: boolean;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
export type
|
|
29
|
+
export type DetailedPermission = BasicPermission & {
|
|
30
30
|
description: string;
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
export type
|
|
33
|
+
export type PermissionGroup = {
|
|
34
34
|
serviceName: string;
|
|
35
|
-
permissions:
|
|
35
|
+
permissions: BasicPermission[];
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
-
export type
|
|
38
|
+
export type DetailedPermissionGroup = {
|
|
39
39
|
serviceName: string;
|
|
40
40
|
serviceLabel: string;
|
|
41
|
-
permissions:
|
|
41
|
+
permissions: DetailedPermission[];
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
-
export type
|
|
45
|
-
export type
|
|
44
|
+
export type CurrentPermissionsResponse = PermissionGroup[];
|
|
45
|
+
export type UserPermissionsResponse = DetailedPermissionGroup[];
|
|
46
46
|
|
|
47
47
|
export type PermissionOverride = {
|
|
48
48
|
permissionName: string;
|
|
49
49
|
effect: boolean;
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
export type
|
|
52
|
+
export type UpdateEntityPermissionsDto = {
|
|
53
53
|
entityType: EntityType;
|
|
54
54
|
entityId: string;
|
|
55
55
|
permissions: {
|
|
56
56
|
[serviceName: string]: PermissionOverride[];
|
|
57
57
|
};
|
|
58
58
|
};
|
|
59
|
+
|
|
60
|
+
export type Permission = {
|
|
61
|
+
name: string;
|
|
62
|
+
description: string;
|
|
63
|
+
defaultEffect: boolean;
|
|
64
|
+
metadata?: unknown;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export type RegisterServiceDto = {
|
|
68
|
+
service: string;
|
|
69
|
+
serviceLabel: string;
|
|
70
|
+
permissions: Permission[];
|
|
71
|
+
};
|