@opengis/fastify-table 2.0.156 → 2.0.158

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.
Files changed (49) hide show
  1. package/dist/module/core/cls/constraint_type.json +14 -0
  2. package/dist/module/core/cls/constraint_type_table.json +18 -0
  3. package/dist/module/core/select/core.user_mentioned.sql +1 -1
  4. package/dist/server/migrations/context.sql +3 -1
  5. package/dist/server/migrations/roles.sql +4 -0
  6. package/dist/server/plugins/auth/funcs/getUserPermissions.d.ts +2 -0
  7. package/dist/server/plugins/auth/funcs/getUserPermissions.d.ts.map +1 -0
  8. package/dist/server/plugins/auth/funcs/getUserPermissions.js +24 -0
  9. package/dist/server/plugins/file/providers/fs.d.ts +1 -1
  10. package/dist/server/plugins/policy/funcs/checkPermissions.d.ts +4 -0
  11. package/dist/server/plugins/policy/funcs/checkPermissions.d.ts.map +1 -0
  12. package/dist/server/plugins/policy/funcs/checkPermissions.js +36 -0
  13. package/dist/server/plugins/policy/funcs/checkPolicy.d.ts.map +1 -1
  14. package/dist/server/plugins/policy/funcs/checkPolicy.js +1 -15
  15. package/dist/server/plugins/policy/index.d.ts.map +1 -1
  16. package/dist/server/plugins/policy/index.js +21 -0
  17. package/dist/server/routes/access/controllers/access.group.d.ts +2 -2
  18. package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
  19. package/dist/server/routes/access/controllers/access.group.js +15 -7
  20. package/dist/server/routes/access/controllers/access.group.post.d.ts +2 -2
  21. package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
  22. package/dist/server/routes/access/controllers/access.group.post.js +17 -9
  23. package/dist/server/routes/access/controllers/access.user.d.ts +2 -0
  24. package/dist/server/routes/access/controllers/access.user.d.ts.map +1 -0
  25. package/dist/server/routes/access/controllers/access.user.js +25 -0
  26. package/dist/server/routes/access/controllers/access.user.post.d.ts +2 -0
  27. package/dist/server/routes/access/controllers/access.user.post.d.ts.map +1 -0
  28. package/dist/server/routes/access/controllers/access.user.post.js +37 -0
  29. package/dist/server/routes/access/index.d.ts.map +1 -1
  30. package/dist/server/routes/access/index.js +5 -1
  31. package/dist/server/routes/access/schema.d.ts +45 -1
  32. package/dist/server/routes/access/schema.d.ts.map +1 -1
  33. package/dist/server/routes/access/schema.js +82 -28
  34. package/dist/server/routes/auth/controllers/core/getUserInfo.d.ts.map +1 -1
  35. package/dist/server/routes/auth/controllers/core/getUserInfo.js +30 -23
  36. package/dist/server/routes/menu/controllers/getMenu.d.ts.map +1 -1
  37. package/dist/server/routes/menu/controllers/getMenu.js +6 -3
  38. package/dist/server/types/core.d.ts +1 -0
  39. package/dist/server/types/core.d.ts.map +1 -1
  40. package/dist/utils.d.ts +1 -0
  41. package/dist/utils.d.ts.map +1 -1
  42. package/dist/utils.js +1 -0
  43. package/package.json +1 -1
  44. package/dist/log/migration/dist-geo_road_traffic_new-cls.json +0 -1
  45. package/dist/log/migration/dist-geo_road_traffic_new-cls.sql +0 -0
  46. package/dist/log/migration/dist-mbk_bc_dma-cls.json +0 -1
  47. package/dist/log/migration/dist-mbk_bc_dma-cls.sql +0 -0
  48. package/dist/log/migration/dist-prod-cls.json +0 -1
  49. package/dist/log/migration/dist-prod-cls.sql +0 -2
@@ -0,0 +1,14 @@
1
+ [
2
+ {
3
+ "id": "u",
4
+ "text": "UK"
5
+ },
6
+ {
7
+ "id": "p",
8
+ "text": "PK"
9
+ },
10
+ {
11
+ "id": "f",
12
+ "text": "FK"
13
+ }
14
+ ]
@@ -0,0 +1,18 @@
1
+ [
2
+ {
3
+ "id": "u",
4
+ "text": "UK"
5
+ },
6
+ {
7
+ "id": "p",
8
+ "text": "PK"
9
+ },
10
+ {
11
+ "id": "f",
12
+ "text": "FK"
13
+ },
14
+ {
15
+ "id": "c",
16
+ "text": "CHECK"
17
+ }
18
+ ]
@@ -1,2 +1,2 @@
1
- select uid, coalesce(sur_name,'')||coalesce(' '||user_name,'') as text, email from admin.users
1
+ select uid, coalesce(sur_name,'')||coalesce(' '||user_name,'') as text, email from admin.users
2
2
  where enabled order by coalesce(sur_name,'')||coalesce(' '||user_name,'')
