@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 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
@@ -1,4 +1,4 @@
1
- declare function plugin(fastify: any): void;
1
+ declare function plugin(fastify: any): Promise<void>;
2
2
  declare const _default: typeof plugin;
3
3
  export default _default;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AA4FA,iBAAS,MAAM,CAAC,OAAO,EAAE,GAAG,QA8K3B;;AACD,wBAA0B"}
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,EACzD,EAAE,MAAmB,gBAsCtB"}
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 userPermissions = (filteredPermissions || [])
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,sBA8GtB"}
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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/fastify-table",
3
- "version": "2.2.9",
3
+ "version": "2.2.11",
4
4
  "type": "module",
5
5
  "description": "core-plugins",
6
6
  "keywords": [