@drax/identity-back 3.13.0 → 3.14.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/dist/controllers/UserApiKeyController.js +8 -119
- package/dist/graphql/resolvers/user-api-key.resolvers.js +2 -3
- package/dist/middleware/apiKeyMiddleware.js +1 -1
- package/dist/middleware/rbacMiddleware.js +1 -1
- package/dist/permissions/UserApiKeyPermissions.js +1 -2
- package/package.json +5 -5
- package/src/controllers/UserApiKeyController.ts +15 -129
- package/src/graphql/resolvers/user-api-key.resolvers.ts +2 -3
- package/src/middleware/apiKeyMiddleware.ts +1 -1
- package/src/middleware/rbacMiddleware.ts +1 -1
- package/src/permissions/UserApiKeyPermissions.ts +1 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/types/controllers/UserApiKeyController.d.ts +10 -6
- package/types/controllers/UserApiKeyController.d.ts.map +1 -1
- package/types/graphql/resolvers/user-api-key.resolvers.d.ts.map +1 -1
- package/types/permissions/UserApiKeyPermissions.d.ts +1 -2
- package/types/permissions/UserApiKeyPermissions.d.ts.map +1 -1
- package/types/permissions/index.d.ts +0 -2
- package/types/permissions/index.d.ts.map +1 -1
|
@@ -1,129 +1,18 @@
|
|
|
1
1
|
import { AbstractFastifyController } from "@drax/crud-back";
|
|
2
|
-
import { ValidationError, UnauthorizedError } from "@drax/common-back";
|
|
3
2
|
import UserApiKeyServiceFactory from "../factory/UserApiKeyServiceFactory.js";
|
|
4
3
|
import UserApiKeyPermissions from "../permissions/UserApiKeyPermissions.js";
|
|
5
4
|
class UserApiKeyController extends AbstractFastifyController {
|
|
6
5
|
constructor() {
|
|
7
6
|
super(UserApiKeyServiceFactory(), UserApiKeyPermissions);
|
|
7
|
+
this.userField = 'user';
|
|
8
|
+
this.userFilter = true;
|
|
9
|
+
this.userSetter = true;
|
|
10
|
+
this.userAssert = true;
|
|
8
11
|
}
|
|
9
|
-
async
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
UserApiKeyPermissions.View,
|
|
14
|
-
UserApiKeyPermissions.ViewMy
|
|
15
|
-
]);
|
|
16
|
-
const filters = [];
|
|
17
|
-
if (!request.rbac.hasPermission(UserApiKeyPermissions.View)) {
|
|
18
|
-
filters.push({ field: "user", operator: "eq", value: request.rbac.userId });
|
|
19
|
-
}
|
|
20
|
-
const page = request.query.page;
|
|
21
|
-
const limit = request.query.limit;
|
|
22
|
-
const orderBy = request.query.orderBy;
|
|
23
|
-
const order = request.query.order;
|
|
24
|
-
const search = request.query.search;
|
|
25
|
-
const userApiKeyService = UserApiKeyServiceFactory();
|
|
26
|
-
let paginateResult = await userApiKeyService.paginate({ page, limit, orderBy, order, search, filters });
|
|
27
|
-
return paginateResult;
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
console.log("/api/user-api-keys", e);
|
|
31
|
-
if (e instanceof ValidationError) {
|
|
32
|
-
reply.statusCode = e.statusCode;
|
|
33
|
-
reply.send({ error: e.message, inputErrors: e.errors });
|
|
34
|
-
}
|
|
35
|
-
else if (e instanceof UnauthorizedError) {
|
|
36
|
-
reply.statusCode = e.statusCode;
|
|
37
|
-
reply.send({ error: e.message });
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
reply.statusCode = 500;
|
|
41
|
-
reply.send({ error: 'error.server' });
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async create(request, reply) {
|
|
46
|
-
try {
|
|
47
|
-
request.rbac.assertOrPermissions([UserApiKeyPermissions.Create, UserApiKeyPermissions.CreateMy]);
|
|
48
|
-
const payload = request.body;
|
|
49
|
-
if (!request.rbac.hasPermission(UserApiKeyPermissions.Create) || !payload.user) {
|
|
50
|
-
payload.user = request.rbac.userId;
|
|
51
|
-
}
|
|
52
|
-
payload.createdBy = request.rbac.userId;
|
|
53
|
-
const userApiKeyService = UserApiKeyServiceFactory();
|
|
54
|
-
let userApiKey = await userApiKeyService.create(payload);
|
|
55
|
-
return userApiKey;
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
if (e instanceof ValidationError) {
|
|
59
|
-
reply.statusCode = e.statusCode;
|
|
60
|
-
reply.send({ error: e.message, inputErrors: e.errors });
|
|
61
|
-
}
|
|
62
|
-
else if (e instanceof UnauthorizedError) {
|
|
63
|
-
reply.statusCode = e.statusCode;
|
|
64
|
-
reply.send({ error: e.message });
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
reply.statusCode = 500;
|
|
68
|
-
reply.send({ error: 'error.server' });
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
async update(request, reply) {
|
|
73
|
-
try {
|
|
74
|
-
request.rbac.assertPermission(UserApiKeyPermissions.Update);
|
|
75
|
-
const id = request.params.id;
|
|
76
|
-
const payload = request.body;
|
|
77
|
-
const userApiKeyService = UserApiKeyServiceFactory();
|
|
78
|
-
let userApiKey = await userApiKeyService.update(id, payload);
|
|
79
|
-
return userApiKey;
|
|
80
|
-
}
|
|
81
|
-
catch (e) {
|
|
82
|
-
if (e instanceof ValidationError) {
|
|
83
|
-
reply.statusCode = e.statusCode;
|
|
84
|
-
reply.send({ error: e.message, inputErrors: e.errors });
|
|
85
|
-
}
|
|
86
|
-
if (e instanceof UnauthorizedError) {
|
|
87
|
-
reply.statusCode = e.statusCode;
|
|
88
|
-
reply.send({ error: e.message });
|
|
89
|
-
}
|
|
90
|
-
else if (e instanceof UnauthorizedError) {
|
|
91
|
-
reply.statusCode = e.statusCode;
|
|
92
|
-
reply.send({ error: e.message });
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
reply.statusCode = 500;
|
|
96
|
-
reply.send({ error: 'error.server' });
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
async delete(request, reply) {
|
|
101
|
-
try {
|
|
102
|
-
request.rbac.assertPermission(UserApiKeyPermissions.Delete);
|
|
103
|
-
const id = request.params.id;
|
|
104
|
-
const userApiKeyService = UserApiKeyServiceFactory();
|
|
105
|
-
let r = await userApiKeyService.delete(id);
|
|
106
|
-
if (r) {
|
|
107
|
-
reply.send({ message: 'Deleted successfully' });
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
reply.statusCode(400).send({ message: 'Not deleted' });
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
catch (e) {
|
|
114
|
-
if (e instanceof ValidationError) {
|
|
115
|
-
reply.statusCode = e.statusCode;
|
|
116
|
-
reply.send({ error: e.message, inputErrors: e.errors });
|
|
117
|
-
}
|
|
118
|
-
else if (e instanceof UnauthorizedError) {
|
|
119
|
-
reply.statusCode = e.statusCode;
|
|
120
|
-
reply.send({ error: e.message });
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
reply.statusCode = 500;
|
|
124
|
-
reply.send({ error: 'error.server' });
|
|
125
|
-
}
|
|
126
|
-
}
|
|
12
|
+
async preCreate(request, payload) {
|
|
13
|
+
request.rbac.assertAuthenticated();
|
|
14
|
+
payload.createdBy = request.rbac.userId;
|
|
15
|
+
return payload;
|
|
127
16
|
}
|
|
128
17
|
}
|
|
129
18
|
export default UserApiKeyController;
|
|
@@ -9,13 +9,12 @@ export default {
|
|
|
9
9
|
try {
|
|
10
10
|
rbac.assertAuthenticated();
|
|
11
11
|
rbac.assertOrPermissions([
|
|
12
|
-
UserApiKeyPermissions.View
|
|
13
|
-
UserApiKeyPermissions.ViewMy
|
|
12
|
+
UserApiKeyPermissions.View
|
|
14
13
|
]);
|
|
15
14
|
if (!Array.isArray(options.filters)) {
|
|
16
15
|
options.filters = [];
|
|
17
16
|
}
|
|
18
|
-
if (!rbac.hasPermission(UserApiKeyPermissions.
|
|
17
|
+
if (!rbac.hasPermission(UserApiKeyPermissions.ViewAll)) {
|
|
19
18
|
options.filters.push({ field: "user", operator: "eq", value: rbac.userId });
|
|
20
19
|
}
|
|
21
20
|
const userApiKeyService = UserApiKeyServiceFactory();
|
|
@@ -3,7 +3,7 @@ import UserApiKeyServiceFactory from "../factory/UserApiKeyServiceFactory.js";
|
|
|
3
3
|
import IdentityConfig from "../config/IdentityConfig.js";
|
|
4
4
|
const verifyIp = DraxConfig.getOrLoad(IdentityConfig.VerifyIP, 'boolean', true);
|
|
5
5
|
const cacheTTL = DraxConfig.getOrLoad(IdentityConfig.ApiKeyCacheTTL, 'number', 10000);
|
|
6
|
-
const draxCache = new DraxCache(cacheTTL);
|
|
6
|
+
const draxCache = new DraxCache({ ttl: cacheTTL, namespace: 'identity:api-key' });
|
|
7
7
|
async function userApiKeyLoader(k) {
|
|
8
8
|
const userApiKeyService = UserApiKeyServiceFactory();
|
|
9
9
|
const userApiKey = await userApiKeyService.findBySecret(k);
|
|
@@ -3,7 +3,7 @@ import RoleServiceFactory from "../factory/RoleServiceFactory.js";
|
|
|
3
3
|
import Rbac from "../rbac/Rbac.js";
|
|
4
4
|
import IdentityConfig from "../config/IdentityConfig.js";
|
|
5
5
|
const cacheTTL = DraxConfig.getOrLoad(IdentityConfig.RbacCacheTTL, 'number', 10000);
|
|
6
|
-
const draxCache = new DraxCache(cacheTTL);
|
|
6
|
+
const draxCache = new DraxCache({ ttl: cacheTTL, namespace: 'identity:role' });
|
|
7
7
|
async function roleLoader(k) {
|
|
8
8
|
const roleService = RoleServiceFactory();
|
|
9
9
|
const role = await roleService.findById(k);
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
var UserApiKeyPermissions;
|
|
2
2
|
(function (UserApiKeyPermissions) {
|
|
3
3
|
UserApiKeyPermissions["Create"] = "userApiKey:create";
|
|
4
|
-
UserApiKeyPermissions["CreateMy"] = "userApiKey:createMy";
|
|
5
4
|
UserApiKeyPermissions["Update"] = "userApiKey:update";
|
|
6
5
|
UserApiKeyPermissions["Delete"] = "userApiKey:delete";
|
|
7
6
|
UserApiKeyPermissions["View"] = "userApiKey:view";
|
|
8
|
-
UserApiKeyPermissions["
|
|
7
|
+
UserApiKeyPermissions["ViewAll"] = "userApiKey:viewAll";
|
|
9
8
|
UserApiKeyPermissions["Manage"] = "userApiKey:manage";
|
|
10
9
|
})(UserApiKeyPermissions || (UserApiKeyPermissions = {}));
|
|
11
10
|
export default UserApiKeyPermissions;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "3.
|
|
6
|
+
"version": "3.14.0",
|
|
7
7
|
"description": "Identity module for user management, authentication and authorization.",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "types/index.d.ts",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"author": "Cristian Incarnato & Drax Team",
|
|
29
29
|
"license": "ISC",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@drax/common-back": "^3.
|
|
32
|
-
"@drax/crud-back": "^3.
|
|
33
|
-
"@drax/crud-share": "^3.
|
|
31
|
+
"@drax/common-back": "^3.14.0",
|
|
32
|
+
"@drax/crud-back": "^3.14.0",
|
|
33
|
+
"@drax/crud-share": "^3.14.0",
|
|
34
34
|
"@drax/email-back": "^3.1.0",
|
|
35
35
|
"@drax/identity-share": "^3.0.0",
|
|
36
36
|
"bcryptjs": "^2.4.3",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"debug": "0"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "cec0f824be0bfff0965d7bc7b95241406c53c04d"
|
|
67
67
|
}
|
|
@@ -1,149 +1,35 @@
|
|
|
1
1
|
import type {IUserApiKey, IUserApiKeyBase} from "@drax/identity-share";
|
|
2
|
-
import {AbstractFastifyController} from "@drax/crud-back";
|
|
3
|
-
import {ValidationError, UnauthorizedError} from "@drax/common-back";
|
|
2
|
+
import {AbstractFastifyController, CustomRequest} from "@drax/crud-back";
|
|
4
3
|
|
|
5
4
|
import UserApiKeyServiceFactory from "../factory/UserApiKeyServiceFactory.js";
|
|
6
5
|
import UserApiKeyService from "../services/UserApiKeyService.js";
|
|
7
6
|
import UserApiKeyPermissions from "../permissions/UserApiKeyPermissions.js";
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
type UserApiKeyPayload = IUserApiKeyBase & {
|
|
9
|
+
user?: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
class UserApiKeyController extends AbstractFastifyController<IUserApiKey, UserApiKeyPayload, UserApiKeyPayload> {
|
|
10
13
|
|
|
11
14
|
protected service: UserApiKeyService
|
|
12
15
|
|
|
16
|
+
protected userField: string = 'user'
|
|
17
|
+
protected userFilter: boolean = true
|
|
18
|
+
protected userSetter: boolean = true
|
|
19
|
+
protected userAssert: boolean = true
|
|
20
|
+
|
|
13
21
|
constructor() {
|
|
14
22
|
super(UserApiKeyServiceFactory(), UserApiKeyPermissions)
|
|
15
23
|
}
|
|
16
24
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
request.rbac.assertOrPermissions([
|
|
23
|
-
UserApiKeyPermissions.View,
|
|
24
|
-
UserApiKeyPermissions.ViewMy
|
|
25
|
-
])
|
|
26
|
-
|
|
27
|
-
const filters = []
|
|
28
|
-
|
|
29
|
-
if(!request.rbac.hasPermission(UserApiKeyPermissions.View)){
|
|
30
|
-
filters.push({field: "user", operator: "eq", value: request.rbac.userId})
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const page = request.query.page
|
|
34
|
-
const limit = request.query.limit
|
|
35
|
-
const orderBy = request.query.orderBy
|
|
36
|
-
const order = request.query.order
|
|
37
|
-
const search = request.query.search
|
|
38
|
-
const userApiKeyService = UserApiKeyServiceFactory()
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
let paginateResult = await userApiKeyService.paginate({page, limit, orderBy, order, search, filters})
|
|
42
|
-
return paginateResult
|
|
43
|
-
} catch (e) {
|
|
44
|
-
console.log("/api/user-api-keys",e)
|
|
45
|
-
if (e instanceof ValidationError) {
|
|
46
|
-
reply.statusCode = e.statusCode
|
|
47
|
-
reply.send({error: e.message, inputErrors: e.errors})
|
|
48
|
-
} else if (e instanceof UnauthorizedError) {
|
|
49
|
-
reply.statusCode = e.statusCode
|
|
50
|
-
reply.send({error: e.message})
|
|
51
|
-
} else {
|
|
52
|
-
reply.statusCode = 500
|
|
53
|
-
reply.send({error: 'error.server'})
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
25
|
+
async preCreate(request: CustomRequest, payload: UserApiKeyPayload): Promise<UserApiKeyPayload> {
|
|
26
|
+
request.rbac.assertAuthenticated()
|
|
27
|
+
payload.createdBy = request.rbac.userId
|
|
28
|
+
return payload
|
|
57
29
|
}
|
|
58
|
-
|
|
59
|
-
async create(request, reply) {
|
|
60
|
-
try {
|
|
61
|
-
request.rbac.assertOrPermissions([UserApiKeyPermissions.Create, UserApiKeyPermissions.CreateMy])
|
|
62
|
-
const payload = request.body
|
|
63
|
-
|
|
64
|
-
if(!request.rbac.hasPermission(UserApiKeyPermissions.Create) || !payload.user){
|
|
65
|
-
payload.user = request.rbac.userId
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
payload.createdBy = request.rbac.userId
|
|
69
|
-
|
|
70
|
-
const userApiKeyService = UserApiKeyServiceFactory()
|
|
71
|
-
|
|
72
|
-
let userApiKey = await userApiKeyService.create(payload)
|
|
73
|
-
return userApiKey
|
|
74
|
-
} catch (e) {
|
|
75
|
-
if (e instanceof ValidationError) {
|
|
76
|
-
reply.statusCode = e.statusCode
|
|
77
|
-
reply.send({error: e.message, inputErrors: e.errors})
|
|
78
|
-
} else if (e instanceof UnauthorizedError) {
|
|
79
|
-
reply.statusCode = e.statusCode
|
|
80
|
-
reply.send({error: e.message})
|
|
81
|
-
} else {
|
|
82
|
-
reply.statusCode = 500
|
|
83
|
-
reply.send({error: 'error.server'})
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
async update(request, reply) {
|
|
91
|
-
try {
|
|
92
|
-
request.rbac.assertPermission(UserApiKeyPermissions.Update)
|
|
93
|
-
const id = request.params.id
|
|
94
|
-
const payload = request.body
|
|
95
|
-
const userApiKeyService = UserApiKeyServiceFactory()
|
|
96
|
-
let userApiKey = await userApiKeyService.update(id, payload)
|
|
97
|
-
return userApiKey
|
|
98
|
-
} catch (e) {
|
|
99
|
-
if (e instanceof ValidationError) {
|
|
100
|
-
reply.statusCode = e.statusCode
|
|
101
|
-
reply.send({error: e.message, inputErrors: e.errors})
|
|
102
|
-
}
|
|
103
|
-
if (e instanceof UnauthorizedError) {
|
|
104
|
-
reply.statusCode = e.statusCode
|
|
105
|
-
reply.send({error: e.message})
|
|
106
|
-
} else if (e instanceof UnauthorizedError) {
|
|
107
|
-
reply.statusCode = e.statusCode
|
|
108
|
-
reply.send({error: e.message})
|
|
109
|
-
} else {
|
|
110
|
-
reply.statusCode = 500
|
|
111
|
-
reply.send({error: 'error.server'})
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
async delete(request, reply) : Promise<void> {
|
|
118
|
-
try {
|
|
119
|
-
request.rbac.assertPermission(UserApiKeyPermissions.Delete)
|
|
120
|
-
const id = request.params.id
|
|
121
|
-
const userApiKeyService = UserApiKeyServiceFactory()
|
|
122
|
-
let r = await userApiKeyService.delete(id)
|
|
123
|
-
if(r){
|
|
124
|
-
reply.send({message: 'Deleted successfully'})
|
|
125
|
-
}else{
|
|
126
|
-
reply.statusCode(400).send({message: 'Not deleted'})
|
|
127
|
-
}
|
|
128
|
-
} catch (e) {
|
|
129
|
-
if (e instanceof ValidationError) {
|
|
130
|
-
reply.statusCode = e.statusCode
|
|
131
|
-
reply.send({error: e.message, inputErrors: e.errors})
|
|
132
|
-
} else if (e instanceof UnauthorizedError) {
|
|
133
|
-
reply.statusCode = e.statusCode
|
|
134
|
-
reply.send({error: e.message})
|
|
135
|
-
} else {
|
|
136
|
-
reply.statusCode = 500
|
|
137
|
-
reply.send({error: 'error.server'})
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
|
|
143
30
|
}
|
|
144
31
|
|
|
145
32
|
export default UserApiKeyController;
|
|
146
33
|
export {
|
|
147
34
|
UserApiKeyController
|
|
148
35
|
}
|
|
149
|
-
|
|
@@ -14,15 +14,14 @@ export default {
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
rbac.assertOrPermissions([
|
|
17
|
-
UserApiKeyPermissions.View
|
|
18
|
-
UserApiKeyPermissions.ViewMy
|
|
17
|
+
UserApiKeyPermissions.View
|
|
19
18
|
])
|
|
20
19
|
|
|
21
20
|
if(!Array.isArray(options.filters)){
|
|
22
21
|
options.filters = []
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
if(!rbac.hasPermission(UserApiKeyPermissions.
|
|
24
|
+
if(!rbac.hasPermission(UserApiKeyPermissions.ViewAll)){
|
|
26
25
|
options.filters.push({field: "user", operator: "eq", value: rbac.userId})
|
|
27
26
|
}
|
|
28
27
|
|
|
@@ -6,7 +6,7 @@ import IdentityConfig from "../config/IdentityConfig.js";
|
|
|
6
6
|
const verifyIp = DraxConfig.getOrLoad(IdentityConfig.VerifyIP, 'boolean', true);
|
|
7
7
|
const cacheTTL = DraxConfig.getOrLoad(IdentityConfig.ApiKeyCacheTTL, 'number',10000)
|
|
8
8
|
|
|
9
|
-
const draxCache = new DraxCache<IUserApiKey>(cacheTTL);
|
|
9
|
+
const draxCache = new DraxCache<IUserApiKey>({ ttl: cacheTTL, namespace: 'identity:api-key' });
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
async function userApiKeyLoader(k): Promise<IUserApiKey | null> {
|
|
@@ -5,7 +5,7 @@ import Rbac from "../rbac/Rbac.js";
|
|
|
5
5
|
import IdentityConfig from "../config/IdentityConfig.js";
|
|
6
6
|
|
|
7
7
|
const cacheTTL = DraxConfig.getOrLoad(IdentityConfig.RbacCacheTTL, 'number',10000) ;
|
|
8
|
-
const draxCache = new DraxCache<IRole>(cacheTTL);
|
|
8
|
+
const draxCache = new DraxCache<IRole>({ ttl: cacheTTL, namespace: 'identity:role' });
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
async function roleLoader(k):Promise<IRole | null> {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
enum UserApiKeyPermissions {
|
|
2
2
|
Create = "userApiKey:create",
|
|
3
|
-
CreateMy = "userApiKey:createMy",
|
|
4
3
|
Update = "userApiKey:update",
|
|
5
4
|
Delete = "userApiKey:delete",
|
|
6
5
|
View = "userApiKey:view",
|
|
7
|
-
|
|
6
|
+
ViewAll = "userApiKey:viewAll",
|
|
8
7
|
Manage = "userApiKey:manage",
|
|
9
8
|
|
|
10
9
|
}
|