@opengis/fastify-table 2.2.9 → 2.2.11
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/functions.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/server/plugins/access/funcs/getUserPermissions.d.ts +2 -1
- package/dist/server/plugins/access/funcs/getUserPermissions.d.ts.map +1 -1
- package/dist/server/plugins/access/funcs/getUserPermissions.js +5 -2
- package/dist/server/plugins/crud/funcs/getAccess.d.ts.map +1 -1
- package/dist/server/plugins/crud/funcs/getAccess.js +13 -0
- package/package.json +1 -1
package/dist/functions.js
CHANGED
|
@@ -18,7 +18,7 @@ const rclient = getRedis();
|
|
|
18
18
|
const filename = fileURLToPath(import.meta.url);
|
|
19
19
|
const cwd = path.dirname(filename);
|
|
20
20
|
export async function onListen1() {
|
|
21
|
-
const json = await getMenu({ user: { uid: "1" }, pg: client }, null);
|
|
21
|
+
const json = await getMenu({ user: { uid: "1" }, pg: client }, null).catch(); // prevent "too many clients already" from crashing the application
|
|
22
22
|
// insert interface list to db (user access management)
|
|
23
23
|
if (client?.pk?.["admin.routes"] && json?.menus?.length) {
|
|
24
24
|
const menuList = json?.menus?.filter?.((el) => el?.table ||
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AA4FA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AA4FA,iBAAe,MAAM,CAAC,OAAO,EAAE,GAAG,iBAgLjC;;AACD,wBAEG"}
|
package/dist/index.js
CHANGED
|
@@ -61,8 +61,9 @@ addHook("preTemplate", preTemplate);
|
|
|
61
61
|
addHook("afterTemplate", afterTemplate);
|
|
62
62
|
addHook("afterUpdate", afterUpdate);
|
|
63
63
|
addHook("afterInsert", afterInsert);
|
|
64
|
-
function plugin(fastify) {
|
|
64
|
+
async function plugin(fastify) {
|
|
65
65
|
const opt = { prefix: "/api" };
|
|
66
|
+
// await new Promise(resolve => setTimeout(resolve, 50000)); // ! for debug, simulate Plugin did not start in time
|
|
66
67
|
if (config.disableCors) {
|
|
67
68
|
fastify.addHook("onSend", async (request, reply) => {
|
|
68
69
|
reply.header("Access-Control-Allow-Origin", "*");
|
|
@@ -204,4 +205,6 @@ function plugin(fastify) {
|
|
|
204
205
|
}
|
|
205
206
|
});
|
|
206
207
|
}
|
|
207
|
-
export default fp(plugin
|
|
208
|
+
export default fp(plugin, {
|
|
209
|
+
name: "@opengis/fastify-table",
|
|
210
|
+
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export default function getUserPermissions({ uid, resource, userType, }: {
|
|
1
|
+
export default function getUserPermissions({ uid, resource, table, userType, }: {
|
|
2
2
|
uid?: string;
|
|
3
3
|
resource?: string;
|
|
4
|
+
table?: string;
|
|
4
5
|
userType?: string;
|
|
5
6
|
}, pg?: any): Promise<any>;
|
|
6
7
|
//# sourceMappingURL=getUserPermissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserPermissions.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/access/funcs/getUserPermissions.ts"],"names":[],"mappings":"AAYA,wBAA8B,kBAAkB,CAC9C,EACE,GAAG,EACH,QAAQ,EACR,QAAQ,GACT,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"getUserPermissions.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/access/funcs/getUserPermissions.ts"],"names":[],"mappings":"AAYA,wBAA8B,kBAAkB,CAC9C,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACzE,EAAE,MAAmB,gBAyCtB"}
|
|
@@ -7,7 +7,7 @@ from admin.role_access a
|
|
|
7
7
|
left join admin.roles b on a.role_id=b.role_id and b.enabled
|
|
8
8
|
left join admin.user_roles c on a.role_id=c.role_id
|
|
9
9
|
where resource_id is not null and $1 in (a.user_uid, c.user_uid)`;
|
|
10
|
-
export default async function getUserPermissions({ uid, resource, userType, }, pg = pgClients.client) {
|
|
10
|
+
export default async function getUserPermissions({ uid, resource, table, userType, }, pg = pgClients.client) {
|
|
11
11
|
if (!uid)
|
|
12
12
|
return [];
|
|
13
13
|
if (userType === "admin") {
|
|
@@ -27,7 +27,7 @@ export default async function getUserPermissions({ uid, resource, userType, }, p
|
|
|
27
27
|
const filteredPermissions = resource
|
|
28
28
|
? permissions.filter((el) => el.name === resource)
|
|
29
29
|
: permissions;
|
|
30
|
-
const
|
|
30
|
+
const userPermissions1 = (filteredPermissions || [])
|
|
31
31
|
.map((e) => {
|
|
32
32
|
const resource = resourcesList.find((el) => el.name === e.name);
|
|
33
33
|
if (resource) {
|
|
@@ -35,5 +35,8 @@ export default async function getUserPermissions({ uid, resource, userType, }, p
|
|
|
35
35
|
}
|
|
36
36
|
})
|
|
37
37
|
.filter(Boolean);
|
|
38
|
+
const userPermissions = table
|
|
39
|
+
? userPermissions1.filter((el) => el.table === table)
|
|
40
|
+
: userPermissions1;
|
|
38
41
|
return userPermissions;
|
|
39
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAccess.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/getAccess.ts"],"names":[],"mappings":"AA8BA;;;;;;;;;GASG;AAEH,wBAA8B,SAAS,CACrC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAS,EAAE,MAAc,EAAE,EAAE,GAAG,EACzD,EAAE,MAAmB,
|
|
1
|
+
{"version":3,"file":"getAccess.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/getAccess.ts"],"names":[],"mappings":"AA8BA;;;;;;;;;GASG;AAEH,wBAA8B,SAAS,CACrC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAS,EAAE,MAAc,EAAE,EAAE,GAAG,EACzD,EAAE,MAAmB,sBA4HtB"}
|
|
@@ -54,6 +54,7 @@ export default async function getAccess({ resource, table, form, user = {}, meth
|
|
|
54
54
|
if (userType === "viewer") {
|
|
55
55
|
return { actions: ["view"], query: "1=1" };
|
|
56
56
|
}
|
|
57
|
+
// get request, example: /api/data
|
|
57
58
|
if (resource) {
|
|
58
59
|
const permissions = await getUserPermissions({ resource, uid, userType }, pg);
|
|
59
60
|
const actions = (permissions || [])
|
|
@@ -65,6 +66,18 @@ export default async function getAccess({ resource, table, form, user = {}, meth
|
|
|
65
66
|
query: permissions?.query || "1=1",
|
|
66
67
|
};
|
|
67
68
|
}
|
|
69
|
+
// get / post / put / delete, example: /api/form/:table/:id
|
|
70
|
+
const permissions = await getUserPermissions({ table, uid, userType }, pg);
|
|
71
|
+
const permissionActions = (permissions || [])
|
|
72
|
+
.flatMap((el) => el.actions.map((e) => matches[e] || e))
|
|
73
|
+
.filter((el, idx, arr) => arr.indexOf(el) === idx);
|
|
74
|
+
if (table && permissions?.length) {
|
|
75
|
+
return {
|
|
76
|
+
scope: permissions?.scope,
|
|
77
|
+
actions: permissionActions,
|
|
78
|
+
query: permissions?.query || "1=1",
|
|
79
|
+
};
|
|
80
|
+
}
|
|
68
81
|
const body = await getTemplate("table", table);
|
|
69
82
|
const tableActions = !body && form
|
|
70
83
|
? allActions // if db table and form => full access (token)
|