@@ -59,6 +59,7 @@ ALTER TABLE admin.accounts add CONSTRAINT admin_accounts_pkey PRIMARY KEY (accou
59
59
  CREATE INDEX if not exists admin_accounts_id_idx ON admin.accounts USING btree (account_id COLLATE pg_catalog."default");
60
60
 
61
61
 
62
+ /*
62
63
  CREATE TABLE IF NOT EXISTS admin.account_users();
63
64
  ALTER TABLE admin.account_users DROP CONSTRAINT IF EXISTS admin_account_users_pkey;
64
65
  ALTER TABLE admin.account_users DROP CONSTRAINT IF EXISTS admin_au_account_fkey;
@@ -132,4 +133,5 @@ ALTER TABLE admin.account_grants ADD CONSTRAINT admin_ag_user_fkey FOREIGN KEY (
132
133
 
133
134
  CREATE INDEX if not exists admin_account_users_id_idx ON admin.account_grants USING btree (ag_id COLLATE pg_catalog."default");
134
135
  CREATE INDEX if not exists admin_ag_account_id_idx ON admin.account_grants USING btree (account_id COLLATE pg_catalog."default");
135
- CREATE INDEX if not exists admin_ag_rule_id_idx ON admin.account_grants USING btree (rule_id COLLATE pg_catalog."default");
136
+ CREATE INDEX if not exists admin_ag_rule_id_idx ON admin.account_grants USING btree (rule_id COLLATE pg_catalog."default");
137
+ */
@@ -188,4 +188,8 @@ COMMENT ON COLUMN admin.role_access.access_granted_time IS 'Час коли на
188
188
  CREATE INDEX if not exists admin_access_route_id_idx ON admin.role_access USING btree (route_id COLLATE pg_catalog."default");
189
189
  CREATE INDEX if not exists admin_access_role_id_idx ON admin.role_access USING btree (role_id COLLATE pg_catalog."default");
190
190
 
191
+ alter table admin.role_access add column if not exists resource_id text;
192
+ COMMENT ON COLUMN admin.role_access.resource_id IS 'ID ресурсу';
193
+ alter table admin.role_access alter column route_id drop not null;
194
+
191
195
 
@@ -0,0 +1,2 @@
1
+ export default function getUserPermissions(uid?: string, pg?: any): Promise<any>;
2
+ //# sourceMappingURL=getUserPermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUserPermissions.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/auth/funcs/getUserPermissions.ts"],"names":[],"mappings":"AAUA,wBAA8B,kBAAkB,CAC9C,GAAG,CAAC,EAAE,MAAM,EACZ,EAAE,MAAmB,gBAoBtB"}
@@ -0,0 +1,24 @@
1
+ import pgClients from "../../pg/pgClients.js";
2
+ const q = `select resource_id as name,
3
+ array_intersect(coalesce(a.actions, array['read']), coalesce(c.actions, array['create', 'read','update','delete'])) as actions,
4
+ b.name as role
5
+ from admin.role_access a
6
+ left join admin.roles b on a.role_id=b.role_id and b.enabled
7
+ left join admin.user_roles c on a.role_id=c.role_id
8
+ where resource_id is not null and $1 in (a.user_uid, c.user_uid)`;
9
+ export default async function getUserPermissions(uid, pg = pgClients.client) {
10
+ if (!uid)
11
+ return [];
12
+ // ? in case pg.pk not set yet
13
+ const pks = await pg
14
+ .query(`SELECT json_object_agg(conrelid::regclass, (SELECT attname FROM pg_attribute WHERE attrelid = c.conrelid AND attnum = c.conkey[1]) )
15
+ FROM pg_constraint c WHERE contype = 'p' AND connamespace::regnamespace::text = 'admin'`)
16
+ .then((el) => el.rows?.[0]?.json_object_agg || {});
17
+ const permissions = pks["admin.role_access"] &&
18
+ pks["admin.user_roles"] &&
19
+ pks["admin.users"] &&
20
+ uid
21
+ ? await pg.query(q, [uid]).then((el) => el.rows || [])
22
+ : [];
23
+ return permissions;
24
+ }
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  export default function fsStorage(): {
3
3
  deleteFile: (fp: string) => Promise<void>;
4
- downloadFile: (fp: string, options?: Record<string, any>) => Promise<NonSharedBuffer | fs.ReadStream | {
4
+ downloadFile: (fp: string, options?: Record<string, any>) => Promise<Buffer<ArrayBufferLike> | fs.ReadStream | {
5
5
  original: string;
6
6
  full: string | null;
7
7
  } | null>;
@@ -0,0 +1,4 @@
1
+ import type { FastifyReply } from "fastify";
2
+ import type { ExtendedRequest } from "../../../types/core.js";
3
+ export default function checkPermissions(req: ExtendedRequest, reply: FastifyReply): Promise<null>;
4
+ //# sourceMappingURL=checkPermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkPermissions.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAMhC,wBAA8B,gBAAgB,CAC5C,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,YAAY,iBA6DpB"}
@@ -0,0 +1,36 @@
1
+ import logger from "../../logger/getLogger.js";
2
+ import getUserPermissions from "../../auth/funcs/getUserPermissions.js";
3
+ import pgClients from "../../pg/pgClients.js";
4
+ export default async function checkPermissions(req, reply) {
5
+ const { originalUrl: path, query, params, method, routeOptions, pg = pgClients.client, } = req;
6
+ const user = req.user || req.session?.passport?.user;
7
+ const body = req.body
8
+ ? JSON.stringify(req?.body || {}).substring(30)
9
+ : undefined;
10
+ const { permission } = (routeOptions?.config ||
11
+ {});
12
+ const permissions = (Array.isArray(permission) ? permission : permission?.split("|"))?.map((el) => el.split("."));
13
+ if (!permissions?.length) {
14
+ return null;
15
+ }
16
+ const userPermissions = await getUserPermissions(user?.uid, pg).then((arr) => arr.reduce((acc, curr) => ({ ...acc, [curr.name]: curr.actions }), {}));
17
+ const havePermission = Object.keys(userPermissions).length &&
18
+ permissions?.length &&
19
+ permissions.length ===
20
+ permissions.filter(([key, value]) => userPermissions[key]?.includes(value)).length;
21
+ if (!havePermission) {
22
+ logger.file("policy/permissions", {
23
+ path,
24
+ method,
25
+ params,
26
+ query,
27
+ body,
28
+ message: "access restricted: permissions",
29
+ uid: user?.uid,
30
+ });
31
+ return reply
32
+ .status(403)
33
+ .send({ error: "access restricted: permissions", code: 403 });
34
+ }
35
+ return null;
36
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"checkPolicy.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,oSAwL5E"}
1
+ {"version":3,"file":"checkPolicy.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,oSAoK5E"}
@@ -1,22 +1,8 @@
1
1
  import { config, logger } from "../../../../utils.js";
2
2
  import block from "../sqlInjection.js";
3
3
  export default function checkPolicy(req, reply) {
4
- const { originalUrl: path, hostname, query, params, headers, method, routeOptions, unittest, // legacy
5
- } = req;
4
+ const { originalUrl: path, hostname, query, params, headers, method, routeOptions, } = req;
6
5
  const user = req.user || req.session?.passport?.user;
7
- // ! skip locally, skip tests
8
- if ((config.local || unittest || process.env.NODE_ENV === "test") &&
9
- user?.user_type !== "viewer") {
10
- return null;
11
- }
12
- // ! skip non-API Requests, handle with vite/vike
13
- const isApi = routeOptions.method &&
14
- routeOptions.url &&
15
- typeof routeOptions.handler === "function" &&
16
- routeOptions.url !== "*";
17
- if (!isApi) {
18
- return null;
19
- }
20
6
  const body = req.body
21
7
  ? JSON.stringify(req?.body || {}).substring(30)
22
8
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/policy/index.ts"],"names":[],"mappings":"AAEA,iBAAe,MAAM,CAAC,OAAO,EAAE,GAAG,iBAQjC;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/policy/index.ts"],"names":[],"mappings":"AAKA,iBAAe,MAAM,CAAC,OAAO,EAAE,GAAG,iBAkCjC;AAED,eAAe,MAAM,CAAC"}
@@ -1,6 +1,27 @@
1
+ import config from "../../../config.js";
1
2
  import checkPolicy from "./funcs/checkPolicy.js";
3
+ import checkPermissions from "./funcs/checkPermissions.js";
2
4
  async function plugin(fastify) {
3
5
  fastify.addHook("preParsing", async (request, reply) => {
6
+ // ! skip locally, skip tests
7
+ if ((process.env.local === "true" || process.env.NODE_ENV === "test") &&
8
+ !config.debugAuth &&
9
+ request.user?.user_type !== "viewer") {
10
+ console.log("skipping policy / permissions check", request.url);
11
+ return null;
12
+ }
13
+ // ! skip non-API Requests, handle with vite/vike
14
+ const isApi = request.routeOptions?.method &&
15
+ request.routeOptions?.url &&
16
+ typeof request.routeOptions?.handler === "function" &&
17
+ request.routeOptions?.url !== "*";
18
+ if (!isApi) {
19
+ return null;
20
+ }
21
+ const resp1 = await checkPermissions(request, reply);
22
+ if (resp1) {
23
+ return resp1;
24
+ }
4
25
  const resp = checkPolicy(request, reply);
5
26
  if (resp) {
6
27
  return resp;
@@ -1,14 +1,14 @@
1
1
  import { type FastifyReply } from "fastify";
2
2
  import { type ExtendedPG } from "../../../types/core.js";
3
- export default function accessGroup({ pg, params, user, unittest, }: {
3
+ export default function accessGroup({ pg, params, user, }: {
4
4
  pg: ExtendedPG;
5
5
  params: {
6
6
  id: string;
7
7
  };
8
8
  user: Record<string, any>;
9
- unittest?: any;
10
9
  }, reply: FastifyReply): Promise<{
11
10
  routes: any;
11
+ resources: any;
12
12
  users: any;
13
13
  }>;
14
14
  //# sourceMappingURL=access.group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access.group.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/controllers/access.group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,wBAA8B,WAAW,CACvC,EACE,EAAqB,EACrB,MAAM,EACN,IAAS,EACT,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,EAED,KAAK,EAAE,YAAY;;;GA+BpB"}
1
+ {"version":3,"file":"access.group.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/controllers/access.group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,wBAA8B,WAAW,CACvC,EACE,EAAqB,EACrB,MAAM,EACN,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,EAED,KAAK,EAAE,YAAY;;;;GA4CpB"}
@@ -1,5 +1,5 @@
1
1
  import { pgClients, getAdminAccess } from "../../../../utils.js";
2
- export default async function accessGroup({ pg = pgClients.client, params, user = {}, unittest, }, reply) {
2
+ export default async function accessGroup({ pg = pgClients.client, params, user = {}, }, reply) {
3
3
  if (!params?.id) {
4
4
  return reply.status(400).send("not enough params: id");
5
5
  }
@@ -8,15 +8,23 @@ export default async function accessGroup({ pg = pgClients.client, params, user
8
8
  id: params.id,
9
9
  user,
10
10
  });
11
- if (check?.message && check?.status && !unittest) {
11
+ if (check?.message && check?.status && process.env.NODE_ENV !== "test") {
12
12
  return reply.status(check?.status).send(check?.message);
13
13
  }
14
- const { rows: routes = [] } = await pg.query(`select a.route_id as path, b.actions from admin.routes a
14
+ const routes = await pg
15
+ .query(`select a.route_id as path, b.actions from admin.routes a
15
16
  left join admin.role_access b on a.route_id=b.route_id
16
- where b.role_id=$1`, [params.id]);
17
- const { rows: users = [] } = await pg.query(`select user_uid as id, user_name as name, access_granted,
17
+ where b.role_id=$1`, [params.id])
18
+ .then((el) => el.rows || []);
19
+ const resources = await pg
20
+ .query(`select resource_id, actions from admin.role_access
21
+ where resource_id is not null and role_id=$1`, [params.id])
22
+ .then((el) => el.rows || []);
23
+ const users = await pg
24
+ .query(`select user_uid as id, user_name as name, access_granted,
18
25
  b.cdate as user_created, b.last_activity_date as last_activity from admin.user_roles a
19
26
  left join admin.users b on a.user_uid=b.uid
20
- where a.role_id=$1`, [params.id]);
21
- return { routes, users };
27
+ where a.role_id=$1`, [params.id])
28
+ .then((el) => el.rows || []);
29
+ return { routes, resources, users };
22
30
  }
@@ -1,15 +1,15 @@
1
1
  import { type FastifyReply } from "fastify";
2
2
  import { type ExtendedPG } from "../../../types/core.js";
3
- export default function accessGroupPost({ pg, params, user, body, unittest, }: {
3
+ export default function accessGroupPost({ pg, params, user, body, }: {
4
4
  pg: ExtendedPG;
5
5
  params: {
6
6
  id: string;
7
7
  };
8
8
  user: Record<string, any>;
9
9
  body: Record<string, any>;
10
- unittest?: any;
11
10
  }, reply: FastifyReply): Promise<{
12
11
  routes: any;
12
+ resources: any;
13
13
  users: any;
14
14
  }>;
15
15
  //# sourceMappingURL=access.group.post.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access.group.post.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/controllers/access.group.post.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKzD,wBAA8B,eAAe,CAC3C,EACE,EAAqB,EACrB,MAAM,EACN,IAAS,EACT,IAAS,EACT,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,EACD,KAAK,EAAE,YAAY;;;GA2FpB"}
1
+ {"version":3,"file":"access.group.post.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/controllers/access.group.post.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKzD,wBAA8B,eAAe,CAC3C,EACE,EAAqB,EACrB,MAAM,EACN,IAAS,EACT,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,EACD,KAAK,EAAE,YAAY;;;;GA+GpB"}
@@ -1,13 +1,13 @@
1
1
  import { pgClients, getAdminAccess } from "../../../../utils.js";
2
2
  import accessGroup from "./access.group.js";
3
- export default async function accessGroupPost({ pg = pgClients.client, params, user = {}, body = {}, unittest, }, reply) {
3
+ export default async function accessGroupPost({ pg = pgClients.client, params, user = {}, body = {}, }, reply) {
4
4
  const { id } = params;
5
5
  if (!user?.uid) {
6
6
  return reply.status(401).send("unauthorized");
7
7
  }
8
8
  // restrict access - admin only
9
9
  const check = await getAdminAccess({ id, user });
10
- if (check?.message && check?.status && !unittest) {
10
+ if (check?.message && check?.status && process.env.NODE_ENV !== "test") {
11
11
  return reply.status(check?.status).send(check?.message);
12
12
  }
13
13
  const { users = [], routes = [] } = body;
@@ -21,18 +21,27 @@ export default async function accessGroupPost({ pg = pgClients.client, params, u
21
21
  const routesDB = await pg
22
22
  .query('select array_agg(route_id) as "routesDB" from admin.routes where enabled')
23
23
  .then((el) => el.rows?.[0]?.routesDB || []);
24
- await pg.query("delete from admin.role_access where role_id=$1;", [id]);
24
+ await pg.query("delete from admin.role_access where role_id=$1", [id]);
25
25
  await Promise.all(routes
26
- .filter((el) => !routesDB?.includes(el.path))
26
+ .filter((el) => el.path && !routesDB?.includes(el.path))
27
27
  .map((el) => pg.query("insert into admin.routes(route_id) values($1)", [el.path])));
28
28
  await Promise.all(routes
29
- .filter((el) => /*routesDB?.includes?.(el.path) && */ el.actions)
29
+ .filter((el) => el.path && el.actions)
30
30
  .map((el) => pg.query("insert into admin.role_access(role_id,route_id,actions) values ($1,$2,$3)", [id, el.path, el.actions])));
31
- const { rows } = await pg.query(`select a.route_id as path, b.actions as actions from admin.routes a
31
+ await Promise.all(routes
32
+ .filter((el) => el.resource && el.actions)
33
+ .map((el) => pg.query("insert into admin.role_access(resource_id,route_id,actions) values ($1,$2,$3)", [id, el.path, el.actions])));
34
+ const rows = await pg
35
+ .query(`select a.route_id as path, b.actions as actions from admin.routes a
32
36
  left join admin.role_access b on a.route_id=b.route_id
33
- where b.role_id=$1`, [id]);
37
+ where b.role_id=$1`, [id])
38
+ .then((el) => el.rows || []);
39
+ const resources = await pg
40
+ .query(`select resource_id, actions from admin.role_access
41
+ where resource_id is not null and role_id=$1`, [id])
42
+ .then((el) => el.rows || []);
34
43
  if (!users?.length) {
35
- return reply.status(200).send({ id, routes: rows });
44
+ return reply.status(200).send({ id, routes: rows, resources });
36
45
  }
37
46
  }
38
47
  const q = `delete from admin.user_roles where role_id='${id.replace(/'/g, "''")}';
@@ -45,7 +54,6 @@ export default async function accessGroupPost({ pg = pgClients.client, params, u
45
54
  pg,
46
55
  params,
47
56
  user,
48
- unittest,
49
57
  }, reply);
50
58
  return res;
51
59
  }
@@ -0,0 +1,2 @@
1
+ export default function accessUser(req: any, reply: any): Promise<any>;
2
+ //# sourceMappingURL=access.user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.user.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/controllers/access.user.ts"],"names":[],"mappings":"AAEA,wBAA8B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAkC5D"}
@@ -0,0 +1,25 @@
1
+ import { config, pgClients } from "../../../../utils.js";
2
+ export default async function accessUser(req, reply) {
3
+ if (!req.params?.id) {
4
+ return reply
5
+ .status(400)
6
+ .send({ error: "not enough params: id", code: 400 });
7
+ }
8
+ // restrict access - admin only
9
+ if (!config.local && !req.user?.user_type?.includes?.("admin")) {
10
+ return reply.status(403).send({ error: "access restricted", code: 403 });
11
+ }
12
+ const { pg = pgClients.client } = req;
13
+ const routes = await pg
14
+ .query(`select a.route_id as path, b.actions from admin.routes a
15
+ left join admin.role_access b on a.route_id=b.route_id
16
+ where b.user_uid=$1`, [req.params.id])
17
+ .then((el) => el.rows || []);
18
+ const user = await pg
19
+ .query(`select user_uid as id, user_name as name, access_granted,
20
+ b.cdate as user_created, b.last_activity_date as last_activity from admin.user_roles a
21
+ left join admin.users b on a.user_uid=b.uid
22
+ where a.user_uid=$1`, [req.params.id])
23
+ .then((el) => el.rows?.[0]);
24
+ return reply.status(200).send({ routes, user });
25
+ }
@@ -0,0 +1,2 @@
1
+ export default function accessUserPost(req: any, reply: any): Promise<any>;
2
+ //# sourceMappingURL=access.user.post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.user.post.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/controllers/access.user.post.ts"],"names":[],"mappings":"AAIA,wBAA8B,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBA8DhE"}
@@ -0,0 +1,37 @@
1
+ import { config, pgClients } from "../../../../utils.js";
2
+ import accessUser from "./access.user.js";
3
+ export default async function accessUserPost(req, reply) {
4
+ const { pg = pgClients.client, params, body, user } = req;
5
+ if (!params?.id) {
6
+ return reply
7
+ .status(400)
8
+ .send({ error: "not enough params: id", code: 400 });
9
+ }
10
+ if (!user?.uid) {
11
+ return reply.status(401).send({ error: "unauthorized", code: 401 });
12
+ }
13
+ // restrict access - admin only
14
+ if (!config.local && !user?.user_type?.includes?.("admin")) {
15
+ return reply.status(403).send({ error: "access restricted", code: 403 });
16
+ }
17
+ await pg.query("delete from admin.role_access where user_uid=$1", [
18
+ params.id,
19
+ ]);
20
+ if (!body?.routes?.length) {
21
+ return reply.status(200).send({ id: params.id, routes: [] });
22
+ }
23
+ const routesDB = await pg
24
+ .query("select array_agg(route_id) from admin.routes where enabled")
25
+ .then((el) => el.rows?.[0]?.array_agg || []);
26
+ await Promise.all(body.routes
27
+ .filter((el) => el.path && !routesDB?.includes(el.path))
28
+ .map((el) => pg.query("insert into admin.routes(route_id) values($1)", [el.path])));
29
+ await Promise.all(body.routes
30
+ .filter((el) => el.path && el.actions)
31
+ .map((el) => pg.query("insert into admin.role_access(user_uid,route_id,actions) values ($1,$2,$3)", [params.id, el.path, el.actions])));
32
+ await Promise.all(body.routes
33
+ .filter((el) => el.resource && el.actions)
34
+ .map((el) => pg.query("insert into admin.role_access(user_uid,resource_id,actions) values ($1,$2,$3)", [params.id, el.resource, el.actions])));
35
+ const result = await accessUser({ pg, params }, reply);
36
+ return result;
37
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/access/index.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAYxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/access/index.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAkBxD"}
@@ -1,9 +1,13 @@
1
1
  import accessGroup from "./controllers/access.group.js";
2
2
  import accessGroupPost from "./controllers/access.group.post.js";
3
+ import accessUser from "./controllers/access.user.js";
4
+ import accessUserPost from "./controllers/access.user.post.js";
3
5
  import accessInterface from "./controllers/access.interface.js";
4
- import { accessGroupPostSchema, accessGroupSchema, accessInterfaceSchema, } from "./schema.js";
6
+ import { accessGroupPostSchema, accessGroupSchema, accessInterfaceSchema, accessUserPostSchema, accessUserSchema, } from "./schema.js";
5
7
  export default function route(fastify, opt = {}) {
6
8
  fastify.get("/access-group/:id", { schema: accessGroupSchema }, accessGroup);
7
9
  fastify.post("/access-group/:id", { schema: accessGroupPostSchema }, accessGroupPost);
10
+ fastify.get("/access-user/:id", { schema: accessUserSchema }, accessUser);
11
+ fastify.post("/access-user/:id", { schema: accessUserPostSchema }, accessUserPost);
8
12
  fastify.get("/access-interface/:name", { schema: accessInterfaceSchema }, accessInterface);
9
13
  }
@@ -1,6 +1,6 @@
1
1
  declare const _default: null;
2
2
  export default _default;
3
- export { accessGroupSchema, accessGroupPostSchema, accessInterfaceSchema };
3
+ export { accessGroupSchema, accessUserSchema, accessGroupPostSchema, accessInterfaceSchema, accessUserPostSchema, };
4
4
  declare const accessGroupSchema: {
5
5
  params: {
6
6
  type: string;
@@ -13,6 +13,18 @@ declare const accessGroupSchema: {
13
13
  required: string[];
14
14
  };
15
15
  };
16
+ declare const accessUserSchema: {
17
+ params: {
18
+ type: string;
19
+ properties: {
20
+ id: {
21
+ type: string;
22
+ pattern: string;
23
+ };
24
+ };
25
+ required: string[];
26
+ };
27
+ };
16
28
  declare const accessInterfaceSchema: {
17
29
  params: {
18
30
  type: string;
@@ -57,4 +69,36 @@ declare const accessGroupPostSchema: {
57
69
  };
58
70
  };
59
71
  };
72
+ declare const accessUserPostSchema: {
73
+ params: {
74
+ type: string;
75
+ properties: {
76
+ id: {
77
+ type: string;
78
+ pattern: string;
79
+ };
80
+ };
81
+ required: string[];
82
+ };
83
+ body: {
84
+ type: string;
85
+ properties: {
86
+ users: {
87
+ type: string;
88
+ items: {
89
+ type: string;
90
+ properties: {
91
+ id: {
92
+ type: string;
93
+ pattern: string;
94
+ };
95
+ };
96
+ };
97
+ };
98
+ routes: {
99
+ type: string;
100
+ };
101
+ };
102
+ };
103
+ };
60
104
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../server/routes/access/schema.ts"],"names":[],"mappings":";AAAA,wBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,CAAA;AAE1E,QAAA,MAAM,iBAAiB;;;;;;;;;;;CAQtB,CAAC;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;;;;CAQ1B,CAAC;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C1B,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../server/routes/access/schema.ts"],"names":[],"mappings":";AAAA,wBAAoB;AACpB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;;;;;;;;CAQtB,CAAC;AAEF,QAAA,MAAM,gBAAgB;;;;;;;;;;;CAQrB,CAAC;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;;;;CAQ1B,CAAC;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C1B,CAAC;AAEF,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CzB,CAAC"}
@@ -1,64 +1,118 @@
1
1
  export default null;
2
- export { accessGroupSchema, accessGroupPostSchema, accessInterfaceSchema };
2
+ export { accessGroupSchema, accessUserSchema, accessGroupPostSchema, accessInterfaceSchema, accessUserPostSchema, };
3
3
  const accessGroupSchema = {
4
4
  params: {
5
- type: 'object',
5
+ type: "object",
6
6
  properties: {
7
- id: { type: 'string', pattern: '^([\\d\\w._-]+)$' },
7
+ id: { type: "string", pattern: "^([\\d\\w._-]+)$" },
8
8
  },
9
- required: ['id'],
9
+ required: ["id"],
10
+ },
11
+ };
12
+ const accessUserSchema = {
13
+ params: {
14
+ type: "object",
15
+ properties: {
16
+ id: { type: "string", pattern: "^([\\d\\w._-]+)$" },
17
+ },
18
+ required: ["id"],
10
19
  },
11
20
  };
12
21
  const accessInterfaceSchema = {
13
22
  params: {
14
- type: 'object',
23
+ type: "object",
15
24
  properties: {
16
- name: { type: 'string', pattern: '^([\\d\\w._-]+)$' },
25
+ name: { type: "string", pattern: "^([\\d\\w._-]+)$" },
17
26
  },
18
- required: ['name'],
27
+ required: ["name"],
19
28
  },
20
29
  };
21
30
  const accessGroupPostSchema = {
22
31
  params: {
23
- type: 'object',
32
+ type: "object",
24
33
  properties: {
25
- id: { type: 'string', pattern: '^([\\d\\w._-]+)$' },
34
+ id: { type: "string", pattern: "^([\\d\\w._-]+)$" },
26
35
  },
27
- required: ['id'],
36
+ required: ["id"],
28
37
  },
29
38
  body: {
30
- type: 'object',
39
+ type: "object",
31
40
  properties: {
32
41
  users: {
33
- type: 'array',
42
+ type: "array",
34
43
  items: {
35
- type: 'object',
44
+ type: "object",
36
45
  properties: {
37
46
  id: {
38
- type: 'string',
39
- pattern: '^([\\d\\w._-]+)$',
47
+ type: "string",
48
+ pattern: "^([\\d\\w._-]+)$",
40
49
  },
41
50
  },
42
51
  },
43
52
  },
44
53
  routes: {
45
- type: 'array',
54
+ type: "array",
46
55
  /*items: {
47
- type: 'object',
48
- properties: {
49
- path: {
50
- type: 'string',
51
- pattern: '^([\\d\\w._-]+)$',
52
- },
53
- actions: {
54
- type: 'array',
55
- items: {
56
- type: 'string',
57
- enum: ['get', 'add', 'edit', 'del'],
56
+ type: 'object',
57
+ properties: {
58
+ path: {
59
+ type: 'string',
60
+ pattern: '^([\\d\\w._-]+)$',
61
+ },
62
+ actions: {
63
+ type: 'array',
64
+ items: {
65
+ type: 'string',
66
+ enum: ['get', 'add', 'edit', 'del'],
67
+ },
68
+ },
58
69
  },
70
+ },*/
71
+ },
72
+ },
73
+ },
74
+ };
75
+ const accessUserPostSchema = {
76
+ params: {
77
+ type: "object",
78
+ properties: {
79
+ id: { type: "string", pattern: "^([\\d\\w._-]+)$" },
80
+ },
81
+ required: ["id"],
82
+ },
83
+ body: {
84
+ type: "object",
85
+ properties: {
86
+ users: {
87
+ type: "array",
88
+ items: {
89
+ type: "object",
90
+ properties: {
91
+ id: {
92
+ type: "string",
93
+ pattern: "^([\\d\\w._-]+)$",
59
94
  },
60
95
  },
61
- },*/
96
+ },
97
+ },
98
+ routes: {
99
+ type: "array",
100
+ /*items: {
101
+ type: 'object',
102
+ properties: {
103
+ path: {
104
+ type: 'string',
105
+ pattern: '^([\\d\\w._-]+)$',
106
+ },
107
+ actions: {
108
+ type: 'array',
109
+ items: {
110
+ type: 'string',
111
+ enum: ['get', 'add', 'edit', 'del'],
112
+ },
113
+ },
114
+ },
115
+ },*/
62
116
  },
63
117
  },
64
118
  },
@@ -1 +1 @@
1
- {"version":3,"file":"getUserInfo.d.ts","sourceRoot":"","sources":["../../../../../../server/routes/auth/controllers/core/getUserInfo.ts"],"names":[],"mappings":"AAiCA,wBAA8B,WAAW,CAAC,GAAG,EAAE,GAAG,eAkEjD"}
1
+ {"version":3,"file":"getUserInfo.d.ts","sourceRoot":"","sources":["../../../../../../server/routes/auth/controllers/core/getUserInfo.ts"],"names":[],"mappings":"AAmCA,wBAA8B,WAAW,CAAC,GAAG,EAAE,GAAG,eA+EjD"}
@@ -1,6 +1,8 @@
1
1
  import config from "../../../../../config.js";
2
- import { applyHook } from "../../../../../utils.js";
2
+ import pgClients from "../../../../plugins/pg/pgClients.js";
3
+ import applyHook from "../../../../plugins/hook/applyHook.js";
3
4
  import getRedis from "../../../../plugins/redis/funcs/getRedis.js";
5
+ import getUserPermissions from "../../../../plugins/auth/funcs/getUserPermissions.js";
4
6
  const rclient2 = getRedis({ db: 2 });
5
7
  const q = `select
6
8
 
@@ -29,23 +31,28 @@ left join admin.user_roles d on
29
31
  )
30
32
  where $1 in (b.user_uid, d.user_uid)`;
31
33
  export default async function getUserInfo(req) {
34
+ const { pg = pgClients.client, user, session, cookies } = req;
32
35
  const payload = {
33
- sessionID: req.session?.sessionId,
36
+ sessionID: session?.sessionId,
34
37
  };
35
38
  if (config.auth?.debug) {
36
- const str = await rclient2.get(`${req.session?.sessionId}-sessionInfo`);
39
+ const str = await rclient2.get(`${session?.sessionId}-sessionInfo`);
37
40
  Object.assign(payload, {
38
41
  redisUser: str ? JSON.parse(str) : null,
39
- cookies: req.cookies,
42
+ cookies,
40
43
  });
41
44
  }
42
- if (!req.user) {
45
+ if (!user?.uid) {
43
46
  const hookData1 = await applyHook("afterUser", { payload });
44
47
  return hookData1 || payload;
45
48
  }
46
- const userInfo = Object.fromEntries(Object.entries(req.user).filter(([key]) => !["salt", "password"].includes(key)));
47
- const { rows = [] } = req.pg?.pk?.["admin.properties"]
48
- ? await req.pg.query(`select
49
+ const userInfo = Object.fromEntries(Object.entries(user).filter(([key]) => !["salt", "password"].includes(key)));
50
+ const settingKeys = typeof config.settingKeys === "string"
51
+ ? config.settingKeys.split("|")
52
+ : config.settingKeys || ["site", "map", "admin"];
53
+ const settings = pg?.pk?.["admin.properties"]
54
+ ? await pg
55
+ .query(`select
49
56
  property_key as key,
50
57
  case
51
58
  when property_text is not null then to_jsonb(property_text)
@@ -53,27 +60,27 @@ export default async function getUserInfo(req) {
53
60
  when property_json is not null then property_json::jsonb
54
61
  end as val
55
62
  from admin.properties
56
- where property_key~'^(${config.settingKeys || "site|map|admin"})'`)
57
- : {};
58
- const settings = rows.reduce((p, { key, val }) => {
59
- const [k1, k2] = key.split(".");
60
- p[k1] = p[k1] || {};
61
- p[k1][k2] = val;
62
- return p;
63
- }, {});
64
- const access = req.pg?.pk?.["admin.role_access"] &&
65
- req.pg?.pk?.["admin.user_roles"] &&
66
- req.pg?.pk?.["admin.users"] &&
63
+ where property_key like any($1)`, [settingKeys.map((key) => `${key}%`)])
64
+ .then((el) => el.rows.reduce((p, { key, val }) => {
65
+ const [k1, k2] = key.split(".");
66
+ p[k1] = p[k1] || {};
67
+ p[k1][k2] = val;
68
+ return p;
69
+ }, {}))
70
+ : [];
71
+ const access = pg?.pk?.["admin.role_access"] &&
72
+ pg?.pk?.["admin.user_roles"] &&
73
+ pg?.pk?.["admin.users"] &&
67
74
  req.user?.uid
68
- ? await req.pg.query(q, [req.user.uid]).then((el) => el.rows || [])
75
+ ? await pg.query(q, [user.uid]).then((el) => el.rows || [])
69
76
  : [];
77
+ const permissions = await getUserPermissions(user?.uid, pg);
70
78
  Object.assign(payload, {
71
79
  user: userInfo,
72
80
  settings,
73
- session: !config.auth?.debug
74
- ? { ...req.session, passport: null }
75
- : req.session,
81
+ session: !config.auth?.debug ? { ...session, passport: null } : session,
76
82
  access,
83
+ permissions,
77
84
  });
78
85
  const hookData = await applyHook("afterUser", { payload });
79
86
  return hookData || payload;
@@ -1 +1 @@
1
- {"version":3,"file":"getMenu.d.ts","sourceRoot":"","sources":["../../../../../server/routes/menu/controllers/getMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA4CzD,wBAA8B,SAAS,CACrC,EACE,IAAS,EACT,OAAO,EACP,EAAqB,GACtB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,EAAE,EAAE,UAAU,CAAC;CAChB,EACD,KAAK,EAAE,YAAY,GAAG,IAAI;;;;;;;;;;;;;;GA0G3B"}
1
+ {"version":3,"file":"getMenu.d.ts","sourceRoot":"","sources":["../../../../../server/routes/menu/controllers/getMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA4CzD,wBAA8B,SAAS,CACrC,EACE,IAAS,EACT,OAAO,EACP,EAAqB,GACtB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,EAAE,EAAE,UAAU,CAAC;CAChB,EACD,KAAK,EAAE,YAAY,GAAG,IAAI;;;;;;;;;;;;;;GA8G3B"}
@@ -37,9 +37,12 @@ export default async function adminMenu({ user = {}, session, pg = pgClients.cli
37
37
  const menus = isProduction && menuCache.length ? menuCache : await readMenu();
38
38
  if (!pg)
39
39
  return { menus };
40
- const rows = pgClients.client?.pk?.["admin.properties"]
41
- ? await pgClients.client
42
- .query(`select property_key as key,property_text as val from admin.properties where property_key~'^(${config.settingKeys || "site|map|admin"})'`)
40
+ const settingKeys = typeof config.settingKeys === "string"
41
+ ? config.settingKeys.split("|")
42
+ : config.settingKeys || ["site", "map", "admin"];
43
+ const rows = pg?.pk?.["admin.properties"]
44
+ ? await pg
45
+ .query("select property_key as key,property_text as val from admin.properties where property_key like any($1)", [settingKeys.map((key) => `${key}%`)])
43
46
  .then((el) => el.rows || [])
44
47
  : [];
45
48
  const settings = rows.reduce((p, { key, val }) => {
@@ -49,6 +49,7 @@ export interface ExtendedSqlite extends InstanceType<typeof Database> {
49
49
  tlist: string[];
50
50
  }
51
51
  export interface ExtendedRouteOptionsConfig extends FastifyContextConfig {
52
+ permission?: string[] | string;
52
53
  policy?: string[] | string;
53
54
  role?: string;
54
55
  auth?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../server/types/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../server/types/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM1B,QAAA,IAAI,QAAQ,EAAE,GAAG,CAAC;AASlB,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAC3B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;CACjE;AAYD,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;QAC7C,MAAM,EAAE,0BAA0B,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,OAAO,QAAQ,CAAC;IACnE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
package/dist/utils.d.ts CHANGED
@@ -87,6 +87,7 @@ export { default as uploadChunk } from "./server/plugins/upload/uploadChunk.js";
87
87
  export { default as s3Client } from "./server/plugins/file/providers/s3/client.js";
88
88
  export { default as dumpDatabase } from "./script/dump.js";
89
89
  export { default as migrate } from "./script/migrate.js";
90
+ export { default as getUserPermissions } from "./server/plugins/auth/funcs/getUserPermissions.js";
90
91
  declare const _default: null;
91
92
  export default _default;
92
93
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
package/dist/utils.js CHANGED
@@ -105,4 +105,5 @@ export { default as s3Client } from "./server/plugins/file/providers/s3/client.j
105
105
  // scripts
106
106
  export { default as dumpDatabase } from "./script/dump.js";
107
107
  export { default as migrate } from "./script/migrate.js";
108
+ export { default as getUserPermissions } from "./server/plugins/auth/funcs/getUserPermissions.js";
108
109
  export default null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/fastify-table",
3
- "version": "2.0.156",
3
+ "version": "2.0.158",
4
4
  "type": "module",
5
5
  "description": "core-plugins",
6
6
  "keywords": [
@@ -1 +0,0 @@
1
- [{"name":"crm.account_id","module":"codr","type":"select","hash":"1576257d021802fe8d114b45bdc6aa3b","dbhash":"1576257d021802fe8d114b45bdc6aa3b","update":false},{"name":"crm.account_id_proj","module":"codr","type":"select","hash":"aefa800c926a15b240cf81bc7e0eaf85","dbhash":"aefa800c926a15b240cf81bc7e0eaf85","update":false},{"name":"gis.srid_from_setting","module":"codr","type":"select","hash":"a62fc59ad8643ccef23c6654cff5da08","dbhash":"a62fc59ad8643ccef23c6654cff5da08","update":false},{"name":"td.dict_customer","module":"codr","type":"select","hash":"b2629b2d8af9fd6c87635c025fc182f1","dbhash":"b2629b2d8af9fd6c87635c025fc182f1","update":false},{"name":"td.doc_type","module":"codr","type":"select","hash":"ef1456c27da3cd6b849b480df8234eb1","dbhash":"ef1456c27da3cd6b849b480df8234eb1","update":false},{"name":"td.proj_doc_id","module":"codr","type":"select","hash":"54f46c0f73e66e68fbd0f96f234abbeb","dbhash":"54f46c0f73e66e68fbd0f96f234abbeb","update":false},{"name":"td.proj_doc_id_parent","module":"codr","type":"select","hash":"33099b34ecacebaa36cea0716b665d09","dbhash":"33099b34ecacebaa36cea0716b665d09","update":false},{"name":"td.proj_id","module":"codr","type":"select","hash":"ef2978070567c3fd28ec1b36631cb90b","dbhash":"ef2978070567c3fd28ec1b36631cb90b","update":false},{"name":"td.proj_plg_id","module":"codr","type":"select","hash":"9c36eee88d8f8675fdb5496d26e26d9b","dbhash":"9c36eee88d8f8675fdb5496d26e26d9b","update":false},{"name":"td.proj_plg_id_parent","module":"codr","type":"select","hash":"c362bcc7b72c6a227055876ca1092361","dbhash":"c362bcc7b72c6a227055876ca1092361","update":false},{"name":"td.proj_type","module":"codr","type":"select","hash":"cebafeeb771e593ce741df6d02f9dec1","dbhash":"cebafeeb771e593ce741df6d02f9dec1","update":false},{"name":"user_id","module":"codr","type":"select","hash":"4339922d053e66ccd43e34f2838037b1","dbhash":"4339922d053e66ccd43e34f2838037b1","update":false},{"name":"core.user_mentioned","module":"core","type":"select","hash":"6687f073de73a3ec4b6e0811d9310e7e","dbhash":"6687f073de73a3ec4b6e0811d9310e7e","update":false},{"name":"td.odr_creator_department","module":"codr","type":"cls","hash":"fad180803a718000898a9f6253181f41","dbhash":"fad180803a718000898a9f6253181f41","update":false},{"name":"td.plg_survey","module":"codr","type":"cls","hash":"5c7c5032fb65f54f07ac31631d7ac2d5","dbhash":"5c7c5032fb65f54f07ac31631d7ac2d5","update":false},{"name":"td.proj_stat_type","module":"codr","type":"cls","hash":"ba13bcbc4d602e657b132478fcb6e29a","dbhash":"ba13bcbc4d602e657b132478fcb6e29a","update":false},{"name":"td.proj_type_tzrdr","module":"codr","type":"cls","hash":"0e6a34cd1e9a3e0749378c40b2dbb176","dbhash":"0e6a34cd1e9a3e0749378c40b2dbb176","update":false},{"name":"td.proj_validity_type","module":"codr","type":"cls","hash":"c0d2edcf88bc49cc07fc4da850a8caaf","dbhash":"c0d2edcf88bc49cc07fc4da850a8caaf","update":false},{"name":"td.stage","module":"codr","type":"cls","hash":"157956e0222a7c39f3cf6bd84fe998ae","dbhash":"157956e0222a7c39f3cf6bd84fe998ae","update":false},{"name":"td.status","module":"codr","type":"cls","hash":"bf64d2cfe3358ec3d3e96529d6c5a2d2","dbhash":"bf64d2cfe3358ec3d3e96529d6c5a2d2","update":false},{"name":"users.user_type","module":"codr","type":"cls","hash":"750ece56e1d55cd7a1e1b002df88ec91","dbhash":"750ece56e1d55cd7a1e1b002df88ec91","update":false},{"name":"yes_no","module":"codr","type":"cls","hash":"50c527053426248c20b0a2f112ff9046","dbhash":"50c527053426248c20b0a2f112ff9046","update":false},{"name":"constraint_action","module":"core","type":"cls","hash":"1b7129eae9eb42106ed6e646223c806a","dbhash":"1b7129eae9eb42106ed6e646223c806a","update":false},{"name":"constraint_matchtype","module":"core","type":"cls","hash":"446ad903e69a391748a8a27bae2dc5cd","dbhash":"446ad903e69a391748a8a27bae2dc5cd","update":false},{"name":"constraint_type_full","module":"core","type":"cls","hash":"9e1cc580273f7e73fbc08ee553ad8f64","dbhash":"9e1cc580273f7e73fbc08ee553ad8f64","update":false},{"name":"core.user_type","module":"core","type":"cls","hash":"728bc9e0bcc88de83ec56d8dc7e7efff","dbhash":"728bc9e0bcc88de83ec56d8dc7e7efff","update":false}]
@@ -1 +0,0 @@
1
- [{"name":"prc.application_id","module":"APPLICATION","type":"select","hash":"d5b27c80a2a4682e164c8713f36053fd","dbhash":"d5b27c80a2a4682e164c8713f36053fd","update":false},{"name":"prc.application_status.parent","module":"APPLICATION","type":"select","hash":"1d63a805e56b9b350f7a2ec7df26da3c","dbhash":"1d63a805e56b9b350f7a2ec7df26da3c","update":false},{"name":"prc.application_type","module":"APPLICATION","type":"select","hash":"fa2baf8fbb896363b740a74487281b6b","dbhash":"fa2baf8fbb896363b740a74487281b6b","update":false},{"name":"prc.parcel_purpose_id","module":"APPLICATION","type":"select","hash":"22e43518957449f90b63170033b4ae3b","dbhash":"22e43518957449f90b63170033b4ae3b","update":false},{"name":"prc.parcel_status.parent","module":"APPLICATION","type":"select","hash":"7310662b3e674b4dd3c3a0ae4bc76c80","dbhash":"7310662b3e674b4dd3c3a0ae4bc76c80","update":false},{"name":"addr.address_id","module":"LAND-CADASTRE","type":"select","hash":"19c0d463fa55a284d789bb15318f5ef7","dbhash":"19c0d463fa55a284d789bb15318f5ef7","update":false},{"name":"addr.address_id_full","module":"LAND-CADASTRE","type":"select","hash":"6257b7f173167b7057cc2ff1859a21c1","dbhash":"6257b7f173167b7057cc2ff1859a21c1","update":false},{"name":"addr.address_id_parent","module":"LAND-CADASTRE","type":"select","hash":"01b41b8690c6eb5ad3638d74ae4c007d","dbhash":"01b41b8690c6eb5ad3638d74ae4c007d","update":false},{"name":"addr.city_id","module":"LAND-CADASTRE","type":"select","hash":"a943aa5241a30a33c88e58d223d201db","dbhash":"a943aa5241a30a33c88e58d223d201db","update":false},{"name":"addr.district_id","module":"LAND-CADASTRE","type":"select","hash":"a811b43f9d0eb6e79a796e0a5b988294","dbhash":"a811b43f9d0eb6e79a796e0a5b988294","update":false},{"name":"addr.street_id_full","module":"LAND-CADASTRE","type":"select","hash":"d0e3db667578cf8017e69ca6c0c42b0f","dbhash":"d0e3db667578cf8017e69ca6c0c42b0f","update":false},{"name":"address_id","module":"LAND-CADASTRE","type":"select","hash":"e993b5c610baa695cbc8db8f5d20af5a","dbhash":"e993b5c610baa695cbc8db8f5d20af5a","update":false},{"name":"gis.srid_from_setting","module":"LAND-CADASTRE","type":"select","hash":"138a168c385a79ec7a3e949be4daef57","dbhash":"138a168c385a79ec7a3e949be4daef57","update":false},{"name":"prc.acc_id","module":"LAND-CADASTRE","type":"select","hash":"3ed8c88c51586b256b97743f07ca4821","dbhash":"3ed8c88c51586b256b97743f07ca4821","update":false},{"name":"prc.cad_zone_id","module":"LAND-CADASTRE","type":"select","hash":"1c53abf0fad143bbba6b331f9ddd8272","dbhash":"1c53abf0fad143bbba6b331f9ddd8272","update":false},{"name":"prc.decision_type","module":"LAND-CADASTRE","type":"select","hash":"f9490ca91fa59d256651f51262300a75","dbhash":"f9490ca91fa59d256651f51262300a75","update":false},{"name":"prc.doc_id","module":"LAND-CADASTRE","type":"select","hash":"185d98585e3e0be5d4ee929a19b03bfe","dbhash":"185d98585e3e0be5d4ee929a19b03bfe","update":false},{"name":"prc.doc_id_note","module":"LAND-CADASTRE","type":"select","hash":"c83b6536588cfa2ab7b5bac00f04bcd3","dbhash":"c83b6536588cfa2ab7b5bac00f04bcd3","update":false},{"name":"prc.doc_id_short","module":"LAND-CADASTRE","type":"select","hash":"29f98ae3fe10e834b542d53e2dcef592","dbhash":"29f98ae3fe10e834b542d53e2dcef592","update":false},{"name":"prc.parcel_id.full","module":"LAND-CADASTRE","type":"select","hash":"0a3846884fc21a87058d8943ae02df18","dbhash":"0a3846884fc21a87058d8943ae02df18","update":false},{"name":"prc.parcel_id","module":"LAND-CADASTRE","type":"select","hash":"7408a469d8994d4da3235c5e201f8b3a","dbhash":"7408a469d8994d4da3235c5e201f8b3a","update":false},{"name":"prc.techdoc_id","module":"LAND-CADASTRE","type":"select","hash":"1c4c2ebcf86244c5caf6ab345fb8707c","dbhash":"1c4c2ebcf86244c5caf6ab345fb8707c","update":false},{"name":"prc.techdoc_id_parent","module":"LAND-CADASTRE","type":"select","hash":"9f654d802ab549c406ea4b8b9db80a47","dbhash":"9f654d802ab549c406ea4b8b9db80a47","update":false},{"name":"user_id","module":"LAND-CADASTRE","type":"select","hash":"4339922d053e66ccd43e34f2838037b1","dbhash":"4339922d053e66ccd43e34f2838037b1","update":false},{"name":"core.roles","module":"management","type":"select","hash":"ed1290380ea5e5e7e48bd08b41cb7793","dbhash":"ed1290380ea5e5e7e48bd08b41cb7793","update":false},{"name":"core.user_uid","module":"management","type":"select","hash":"45f7d8a57ecbca5b433be7937be51d5c","dbhash":"45f7d8a57ecbca5b433be7937be51d5c","update":false},{"name":"prc.documents_id","module":"RENT","type":"select","hash":"bc5f97cd6c556fefac244b3ff8629be9","dbhash":"bc5f97cd6c556fefac244b3ff8629be9","update":false},{"name":"prc.lease_id.main","module":"RENT","type":"select","hash":"f53e8e47e8ad68572f966d95fcf88163","dbhash":"f53e8e47e8ad68572f966d95fcf88163","update":false},{"name":"prc.lease_id","module":"RENT","type":"select","hash":"3372135b6009a9f2170d18b664750db0","dbhash":"3372135b6009a9f2170d18b664750db0","update":false},{"name":"prc.parcel_parent_id","module":"RENT","type":"select","hash":"bb2617b27f3226757cf816b55011c2bd","dbhash":"bb2617b27f3226757cf816b55011c2bd","update":false},{"name":"core.user_mentioned","module":"core","type":"select","hash":"6687f073de73a3ec4b6e0811d9310e7e","dbhash":"6687f073de73a3ec4b6e0811d9310e7e","update":false},{"name":"prc.application_status","module":"APPLICATION","type":"cls","hash":"d67580fb015c51a6da5cb5c82b405149","dbhash":"d67580fb015c51a6da5cb5c82b405149","update":false},{"name":"prc.application_status_final","module":"APPLICATION","type":"cls","hash":"0c27260728c4beced279366bf5b8662d","dbhash":"0c27260728c4beced279366bf5b8662d","update":false},{"name":"addr.str_type","module":"LAND-CADASTRE","type":"cls","hash":"9c5a1d1cc9dbb53a888894bf4e2c0e34","dbhash":"9c5a1d1cc9dbb53a888894bf4e2c0e34","update":false},{"name":"prc.acc_type","module":"LAND-CADASTRE","type":"cls","hash":"8db9b5df034826fbf54e3c6eec61bf71","dbhash":"8db9b5df034826fbf54e3c6eec61bf71","update":false},{"name":"prc.acc_type_legal","module":"LAND-CADASTRE","type":"cls","hash":"dfd54768ed4ebc9703b157a930578f48","dbhash":"dfd54768ed4ebc9703b157a930578f48","update":false},{"name":"prc.act_type","module":"LAND-CADASTRE","type":"cls","hash":"d5eff799a96149aebcdd67253c0f15e6","dbhash":"d5eff799a96149aebcdd67253c0f15e6","update":false},{"name":"prc.area_determination_type","module":"LAND-CADASTRE","type":"cls","hash":"de9d7085ba3e411bbe7d2bd03845705a","dbhash":"de9d7085ba3e411bbe7d2bd03845705a","update":false},{"name":"prc.document_type","module":"LAND-CADASTRE","type":"cls","hash":"2edc45649c4fc9b84968ad9872efd0fb","dbhash":"2edc45649c4fc9b84968ad9872efd0fb","update":false},{"name":"prc.experise_required","module":"LAND-CADASTRE","type":"cls","hash":"2bbb6c3d6999fab6e0550a03378b956d","dbhash":"2bbb6c3d6999fab6e0550a03378b956d","update":false},{"name":"prc.expert_opinion","module":"LAND-CADASTRE","type":"cls","hash":"742f77e355cfecedfb1497b15bb1e383","dbhash":"742f77e355cfecedfb1497b15bb1e383","update":false},{"name":"prc.f6zem_id","module":"LAND-CADASTRE","type":"cls","hash":"130790407b88fbff11d3fe8e60f7f553","dbhash":"130790407b88fbff11d3fe8e60f7f553","update":false},{"name":"prc.isfinite_restriction","module":"LAND-CADASTRE","type":"cls","hash":"752f30bf64facf53da89d5169cce4fd1","dbhash":"752f30bf64facf53da89d5169cce4fd1","update":false},{"name":"prc.isfree_payment","module":"LAND-CADASTRE","type":"cls","hash":"0fc5499f9035ac2e2bb554225c5d2046","dbhash":"0fc5499f9035ac2e2bb554225c5d2046","update":false},{"name":"prc.kvzu_id","module":"LAND-CADASTRE","type":"cls","hash":"05c068bfe09eef1ddadf67497ad1d131","dbhash":"05c068bfe09eef1ddadf67497ad1d131","update":false},{"name":"prc.legal_mode_status","module":"LAND-CADASTRE","type":"cls","hash":"9706863470ce8c9697a7d228eca95b2e","dbhash":"9706863470ce8c9697a7d228eca95b2e","update":false},{"name":"prc.legal_mode_type","module":"LAND-CADASTRE","type":"cls","hash":"a9c4d94188748a06f455158ce9d25de2","dbhash":"a9c4d94188748a06f455158ce9d25de2","update":false},{"name":"prc.legal_mode_type_card","module":"LAND-CADASTRE","type":"cls","hash":"141e7f1de7ba62f7664c581e36027ba8","dbhash":"141e7f1de7ba62f7664c581e36027ba8","update":false},{"name":"prc.parcel_area_unit","module":"LAND-CADASTRE","type":"cls","hash":"1cf59c05fb8b62101493f46e57080066","dbhash":"1cf59c05fb8b62101493f46e57080066","update":false},{"name":"prc.parcel_category","module":"LAND-CADASTRE","type":"cls","hash":"88962a86df4c48b66a0845ec07128e82","dbhash":"88962a86df4c48b66a0845ec07128e82","update":false},{"name":"prc.parcel_location","module":"LAND-CADASTRE","type":"cls","hash":"1b608780bbbec4f0170dd56d42e5e607","dbhash":"1b608780bbbec4f0170dd56d42e5e607","update":false},{"name":"prc.parcel_ownership","module":"LAND-CADASTRE","type":"cls","hash":"19fbc136a3b902f501701c0e568d3a19","dbhash":"19fbc136a3b902f501701c0e568d3a19","update":false},{"name":"prc.parcel_part_unit","module":"LAND-CADASTRE","type":"cls","hash":"b6c6ae04b0d59bdca084c6799cfb4fa2","dbhash":"b6c6ae04b0d59bdca084c6799cfb4fa2","update":false},{"name":"prc.parcel_purpose","module":"LAND-CADASTRE","type":"cls","hash":"63ffa5cf27a069392cde707411aee8db","dbhash":"63ffa5cf27a069392cde707411aee8db","update":false},{"name":"prc.parcel_status","module":"LAND-CADASTRE","type":"cls","hash":"94689671b1e1de2f5bb7c55ba6b40549","dbhash":"94689671b1e1de2f5bb7c55ba6b40549","update":false},{"name":"prc.restriction_code","module":"LAND-CADASTRE","type":"cls","hash":"233ab49757f163bd9ae2ebc81088b0ad","dbhash":"233ab49757f163bd9ae2ebc81088b0ad","update":false},{"name":"prc.serv_period","module":"LAND-CADASTRE","type":"cls","hash":"46fda14a1bc9222e886f27d60643e9e2","dbhash":"46fda14a1bc9222e886f27d60643e9e2","update":false},{"name":"prc.serv_type","module":"LAND-CADASTRE","type":"cls","hash":"15ddb366e1e0adf2672932f2137885da","dbhash":"15ddb366e1e0adf2672932f2137885da","update":false},{"name":"prc.techdoc_path","module":"LAND-CADASTRE","type":"cls","hash":"fb52a616b0ece0ec9ac0ebc8f7e6ee34","dbhash":"fb52a616b0ece0ec9ac0ebc8f7e6ee34","update":false},{"name":"prc.techdoc_type","module":"LAND-CADASTRE","type":"cls","hash":"f607216be06fea28fafdee56b94d204f","dbhash":"f607216be06fea28fafdee56b94d204f","update":false},{"name":"prc.valuation_type","module":"LAND-CADASTRE","type":"cls","hash":"deffc6b334e24d72fc562dd6bca90839","dbhash":"deffc6b334e24d72fc562dd6bca90839","update":false},{"name":"yes_no","module":"LAND-CADASTRE","type":"cls","hash":"50c527053426248c20b0a2f112ff9046","dbhash":"50c527053426248c20b0a2f112ff9046","update":false},{"name":"users.user_type","module":"management","type":"cls","hash":"750ece56e1d55cd7a1e1b002df88ec91","dbhash":"750ece56e1d55cd7a1e1b002df88ec91","update":false},{"name":"dpo.lease_is_main","module":"RENT","type":"cls","hash":"6e5d9cffd9f4dbc31c1329d23143cbd0","dbhash":"6e5d9cffd9f4dbc31c1329d23143cbd0","update":false},{"name":"dpo.lease_status","module":"RENT","type":"cls","hash":"e3fb9ca8d294ceeb4d31b9b221608ace","dbhash":"e3fb9ca8d294ceeb4d31b9b221608ace","update":false},{"name":"dpo.lease_type","module":"RENT","type":"cls","hash":"2d87548b2f6b0b510329a8a8852501c6","dbhash":"2d87548b2f6b0b510329a8a8852501c6","update":false},{"name":"dpo.servitut_type","module":"RENT","type":"cls","hash":"647f2f55c4e9d508c45c8da498a50418","dbhash":"647f2f55c4e9d508c45c8da498a50418","update":false},{"name":"type_report","module":"RENT","type":"cls","hash":"a317e46b876b31598fbd9a39d21277ea","dbhash":"a317e46b876b31598fbd9a39d21277ea","update":false},{"name":"constraint_action","module":"core","type":"cls","hash":"1b7129eae9eb42106ed6e646223c806a","dbhash":"1b7129eae9eb42106ed6e646223c806a","update":false},{"name":"constraint_matchtype","module":"core","type":"cls","hash":"446ad903e69a391748a8a27bae2dc5cd","dbhash":"446ad903e69a391748a8a27bae2dc5cd","update":false},{"name":"constraint_type_full","module":"core","type":"cls","hash":"9e1cc580273f7e73fbc08ee553ad8f64","dbhash":"9e1cc580273f7e73fbc08ee553ad8f64","update":false},{"name":"core.user_type","module":"core","type":"cls","hash":"728bc9e0bcc88de83ec56d8dc7e7efff","dbhash":"728bc9e0bcc88de83ec56d8dc7e7efff","update":false}]
File without changes
@@ -1 +0,0 @@
1
- [{"name":"prc.application_id","module":"APPLICATION","type":"select","hash":"d5b27c80a2a4682e164c8713f36053fd","dbhash":"d5b27c80a2a4682e164c8713f36053fd","update":false},{"name":"prc.application_status.parent","module":"APPLICATION","type":"select","hash":"1d63a805e56b9b350f7a2ec7df26da3c","dbhash":"1d63a805e56b9b350f7a2ec7df26da3c","update":false},{"name":"prc.application_type","module":"APPLICATION","type":"select","hash":"fa2baf8fbb896363b740a74487281b6b","dbhash":"fa2baf8fbb896363b740a74487281b6b","update":false},{"name":"prc.parcel_purpose_id","module":"APPLICATION","type":"select","hash":"22e43518957449f90b63170033b4ae3b","dbhash":"22e43518957449f90b63170033b4ae3b","update":false},{"name":"prc.parcel_status.parent","module":"APPLICATION","type":"select","hash":"7310662b3e674b4dd3c3a0ae4bc76c80","dbhash":"7310662b3e674b4dd3c3a0ae4bc76c80","update":false},{"name":"addr.address_id","module":"LAND-CADASTRE","type":"select","hash":"19c0d463fa55a284d789bb15318f5ef7","dbhash":"19c0d463fa55a284d789bb15318f5ef7","update":false},{"name":"addr.address_id_full","module":"LAND-CADASTRE","type":"select","hash":"6257b7f173167b7057cc2ff1859a21c1","dbhash":"6257b7f173167b7057cc2ff1859a21c1","update":false},{"name":"addr.address_id_parent","module":"LAND-CADASTRE","type":"select","hash":"01b41b8690c6eb5ad3638d74ae4c007d","dbhash":"01b41b8690c6eb5ad3638d74ae4c007d","update":false},{"name":"addr.city_id","module":"LAND-CADASTRE","type":"select","hash":"a943aa5241a30a33c88e58d223d201db","dbhash":"a943aa5241a30a33c88e58d223d201db","update":false},{"name":"addr.district_id","module":"LAND-CADASTRE","type":"select","hash":"a811b43f9d0eb6e79a796e0a5b988294","dbhash":"a811b43f9d0eb6e79a796e0a5b988294","update":false},{"name":"addr.street_id_full","module":"LAND-CADASTRE","type":"select","hash":"d0e3db667578cf8017e69ca6c0c42b0f","dbhash":"d0e3db667578cf8017e69ca6c0c42b0f","update":false},{"name":"address_id","module":"LAND-CADASTRE","type":"select","hash":"e993b5c610baa695cbc8db8f5d20af5a","dbhash":"e993b5c610baa695cbc8db8f5d20af5a","update":false},{"name":"gis.srid_from_setting","module":"LAND-CADASTRE","type":"select","hash":"138a168c385a79ec7a3e949be4daef57","dbhash":"138a168c385a79ec7a3e949be4daef57","update":false},{"name":"gis.srid_from_setting_new","module":"LAND-CADASTRE","type":"select","hash":"e9e57096522e313122ff4d9f72561744","dbhash":"e9e57096522e313122ff4d9f72561744","update":false},{"name":"prc.acc_id","module":"LAND-CADASTRE","type":"select","hash":"3ed8c88c51586b256b97743f07ca4821","dbhash":"3ed8c88c51586b256b97743f07ca4821","update":false},{"name":"prc.cad_zone_id","module":"LAND-CADASTRE","type":"select","hash":"1c53abf0fad143bbba6b331f9ddd8272","dbhash":"1c53abf0fad143bbba6b331f9ddd8272","update":false},{"name":"prc.decision_type","module":"LAND-CADASTRE","type":"select","hash":"f9490ca91fa59d256651f51262300a75","dbhash":"f9490ca91fa59d256651f51262300a75","update":false},{"name":"prc.doc_id","module":"LAND-CADASTRE","type":"select","hash":"185d98585e3e0be5d4ee929a19b03bfe","dbhash":"185d98585e3e0be5d4ee929a19b03bfe","update":false},{"name":"prc.doc_id_note","module":"LAND-CADASTRE","type":"select","hash":"c83b6536588cfa2ab7b5bac00f04bcd3","dbhash":"c83b6536588cfa2ab7b5bac00f04bcd3","update":false},{"name":"prc.doc_id_short","module":"LAND-CADASTRE","type":"select","hash":"29f98ae3fe10e834b542d53e2dcef592","dbhash":"29f98ae3fe10e834b542d53e2dcef592","update":false},{"name":"prc.parcel_id.full","module":"LAND-CADASTRE","type":"select","hash":"0a3846884fc21a87058d8943ae02df18","dbhash":"0a3846884fc21a87058d8943ae02df18","update":false},{"name":"prc.parcel_id","module":"LAND-CADASTRE","type":"select","hash":"7408a469d8994d4da3235c5e201f8b3a","dbhash":"7408a469d8994d4da3235c5e201f8b3a","update":false},{"name":"prc.techdoc_id","module":"LAND-CADASTRE","type":"select","hash":"1c4c2ebcf86244c5caf6ab345fb8707c","dbhash":"1c4c2ebcf86244c5caf6ab345fb8707c","update":false},{"name":"prc.techdoc_id_parent","module":"LAND-CADASTRE","type":"select","hash":"9f654d802ab549c406ea4b8b9db80a47","dbhash":"9f654d802ab549c406ea4b8b9db80a47","update":false},{"name":"user_id","module":"LAND-CADASTRE","type":"select","hash":"4339922d053e66ccd43e34f2838037b1","dbhash":"4339922d053e66ccd43e34f2838037b1","update":false},{"name":"core.roles","module":"management","type":"select","hash":"ed1290380ea5e5e7e48bd08b41cb7793","dbhash":"ed1290380ea5e5e7e48bd08b41cb7793","update":false},{"name":"core.user_uid","module":"management","type":"select","hash":"45f7d8a57ecbca5b433be7937be51d5c","dbhash":"45f7d8a57ecbca5b433be7937be51d5c","update":false},{"name":"prc.documents_id","module":"RENT","type":"select","hash":"bc5f97cd6c556fefac244b3ff8629be9","dbhash":"bc5f97cd6c556fefac244b3ff8629be9","update":false},{"name":"prc.lease_id.main","module":"RENT","type":"select","hash":"f53e8e47e8ad68572f966d95fcf88163","dbhash":"f53e8e47e8ad68572f966d95fcf88163","update":false},{"name":"prc.lease_id","module":"RENT","type":"select","hash":"3372135b6009a9f2170d18b664750db0","dbhash":"3372135b6009a9f2170d18b664750db0","update":false},{"name":"prc.parcel_parent_id","module":"RENT","type":"select","hash":"bb2617b27f3226757cf816b55011c2bd","dbhash":"bb2617b27f3226757cf816b55011c2bd","update":false},{"name":"core.user_mentioned","module":"core","type":"select","hash":"6687f073de73a3ec4b6e0811d9310e7e","dbhash":"5a35e8ca97ce4fde93030521104ca5d3","update":true},{"name":"prc.application_status","module":"APPLICATION","type":"cls","hash":"d67580fb015c51a6da5cb5c82b405149","dbhash":"d67580fb015c51a6da5cb5c82b405149","update":false},{"name":"prc.application_status_final","module":"APPLICATION","type":"cls","hash":"0c27260728c4beced279366bf5b8662d","dbhash":"0c27260728c4beced279366bf5b8662d","update":false},{"name":"addr.str_type","module":"LAND-CADASTRE","type":"cls","hash":"9c5a1d1cc9dbb53a888894bf4e2c0e34","dbhash":"9c5a1d1cc9dbb53a888894bf4e2c0e34","update":false},{"name":"prc.acc_type","module":"LAND-CADASTRE","type":"cls","hash":"8db9b5df034826fbf54e3c6eec61bf71","dbhash":"8db9b5df034826fbf54e3c6eec61bf71","update":false},{"name":"prc.acc_type_legal","module":"LAND-CADASTRE","type":"cls","hash":"dfd54768ed4ebc9703b157a930578f48","dbhash":"dfd54768ed4ebc9703b157a930578f48","update":false},{"name":"prc.act_type","module":"LAND-CADASTRE","type":"cls","hash":"d5eff799a96149aebcdd67253c0f15e6","dbhash":"d5eff799a96149aebcdd67253c0f15e6","update":false},{"name":"prc.area_determination_type","module":"LAND-CADASTRE","type":"cls","hash":"de9d7085ba3e411bbe7d2bd03845705a","dbhash":"de9d7085ba3e411bbe7d2bd03845705a","update":false},{"name":"prc.document_type","module":"LAND-CADASTRE","type":"cls","hash":"2edc45649c4fc9b84968ad9872efd0fb","dbhash":"2edc45649c4fc9b84968ad9872efd0fb","update":false},{"name":"prc.experise_required","module":"LAND-CADASTRE","type":"cls","hash":"2bbb6c3d6999fab6e0550a03378b956d","dbhash":"2bbb6c3d6999fab6e0550a03378b956d","update":false},{"name":"prc.expert_opinion","module":"LAND-CADASTRE","type":"cls","hash":"742f77e355cfecedfb1497b15bb1e383","dbhash":"742f77e355cfecedfb1497b15bb1e383","update":false},{"name":"prc.f6zem_id","module":"LAND-CADASTRE","type":"cls","hash":"130790407b88fbff11d3fe8e60f7f553","dbhash":"130790407b88fbff11d3fe8e60f7f553","update":false},{"name":"prc.isfinite_restriction","module":"LAND-CADASTRE","type":"cls","hash":"752f30bf64facf53da89d5169cce4fd1","dbhash":"752f30bf64facf53da89d5169cce4fd1","update":false},{"name":"prc.isfree_payment","module":"LAND-CADASTRE","type":"cls","hash":"0fc5499f9035ac2e2bb554225c5d2046","dbhash":"0fc5499f9035ac2e2bb554225c5d2046","update":false},{"name":"prc.kvzu_id","module":"LAND-CADASTRE","type":"cls","hash":"05c068bfe09eef1ddadf67497ad1d131","dbhash":"05c068bfe09eef1ddadf67497ad1d131","update":false},{"name":"prc.legal_mode_status","module":"LAND-CADASTRE","type":"cls","hash":"9706863470ce8c9697a7d228eca95b2e","dbhash":"9706863470ce8c9697a7d228eca95b2e","update":false},{"name":"prc.legal_mode_type","module":"LAND-CADASTRE","type":"cls","hash":"a9c4d94188748a06f455158ce9d25de2","dbhash":"a9c4d94188748a06f455158ce9d25de2","update":false},{"name":"prc.legal_mode_type_card","module":"LAND-CADASTRE","type":"cls","hash":"141e7f1de7ba62f7664c581e36027ba8","dbhash":"141e7f1de7ba62f7664c581e36027ba8","update":false},{"name":"prc.parcel_area_unit","module":"LAND-CADASTRE","type":"cls","hash":"1cf59c05fb8b62101493f46e57080066","dbhash":"1cf59c05fb8b62101493f46e57080066","update":false},{"name":"prc.parcel_category","module":"LAND-CADASTRE","type":"cls","hash":"88962a86df4c48b66a0845ec07128e82","dbhash":"88962a86df4c48b66a0845ec07128e82","update":false},{"name":"prc.parcel_location","module":"LAND-CADASTRE","type":"cls","hash":"1b608780bbbec4f0170dd56d42e5e607","dbhash":"1b608780bbbec4f0170dd56d42e5e607","update":false},{"name":"prc.parcel_ownership","module":"LAND-CADASTRE","type":"cls","hash":"19fbc136a3b902f501701c0e568d3a19","dbhash":"19fbc136a3b902f501701c0e568d3a19","update":false},{"name":"prc.parcel_part_unit","module":"LAND-CADASTRE","type":"cls","hash":"b6c6ae04b0d59bdca084c6799cfb4fa2","dbhash":"b6c6ae04b0d59bdca084c6799cfb4fa2","update":false},{"name":"prc.parcel_purpose","module":"LAND-CADASTRE","type":"cls","hash":"63ffa5cf27a069392cde707411aee8db","dbhash":"63ffa5cf27a069392cde707411aee8db","update":false},{"name":"prc.parcel_status","module":"LAND-CADASTRE","type":"cls","hash":"94689671b1e1de2f5bb7c55ba6b40549","dbhash":"94689671b1e1de2f5bb7c55ba6b40549","update":false},{"name":"prc.restriction_code","module":"LAND-CADASTRE","type":"cls","hash":"233ab49757f163bd9ae2ebc81088b0ad","dbhash":"233ab49757f163bd9ae2ebc81088b0ad","update":false},{"name":"prc.serv_period","module":"LAND-CADASTRE","type":"cls","hash":"46fda14a1bc9222e886f27d60643e9e2","dbhash":"46fda14a1bc9222e886f27d60643e9e2","update":false},{"name":"prc.serv_type","module":"LAND-CADASTRE","type":"cls","hash":"15ddb366e1e0adf2672932f2137885da","dbhash":"15ddb366e1e0adf2672932f2137885da","update":false},{"name":"prc.techdoc_path","module":"LAND-CADASTRE","type":"cls","hash":"fb52a616b0ece0ec9ac0ebc8f7e6ee34","dbhash":"fb52a616b0ece0ec9ac0ebc8f7e6ee34","update":false},{"name":"prc.techdoc_type","module":"LAND-CADASTRE","type":"cls","hash":"f607216be06fea28fafdee56b94d204f","dbhash":"f607216be06fea28fafdee56b94d204f","update":false},{"name":"prc.valuation_type","module":"LAND-CADASTRE","type":"cls","hash":"deffc6b334e24d72fc562dd6bca90839","dbhash":"deffc6b334e24d72fc562dd6bca90839","update":false},{"name":"yes_no","module":"LAND-CADASTRE","type":"cls","hash":"50c527053426248c20b0a2f112ff9046","dbhash":"50c527053426248c20b0a2f112ff9046","update":false},{"name":"users.user_type","module":"management","type":"cls","hash":"750ece56e1d55cd7a1e1b002df88ec91","dbhash":"750ece56e1d55cd7a1e1b002df88ec91","update":false},{"name":"dpo.lease_is_main","module":"RENT","type":"cls","hash":"6e5d9cffd9f4dbc31c1329d23143cbd0","dbhash":"6e5d9cffd9f4dbc31c1329d23143cbd0","update":false},{"name":"dpo.lease_status","module":"RENT","type":"cls","hash":"e3fb9ca8d294ceeb4d31b9b221608ace","dbhash":"e3fb9ca8d294ceeb4d31b9b221608ace","update":false},{"name":"dpo.lease_type","module":"RENT","type":"cls","hash":"2d87548b2f6b0b510329a8a8852501c6","dbhash":"2d87548b2f6b0b510329a8a8852501c6","update":false},{"name":"dpo.servitut_type","module":"RENT","type":"cls","hash":"647f2f55c4e9d508c45c8da498a50418","dbhash":"647f2f55c4e9d508c45c8da498a50418","update":false},{"name":"type_report","module":"RENT","type":"cls","hash":"a317e46b876b31598fbd9a39d21277ea","dbhash":"a317e46b876b31598fbd9a39d21277ea","update":false},{"name":"constraint_action","module":"core","type":"cls","hash":"1b7129eae9eb42106ed6e646223c806a","dbhash":"1b7129eae9eb42106ed6e646223c806a","update":false},{"name":"constraint_matchtype","module":"core","type":"cls","hash":"446ad903e69a391748a8a27bae2dc5cd","dbhash":"446ad903e69a391748a8a27bae2dc5cd","update":false},{"name":"constraint_type_full","module":"core","type":"cls","hash":"9e1cc580273f7e73fbc08ee553ad8f64","dbhash":"9e1cc580273f7e73fbc08ee553ad8f64","update":false},{"name":"core.user_type","module":"core","type":"cls","hash":"728bc9e0bcc88de83ec56d8dc7e7efff","dbhash":"728bc9e0bcc88de83ec56d8dc7e7efff","update":false}]
@@ -1,2 +0,0 @@
1
- insert into admin.cls(name,type,data,module,hash) values('core.user_mentioned','sql','select uid, coalesce(sur_name,'''')||coalesce('' ''||user_name,'''') as text, email from admin.users
2
- where enabled order by coalesce(sur_name,'''')||coalesce('' ''||user_name,'''')', 'core','6687f073de73a3ec4b6e0811d9310e7e')