@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.
- package/dist/module/core/cls/constraint_type.json +14 -0
- package/dist/module/core/cls/constraint_type_table.json +18 -0
- package/dist/module/core/select/core.user_mentioned.sql +1 -1
- package/dist/server/migrations/context.sql +3 -1
- package/dist/server/migrations/roles.sql +4 -0
- package/dist/server/plugins/auth/funcs/getUserPermissions.d.ts +2 -0
- package/dist/server/plugins/auth/funcs/getUserPermissions.d.ts.map +1 -0
- package/dist/server/plugins/auth/funcs/getUserPermissions.js +24 -0
- package/dist/server/plugins/file/providers/fs.d.ts +1 -1
- package/dist/server/plugins/policy/funcs/checkPermissions.d.ts +4 -0
- package/dist/server/plugins/policy/funcs/checkPermissions.d.ts.map +1 -0
- package/dist/server/plugins/policy/funcs/checkPermissions.js +36 -0
- package/dist/server/plugins/policy/funcs/checkPolicy.d.ts.map +1 -1
- package/dist/server/plugins/policy/funcs/checkPolicy.js +1 -15
- package/dist/server/plugins/policy/index.d.ts.map +1 -1
- package/dist/server/plugins/policy/index.js +21 -0
- package/dist/server/routes/access/controllers/access.group.d.ts +2 -2
- package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.group.js +15 -7
- package/dist/server/routes/access/controllers/access.group.post.d.ts +2 -2
- package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.group.post.js +17 -9
- package/dist/server/routes/access/controllers/access.user.d.ts +2 -0
- package/dist/server/routes/access/controllers/access.user.d.ts.map +1 -0
- package/dist/server/routes/access/controllers/access.user.js +25 -0
- package/dist/server/routes/access/controllers/access.user.post.d.ts +2 -0
- package/dist/server/routes/access/controllers/access.user.post.d.ts.map +1 -0
- package/dist/server/routes/access/controllers/access.user.post.js +37 -0
- package/dist/server/routes/access/index.d.ts.map +1 -1
- package/dist/server/routes/access/index.js +5 -1
- package/dist/server/routes/access/schema.d.ts +45 -1
- package/dist/server/routes/access/schema.d.ts.map +1 -1
- package/dist/server/routes/access/schema.js +82 -28
- package/dist/server/routes/auth/controllers/core/getUserInfo.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/core/getUserInfo.js +30 -23
- package/dist/server/routes/menu/controllers/getMenu.d.ts.map +1 -1
- package/dist/server/routes/menu/controllers/getMenu.js +6 -3
- package/dist/server/types/core.d.ts +1 -0
- package/dist/server/types/core.d.ts.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -0
- package/package.json +1 -1
- package/dist/log/migration/dist-geo_road_traffic_new-cls.json +0 -1
- package/dist/log/migration/dist-geo_road_traffic_new-cls.sql +0 -0
- package/dist/log/migration/dist-mbk_bc_dma-cls.json +0 -1
- package/dist/log/migration/dist-mbk_bc_dma-cls.sql +0 -0
- package/dist/log/migration/dist-prod-cls.json +0 -1
- package/dist/log/migration/dist-prod-cls.sql +0 -2
|
@@ -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 @@
|
|
|
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<
|
|
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 @@
|
|
|
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,
|
|
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,
|
|
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":"
|
|
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,
|
|
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,
|
|
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 = {},
|
|
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 &&
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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 = {},
|
|
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 &&
|
|
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
|
|
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) =>
|
|
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
|
-
|
|
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 @@
|
|
|
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 @@
|
|
|
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":"
|
|
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,
|
|
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:
|
|
5
|
+
type: "object",
|
|
6
6
|
properties: {
|
|
7
|
-
id: { type:
|
|
7
|
+
id: { type: "string", pattern: "^([\\d\\w._-]+)$" },
|
|
8
8
|
},
|
|
9
|
-
required: [
|
|
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:
|
|
23
|
+
type: "object",
|
|
15
24
|
properties: {
|
|
16
|
-
name: { type:
|
|
25
|
+
name: { type: "string", pattern: "^([\\d\\w._-]+)$" },
|
|
17
26
|
},
|
|
18
|
-
required: [
|
|
27
|
+
required: ["name"],
|
|
19
28
|
},
|
|
20
29
|
};
|
|
21
30
|
const accessGroupPostSchema = {
|
|
22
31
|
params: {
|
|
23
|
-
type:
|
|
32
|
+
type: "object",
|
|
24
33
|
properties: {
|
|
25
|
-
id: { type:
|
|
34
|
+
id: { type: "string", pattern: "^([\\d\\w._-]+)$" },
|
|
26
35
|
},
|
|
27
|
-
required: [
|
|
36
|
+
required: ["id"],
|
|
28
37
|
},
|
|
29
38
|
body: {
|
|
30
|
-
type:
|
|
39
|
+
type: "object",
|
|
31
40
|
properties: {
|
|
32
41
|
users: {
|
|
33
|
-
type:
|
|
42
|
+
type: "array",
|
|
34
43
|
items: {
|
|
35
|
-
type:
|
|
44
|
+
type: "object",
|
|
36
45
|
properties: {
|
|
37
46
|
id: {
|
|
38
|
-
type:
|
|
39
|
-
pattern:
|
|
47
|
+
type: "string",
|
|
48
|
+
pattern: "^([\\d\\w._-]+)$",
|
|
40
49
|
},
|
|
41
50
|
},
|
|
42
51
|
},
|
|
43
52
|
},
|
|
44
53
|
routes: {
|
|
45
|
-
type:
|
|
54
|
+
type: "array",
|
|
46
55
|
/*items: {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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":"
|
|
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
|
|
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:
|
|
36
|
+
sessionID: session?.sessionId,
|
|
34
37
|
};
|
|
35
38
|
if (config.auth?.debug) {
|
|
36
|
-
const str = await rclient2.get(`${
|
|
39
|
+
const str = await rclient2.get(`${session?.sessionId}-sessionInfo`);
|
|
37
40
|
Object.assign(payload, {
|
|
38
41
|
redisUser: str ? JSON.parse(str) : null,
|
|
39
|
-
cookies
|
|
42
|
+
cookies,
|
|
40
43
|
});
|
|
41
44
|
}
|
|
42
|
-
if (!
|
|
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(
|
|
47
|
-
const
|
|
48
|
-
?
|
|
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
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const access =
|
|
65
|
-
|
|
66
|
-
|
|
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
|
|
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;;;;;;;;;;;;;;
|
|
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
|
|
41
|
-
?
|
|
42
|
-
|
|
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":"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"}
|
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
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -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":"AAIA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAGvF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAGnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAGtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAG5E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAG5E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAEtF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAExF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAG5F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAGhG,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qDAAqD,CAAC;AAE3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAE5F,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAE9F,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAEnG,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,MAAM,IAAI,oBAAoB,EAC9B,OAAO,IAAI,kBAAkB,EAC7B,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAGnF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;;AAElG,wBAAoB"}
|
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 +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}]
|
|
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":"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')
|