@opengis/fastify-table 2.1.3 → 2.1.5
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/index.js +1 -1
- 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/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/auth/index.d.ts.map +1 -1
- package/dist/server/plugins/auth/index.js +8 -4
- package/dist/server/plugins/auth/onRequest.d.ts +4 -0
- package/dist/server/plugins/auth/onRequest.d.ts.map +1 -0
- package/dist/server/plugins/auth/onRequest.js +104 -0
- package/dist/server/plugins/crud/funcs/dataInsert.d.ts +2 -1
- package/dist/server/plugins/crud/funcs/dataInsert.d.ts.map +1 -1
- package/dist/server/plugins/crud/funcs/dataInsert.js +13 -11
- package/dist/server/plugins/crud/funcs/dataUpdate.d.ts +2 -1
- package/dist/server/plugins/crud/funcs/dataUpdate.d.ts.map +1 -1
- package/dist/server/plugins/crud/funcs/dataUpdate.js +13 -11
- package/dist/server/plugins/policy/funcs/checkAuth.d.ts +4 -0
- package/dist/server/plugins/policy/funcs/checkAuth.d.ts.map +1 -0
- package/dist/server/plugins/policy/funcs/checkAuth.js +104 -0
- package/dist/server/plugins/policy/funcs/checkPermissions.d.ts +4 -2
- package/dist/server/plugins/policy/funcs/checkPermissions.d.ts.map +1 -1
- package/dist/server/plugins/policy/funcs/checkPermissions.js +2 -4
- package/dist/server/plugins/policy/funcs/checkPolicy.d.ts +4 -2
- package/dist/server/plugins/policy/funcs/checkPolicy.d.ts.map +1 -1
- package/dist/server/plugins/policy/funcs/checkPolicy.js +8 -8
- package/dist/server/plugins/policy/index.d.ts +1 -1
- package/dist/server/plugins/policy/index.d.ts.map +1 -1
- package/dist/server/plugins/policy/index.js +6 -6
- package/dist/server/routes/access/controllers/access.resources.d.ts +6 -0
- package/dist/server/routes/access/controllers/access.resources.d.ts.map +1 -0
- package/dist/server/routes/access/controllers/access.resources.js +14 -0
- package/dist/server/routes/access/controllers/resources.d.ts +11 -0
- package/dist/server/routes/access/controllers/resources.d.ts.map +1 -0
- package/dist/server/routes/access/controllers/resources.js +14 -0
- package/dist/server/routes/access/functions/resources.d.ts +6 -0
- package/dist/server/routes/access/functions/resources.d.ts.map +1 -0
- package/dist/server/routes/access/functions/resources.js +11 -0
- package/dist/server/routes/access/index.d.ts.map +1 -1
- package/dist/server/routes/access/index.js +5 -2
- 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-mbk_kamianske-cls.json +0 -1
- package/dist/log/migration/dist-mbk_kamianske-cls.sql +0 -0
- package/dist/log/migration/dist-prod-cls.json +0 -1
- package/dist/log/migration/dist-prod-cls.sql +0 -2
package/dist/index.js
CHANGED
|
@@ -111,8 +111,8 @@ function plugin(fastify) {
|
|
|
111
111
|
// core migrations (second argument for core only)
|
|
112
112
|
execMigrations(path.join(cwd, "server/migrations"), pgClients.client, true).catch((err) => console.warn(err.toString()));
|
|
113
113
|
// plugins / utils / funcs
|
|
114
|
-
policyPlugin(fastify);
|
|
115
114
|
authPlugin(fastify); // fastify-auth api + hooks integrated to core
|
|
115
|
+
policyPlugin(fastify);
|
|
116
116
|
metricPlugin();
|
|
117
117
|
redisPlugin(fastify);
|
|
118
118
|
pgPlugin(fastify);
|
|
@@ -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,'')
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAYxD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAYxD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,iBA+HxE;AAED,iBAAS,MAAM,CAAC,OAAO,EAAE,eAAe,QAmCvC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -21,11 +21,12 @@ export async function onRequest(req, reply) {
|
|
|
21
21
|
req.ip === "127.0.0.1" ||
|
|
22
22
|
req.ip?.startsWith?.("192.168.") ||
|
|
23
23
|
config.debug) &&
|
|
24
|
-
req.headers?.token &&
|
|
25
|
-
|
|
24
|
+
((req.headers?.token && config.auth?.tokens?.includes?.(headers.token)) ||
|
|
25
|
+
process.env.NODE_ENV === "test" ||
|
|
26
|
+
process.env.VITEST);
|
|
26
27
|
if (validToken && !req?.user?.uid) {
|
|
27
28
|
req.user = {
|
|
28
|
-
uid: req.headers?.uid?.toString?.(),
|
|
29
|
+
uid: req.headers?.uid?.toString?.() || "1",
|
|
29
30
|
user_type: req.headers?.user_type?.toString?.() || "regular",
|
|
30
31
|
};
|
|
31
32
|
}
|
|
@@ -112,6 +113,10 @@ function plugin(fastify) {
|
|
|
112
113
|
if (!config.redis) {
|
|
113
114
|
return;
|
|
114
115
|
}
|
|
116
|
+
fastify.addHook("onRequest", onRequest);
|
|
117
|
+
if (process.env.NODE_ENV === "test" || process.env.VITEST) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
115
120
|
fastify.register(cookie, {
|
|
116
121
|
parseOptions: config?.auth?.cookieOptions || { secure: false },
|
|
117
122
|
});
|
|
@@ -131,6 +136,5 @@ function plugin(fastify) {
|
|
|
131
136
|
fastifyPassport.registerUserSerializer(async (user) => ({ user }));
|
|
132
137
|
// deserialize user used to add user info from session store to req
|
|
133
138
|
fastifyPassport.registerUserDeserializer(async (passport) => passport?.user || passport);
|
|
134
|
-
fastify.addHook("onRequest", onRequest);
|
|
135
139
|
}
|
|
136
140
|
export default plugin;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onRequest.d.ts","sourceRoot":"","sources":["../../../../server/plugins/auth/onRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,wBAA8B,SAAS,CACrC,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,YAAY,iBA+HpB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import config from "../../../config.js";
|
|
3
|
+
const { prefix = "/api" } = config;
|
|
4
|
+
export default async function onRequest(req, reply) {
|
|
5
|
+
const { hostname, headers, routeOptions } = req;
|
|
6
|
+
const { config: routeConfig, method, handler, url } = routeOptions || {};
|
|
7
|
+
const { policy } = routeConfig || {};
|
|
8
|
+
const isApi = method && url && typeof handler === "function" && url !== "*";
|
|
9
|
+
// handle non-api at vite/vike
|
|
10
|
+
if (!isApi) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
// proxy from old apps to editor, bi etc.
|
|
14
|
+
const validToken = (req.ip === "193.239.152.181" ||
|
|
15
|
+
req.ip === "127.0.0.1" ||
|
|
16
|
+
req.ip?.startsWith?.("192.168.") ||
|
|
17
|
+
config.debug) &&
|
|
18
|
+
req.headers?.token &&
|
|
19
|
+
config.auth?.tokens?.includes?.(headers.token);
|
|
20
|
+
if (validToken && !req?.user?.uid) {
|
|
21
|
+
req.user = {
|
|
22
|
+
uid: req.headers?.uid?.toString?.(),
|
|
23
|
+
user_type: req.headers?.user_type?.toString?.() || "regular",
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const isAdmin = process.env.NODE_ENV === "admin" ||
|
|
27
|
+
hostname?.split?.(":")?.shift?.() === config.adminDomain ||
|
|
28
|
+
config.admin ||
|
|
29
|
+
hostname?.startsWith?.("admin");
|
|
30
|
+
const isPublic = Array.isArray(policy)
|
|
31
|
+
? policy.includes("public")
|
|
32
|
+
: policy === "L0";
|
|
33
|
+
if (req.cookies?.["session_auth"] &&
|
|
34
|
+
!req.session?.passport?.user?.uid &&
|
|
35
|
+
(config.auth?.disable || config.auth?.user)) {
|
|
36
|
+
req.session = req.session || {};
|
|
37
|
+
req.session.passport = req.session.passport || {}; // ensure passport session exists
|
|
38
|
+
req.session.passport.user = {
|
|
39
|
+
...(config.auth?.user || {}),
|
|
40
|
+
uid: config.auth?.user?.uid?.toString?.() || "1",
|
|
41
|
+
user_rnokpp: config.auth?.user?.rnokpp,
|
|
42
|
+
user_type: config.auth?.user?.type || "regular",
|
|
43
|
+
};
|
|
44
|
+
req.user = req.session.passport.user;
|
|
45
|
+
}
|
|
46
|
+
// ! intentional: null || undefined > undefined
|
|
47
|
+
req.user = req.user || req.session?.passport?.user || undefined; // fix for user.uid errors, by default user is null, while with express passport it was {}, unauthorized user does not trigger serializer
|
|
48
|
+
// currently 2factor + auth with passwd file not supported
|
|
49
|
+
const ispasswd = (existsSync("passwd") && !config.auth?.["2factor"]) || config.auth?.passwd;
|
|
50
|
+
const loginPageUrl = config.auth?.link?.core?.login || config?.auth?.redirect || "/login";
|
|
51
|
+
if (!req.user?.uid &&
|
|
52
|
+
!config.auth?.disable &&
|
|
53
|
+
isAdmin &&
|
|
54
|
+
!isPublic &&
|
|
55
|
+
!config.auth?.disableRedirect &&
|
|
56
|
+
!req.url.startsWith(prefix) &&
|
|
57
|
+
!req.url.startsWith("/api") &&
|
|
58
|
+
!req.url.includes(loginPageUrl) &&
|
|
59
|
+
!req.url.includes(".") &&
|
|
60
|
+
!req.url.includes("@")) {
|
|
61
|
+
if (isApi) {
|
|
62
|
+
return reply.status(401).send({ error: "unauthorized", code: 401 });
|
|
63
|
+
}
|
|
64
|
+
return reply.redirect(`${loginPageUrl}` + `?redirect=${req.url}`);
|
|
65
|
+
}
|
|
66
|
+
// by default, disable 2factor for id.gov.ua auth
|
|
67
|
+
const check = req.user?.auth_type === "govid" ? config.auth?.["2factor"]?.govid : true;
|
|
68
|
+
const login2faPage = config.auth?.link?.["2fa"]?.login || "/2factor";
|
|
69
|
+
// example: 2factor for admin env only, while public env does not require it
|
|
70
|
+
const checkEnv = () => {
|
|
71
|
+
if (!config.auth?.["2factorEnv"])
|
|
72
|
+
return true;
|
|
73
|
+
if ((config.auth?.["2factorEnv"] &&
|
|
74
|
+
process.env.NODE_ENV === config.auth?.["2factorEnv"]) ||
|
|
75
|
+
(config.auth?.["2factorEnv"] === "admin" && isAdmin)) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
};
|
|
80
|
+
// if 2factor is enabled globally + for user and secondFactorPassed not true => redirect to 2factor login page
|
|
81
|
+
if (req.user?.uid &&
|
|
82
|
+
req.user?.twofa &&
|
|
83
|
+
// config.auth?.["2factor"] &&
|
|
84
|
+
// !isPublic &&
|
|
85
|
+
(routeOptions?.method || "GET") === "GET" &&
|
|
86
|
+
!req.session?.secondFactorPassed &&
|
|
87
|
+
!ispasswd &&
|
|
88
|
+
!config.auth?.disableRedirect &&
|
|
89
|
+
!config.auth?.disable &&
|
|
90
|
+
check &&
|
|
91
|
+
checkEnv() &&
|
|
92
|
+
!req.url.startsWith(login2faPage) &&
|
|
93
|
+
!routeOptions.url?.includes?.("/logout") &&
|
|
94
|
+
!routeOptions.url?.includes?.("/2fa") &&
|
|
95
|
+
!routeOptions.url?.includes?.("/assets")) {
|
|
96
|
+
if (isApi) {
|
|
97
|
+
return reply
|
|
98
|
+
.status(403)
|
|
99
|
+
.send({ error: "access restricted: twofa", code: 403 });
|
|
100
|
+
}
|
|
101
|
+
return reply.redirect(login2faPage);
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExtendedPG } from "../../../types/core.js";
|
|
2
|
-
export default function dataInsert({ id, table: table1, referer, data, pg: pg1, uid, tokenData, }: {
|
|
2
|
+
export default function dataInsert({ id, table: table1, referer, data, pg: pg1, uid, tokenData, log, }: {
|
|
3
3
|
id?: string | number;
|
|
4
4
|
table: string;
|
|
5
5
|
referer?: string;
|
|
@@ -7,5 +7,6 @@ export default function dataInsert({ id, table: table1, referer, data, pg: pg1,
|
|
|
7
7
|
pg?: ExtendedPG;
|
|
8
8
|
uid?: string;
|
|
9
9
|
tokenData?: Record<string, any>;
|
|
10
|
+
log?: Boolean;
|
|
10
11
|
}): Promise<any>;
|
|
11
12
|
//# sourceMappingURL=dataInsert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataInsert.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/dataInsert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAgBzD,wBAA8B,UAAU,CAAC,EACvC,EAAE,EACF,KAAK,EAAE,MAAM,EACb,OAAO,EACP,IAAI,EACJ,EAAE,EAAE,GAAG,EACP,GAAG,EACH,SAAc,
|
|
1
|
+
{"version":3,"file":"dataInsert.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/dataInsert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAgBzD,wBAA8B,UAAU,CAAC,EACvC,EAAE,EACF,KAAK,EAAE,MAAM,EACb,OAAO,EACP,IAAI,EACJ,EAAE,EAAE,GAAG,EACP,GAAG,EACH,SAAc,EACd,GAAU,GACX,EAAE;IACD,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,gBAsKA"}
|
|
@@ -9,7 +9,7 @@ import logger from "../../logger/getLogger.js";
|
|
|
9
9
|
import extraData from "../../extra/extraData.js";
|
|
10
10
|
import getMeta from "../../pg/funcs/getMeta.js";
|
|
11
11
|
const rclient = getRedis();
|
|
12
|
-
export default async function dataInsert({ id, table: table1, referer, data, pg: pg1, uid, tokenData = {}, }) {
|
|
12
|
+
export default async function dataInsert({ id, table: table1, referer, data, pg: pg1, uid, tokenData = {}, log = true, }) {
|
|
13
13
|
const pg = pg1 || getPG({ name: "client" });
|
|
14
14
|
if (!pg) {
|
|
15
15
|
return null;
|
|
@@ -95,16 +95,18 @@ export default async function dataInsert({ id, table: table1, referer, data, pg:
|
|
|
95
95
|
Object.assign(res.rows[0], { [key]: parentRows.filter(Boolean) });
|
|
96
96
|
}));
|
|
97
97
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
98
|
+
if (log) {
|
|
99
|
+
await logChanges({
|
|
100
|
+
pg: client,
|
|
101
|
+
table,
|
|
102
|
+
tokenData,
|
|
103
|
+
referer,
|
|
104
|
+
data,
|
|
105
|
+
id: id1,
|
|
106
|
+
uid,
|
|
107
|
+
type: "INSERT",
|
|
108
|
+
});
|
|
109
|
+
}
|
|
108
110
|
if (config.redis && rclient?.status !== "end") {
|
|
109
111
|
rclient.incr(`pg:${client.options?.database}:${table}:crud`);
|
|
110
112
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ExtendedPG } from "../../../types/core.js";
|
|
2
|
-
export default function dataUpdate({ table: table1, tokenData, referer, id, data, pg: pg1, uid, }: {
|
|
2
|
+
export default function dataUpdate({ table: table1, tokenData, referer, id, data, pg: pg1, uid, log, }: {
|
|
3
3
|
table: string;
|
|
4
4
|
tokenData?: Record<string, any>;
|
|
5
5
|
referer?: string;
|
|
@@ -7,5 +7,6 @@ export default function dataUpdate({ table: table1, tokenData, referer, id, data
|
|
|
7
7
|
data: Record<string, any>;
|
|
8
8
|
pg?: ExtendedPG;
|
|
9
9
|
uid?: string;
|
|
10
|
+
log?: Boolean;
|
|
10
11
|
}): Promise<any>;
|
|
11
12
|
//# sourceMappingURL=dataUpdate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataUpdate.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/dataUpdate.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAepD,wBAA8B,UAAU,CAAC,EACvC,KAAK,EAAE,MAAM,EACb,SAAS,EACT,OAAO,EACP,EAAE,EACF,IAAI,EACJ,EAAE,EAAE,GAAG,EACP,GAAG,
|
|
1
|
+
{"version":3,"file":"dataUpdate.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/dataUpdate.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAepD,wBAA8B,UAAU,CAAC,EACvC,KAAK,EAAE,MAAM,EACb,SAAS,EACT,OAAO,EACP,EAAE,EACF,IAAI,EACJ,EAAE,EAAE,GAAG,EACP,GAAG,EACH,GAAU,GACX,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,gBAwPA"}
|
|
@@ -19,7 +19,7 @@ function assignValue(key, i, srid = 4326, columnType = "text") {
|
|
|
19
19
|
}
|
|
20
20
|
return `"${key}"=$${i + 2}`;
|
|
21
21
|
}
|
|
22
|
-
export default async function dataUpdate({ table: table1, tokenData, referer, id, data, pg: pg1, uid, }) {
|
|
22
|
+
export default async function dataUpdate({ table: table1, tokenData, referer, id, data, pg: pg1, uid, log = true, }) {
|
|
23
23
|
if (!data || !table1 || !id) {
|
|
24
24
|
return null;
|
|
25
25
|
}
|
|
@@ -161,16 +161,18 @@ export default async function dataUpdate({ table: table1, tokenData, referer, id
|
|
|
161
161
|
}
|
|
162
162
|
}));
|
|
163
163
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
164
|
+
if (log) {
|
|
165
|
+
await logChanges({
|
|
166
|
+
pg: client,
|
|
167
|
+
table,
|
|
168
|
+
tokenData,
|
|
169
|
+
referer,
|
|
170
|
+
data,
|
|
171
|
+
id,
|
|
172
|
+
uid,
|
|
173
|
+
type: "UPDATE",
|
|
174
|
+
});
|
|
175
|
+
}
|
|
174
176
|
if (config.redis && rclient?.status !== "end") {
|
|
175
177
|
rclient.incr(`pg:${client.options?.database}:${table}:crud`);
|
|
176
178
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkAuth.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,wBAA8B,SAAS,CACrC,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,YAAY,iBA+HpB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import config from "../../../../config.js";
|
|
3
|
+
const { prefix = "/api" } = config;
|
|
4
|
+
export default async function onRequest(req, reply) {
|
|
5
|
+
const { hostname, headers, routeOptions } = req;
|
|
6
|
+
const { config: routeConfig, method, handler, url } = routeOptions || {};
|
|
7
|
+
const { policy } = routeConfig || {};
|
|
8
|
+
const isApi = method && url && typeof handler === "function" && url !== "*";
|
|
9
|
+
// handle non-api at vite/vike
|
|
10
|
+
if (!isApi) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
// proxy from old apps to editor, bi etc.
|
|
14
|
+
const validToken = (req.ip === "193.239.152.181" ||
|
|
15
|
+
req.ip === "127.0.0.1" ||
|
|
16
|
+
req.ip?.startsWith?.("192.168.") ||
|
|
17
|
+
config.debug) &&
|
|
18
|
+
req.headers?.token &&
|
|
19
|
+
config.auth?.tokens?.includes?.(headers.token);
|
|
20
|
+
if (validToken && !req?.user?.uid) {
|
|
21
|
+
req.user = {
|
|
22
|
+
uid: req.headers?.uid?.toString?.(),
|
|
23
|
+
user_type: req.headers?.user_type?.toString?.() || "regular",
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const isAdmin = process.env.NODE_ENV === "admin" ||
|
|
27
|
+
hostname?.split?.(":")?.shift?.() === config.adminDomain ||
|
|
28
|
+
config.admin ||
|
|
29
|
+
hostname?.startsWith?.("admin");
|
|
30
|
+
const isPublic = Array.isArray(policy)
|
|
31
|
+
? policy.includes("public")
|
|
32
|
+
: policy === "L0";
|
|
33
|
+
if (req.cookies?.["session_auth"] &&
|
|
34
|
+
!req.session?.passport?.user?.uid &&
|
|
35
|
+
(config.auth?.disable || config.auth?.user)) {
|
|
36
|
+
req.session = req.session || {};
|
|
37
|
+
req.session.passport = req.session.passport || {}; // ensure passport session exists
|
|
38
|
+
req.session.passport.user = {
|
|
39
|
+
...(config.auth?.user || {}),
|
|
40
|
+
uid: config.auth?.user?.uid?.toString?.() || "1",
|
|
41
|
+
user_rnokpp: config.auth?.user?.rnokpp,
|
|
42
|
+
user_type: config.auth?.user?.type || "regular",
|
|
43
|
+
};
|
|
44
|
+
req.user = req.session.passport.user;
|
|
45
|
+
}
|
|
46
|
+
// ! intentional: null || undefined > undefined
|
|
47
|
+
req.user = req.user || req.session?.passport?.user || undefined; // fix for user.uid errors, by default user is null, while with express passport it was {}, unauthorized user does not trigger serializer
|
|
48
|
+
// currently 2factor + auth with passwd file not supported
|
|
49
|
+
const ispasswd = (existsSync("passwd") && !config.auth?.["2factor"]) || config.auth?.passwd;
|
|
50
|
+
const loginPageUrl = config.auth?.link?.core?.login || config?.auth?.redirect || "/login";
|
|
51
|
+
if (!req.user?.uid &&
|
|
52
|
+
!config.auth?.disable &&
|
|
53
|
+
isAdmin &&
|
|
54
|
+
!isPublic &&
|
|
55
|
+
!config.auth?.disableRedirect &&
|
|
56
|
+
!req.url.startsWith(prefix) &&
|
|
57
|
+
!req.url.startsWith("/api") &&
|
|
58
|
+
!req.url.includes(loginPageUrl) &&
|
|
59
|
+
!req.url.includes(".") &&
|
|
60
|
+
!req.url.includes("@")) {
|
|
61
|
+
if (isApi) {
|
|
62
|
+
return reply.status(401).send({ error: "unauthorized", code: 401 });
|
|
63
|
+
}
|
|
64
|
+
return reply.redirect(`${loginPageUrl}` + `?redirect=${req.url}`);
|
|
65
|
+
}
|
|
66
|
+
// by default, disable 2factor for id.gov.ua auth
|
|
67
|
+
const check = req.user?.auth_type === "govid" ? config.auth?.["2factor"]?.govid : true;
|
|
68
|
+
const login2faPage = config.auth?.link?.["2fa"]?.login || "/2factor";
|
|
69
|
+
// example: 2factor for admin env only, while public env does not require it
|
|
70
|
+
const checkEnv = () => {
|
|
71
|
+
if (!config.auth?.["2factorEnv"])
|
|
72
|
+
return true;
|
|
73
|
+
if ((config.auth?.["2factorEnv"] &&
|
|
74
|
+
process.env.NODE_ENV === config.auth?.["2factorEnv"]) ||
|
|
75
|
+
(config.auth?.["2factorEnv"] === "admin" && isAdmin)) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
};
|
|
80
|
+
// if 2factor is enabled globally + for user and secondFactorPassed not true => redirect to 2factor login page
|
|
81
|
+
if (req.user?.uid &&
|
|
82
|
+
req.user?.twofa &&
|
|
83
|
+
// config.auth?.["2factor"] &&
|
|
84
|
+
// !isPublic &&
|
|
85
|
+
(routeOptions?.method || "GET") === "GET" &&
|
|
86
|
+
!req.session?.secondFactorPassed &&
|
|
87
|
+
!ispasswd &&
|
|
88
|
+
!config.auth?.disableRedirect &&
|
|
89
|
+
!config.auth?.disable &&
|
|
90
|
+
check &&
|
|
91
|
+
checkEnv() &&
|
|
92
|
+
!req.url.startsWith(login2faPage) &&
|
|
93
|
+
!routeOptions.url?.includes?.("/logout") &&
|
|
94
|
+
!routeOptions.url?.includes?.("/2fa") &&
|
|
95
|
+
!routeOptions.url?.includes?.("/assets")) {
|
|
96
|
+
if (isApi) {
|
|
97
|
+
return reply
|
|
98
|
+
.status(403)
|
|
99
|
+
.send({ error: "access restricted: twofa", code: 403 });
|
|
100
|
+
}
|
|
101
|
+
return reply.redirect(login2faPage);
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { FastifyReply } from "fastify";
|
|
2
1
|
import type { ExtendedRequest } from "../../../types/core.js";
|
|
3
|
-
export default function checkPermissions(req: ExtendedRequest
|
|
2
|
+
export default function checkPermissions(req: ExtendedRequest): Promise<{
|
|
3
|
+
error: string;
|
|
4
|
+
code: number;
|
|
5
|
+
} | null>;
|
|
4
6
|
//# sourceMappingURL=checkPermissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkPermissions.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"checkPermissions.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAMhC,wBAA8B,gBAAgB,CAAC,GAAG,EAAE,eAAe;;;UA+DlE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import logger from "../../logger/getLogger.js";
|
|
2
2
|
import getUserPermissions from "../../access/funcs/getUserPermissions.js";
|
|
3
3
|
import pgClients from "../../pg/pgClients.js";
|
|
4
|
-
export default async function checkPermissions(req
|
|
4
|
+
export default async function checkPermissions(req) {
|
|
5
5
|
const { originalUrl: path, query, params, method, routeOptions, pg = pgClients.client, } = req;
|
|
6
6
|
const user = req.user || req.session?.passport?.user;
|
|
7
7
|
const body = req.body
|
|
@@ -31,9 +31,7 @@ export default async function checkPermissions(req, reply) {
|
|
|
31
31
|
message: "access restricted: permissions",
|
|
32
32
|
uid: user?.uid,
|
|
33
33
|
});
|
|
34
|
-
return
|
|
35
|
-
.status(403)
|
|
36
|
-
.send({ error: "access restricted: permissions", code: 403 });
|
|
34
|
+
return { error: "access restricted: permissions", code: 403 };
|
|
37
35
|
}
|
|
38
36
|
return null;
|
|
39
37
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { FastifyReply } from "fastify";
|
|
2
1
|
import type { ExtendedRequest } from "../../../types/core.js";
|
|
3
|
-
export default function checkPolicy(req: ExtendedRequest
|
|
2
|
+
export default function checkPolicy(req: ExtendedRequest): {
|
|
3
|
+
error: string;
|
|
4
|
+
code: number;
|
|
5
|
+
} | null;
|
|
4
6
|
//# sourceMappingURL=checkPolicy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkPolicy.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"checkPolicy.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,GAAG,EAAE,eAAe;;;SAoKvD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { config, logger } from "../../../../utils.js";
|
|
2
2
|
import block from "../sqlInjection.js";
|
|
3
|
-
export default function checkPolicy(req
|
|
3
|
+
export default function checkPolicy(req) {
|
|
4
4
|
const { originalUrl: path, hostname, query, params, headers, method, routeOptions, } = req;
|
|
5
5
|
const user = req.user || req.session?.passport?.user;
|
|
6
6
|
const body = req.body
|
|
@@ -31,7 +31,7 @@ export default function checkPolicy(req, reply) {
|
|
|
31
31
|
method,
|
|
32
32
|
userRole: user.user_type,
|
|
33
33
|
});
|
|
34
|
-
return
|
|
34
|
+
return { error: "access restricted: 0", code: 403 };
|
|
35
35
|
}
|
|
36
36
|
// ! role
|
|
37
37
|
if (isRole) {
|
|
@@ -45,7 +45,7 @@ export default function checkPolicy(req, reply) {
|
|
|
45
45
|
body,
|
|
46
46
|
uid: user?.uid,
|
|
47
47
|
});
|
|
48
|
-
return
|
|
48
|
+
return { error: "access restricted: 0", code: 403 };
|
|
49
49
|
}
|
|
50
50
|
// ! file injection
|
|
51
51
|
if (JSON.stringify(params || {})?.includes("../") ||
|
|
@@ -59,7 +59,7 @@ export default function checkPolicy(req, reply) {
|
|
|
59
59
|
body,
|
|
60
60
|
uid: user?.uid,
|
|
61
61
|
});
|
|
62
|
-
return
|
|
62
|
+
return { error: "access restricted: 1", code: 409 };
|
|
63
63
|
}
|
|
64
64
|
// ! invalid file extension
|
|
65
65
|
if (path.includes("files/") && allowExtPublic.includes(ext)) {
|
|
@@ -77,7 +77,7 @@ export default function checkPolicy(req, reply) {
|
|
|
77
77
|
stopWords,
|
|
78
78
|
uid: user?.uid,
|
|
79
79
|
});
|
|
80
|
-
return
|
|
80
|
+
return { error: "access restricted: 2", code: 409 };
|
|
81
81
|
}
|
|
82
82
|
// ! user required, but not logged in
|
|
83
83
|
if (requireUser && !user) {
|
|
@@ -88,7 +88,7 @@ export default function checkPolicy(req, reply) {
|
|
|
88
88
|
query,
|
|
89
89
|
body,
|
|
90
90
|
});
|
|
91
|
-
return
|
|
91
|
+
return { error: "access restricted: 3", code: 401 };
|
|
92
92
|
}
|
|
93
93
|
// ! referer
|
|
94
94
|
if (requireReferer && !headers?.referer?.includes?.(hostname)) {
|
|
@@ -100,7 +100,7 @@ export default function checkPolicy(req, reply) {
|
|
|
100
100
|
body,
|
|
101
101
|
uid: user?.uid,
|
|
102
102
|
});
|
|
103
|
-
return
|
|
103
|
+
return { error: "access restricted: 4", code: 403 };
|
|
104
104
|
}
|
|
105
105
|
// ! public / token
|
|
106
106
|
if (isPublic || config.debug) {
|
|
@@ -120,7 +120,7 @@ export default function checkPolicy(req, reply) {
|
|
|
120
120
|
message: "access restricted: 6",
|
|
121
121
|
uid: user?.uid,
|
|
122
122
|
});
|
|
123
|
-
return
|
|
123
|
+
return { error: "access restricted: 6", code: 403 };
|
|
124
124
|
}
|
|
125
125
|
return null;
|
|
126
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/policy/index.ts"],"names":[],"mappings":"AAKA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/policy/index.ts"],"names":[],"mappings":"AAKA,iBAAS,MAAM,CAAC,OAAO,EAAE,GAAG,QAiC3B;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import config from "../../../config.js";
|
|
2
2
|
import checkPolicy from "./funcs/checkPolicy.js";
|
|
3
3
|
import checkPermissions from "./funcs/checkPermissions.js";
|
|
4
|
-
|
|
5
|
-
fastify.addHook("
|
|
4
|
+
function plugin(fastify) {
|
|
5
|
+
fastify.addHook("preHandler", async (request, reply) => {
|
|
6
6
|
// ! skip locally, skip tests
|
|
7
7
|
if ((process.env.local === "true" || process.env.NODE_ENV === "test") &&
|
|
8
8
|
!config.debugAuth &&
|
|
@@ -18,13 +18,13 @@ async function plugin(fastify) {
|
|
|
18
18
|
if (!isApi) {
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
|
-
const resp1 = await checkPermissions(request
|
|
21
|
+
const resp1 = await checkPermissions(request);
|
|
22
22
|
if (resp1) {
|
|
23
|
-
return resp1;
|
|
23
|
+
return reply.status(resp1.code || 403).send(resp1);
|
|
24
24
|
}
|
|
25
|
-
const resp = checkPolicy(request
|
|
25
|
+
const resp = checkPolicy(request);
|
|
26
26
|
if (resp) {
|
|
27
|
-
return resp;
|
|
27
|
+
return reply.status(resp.code || 403).send(resp);
|
|
28
28
|
}
|
|
29
29
|
return null;
|
|
30
30
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access.resources.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/controllers/access.resources.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,GAAG,KAEH,CAAC;AAEP,QAAA,MAAM,eAAe,EAAE,GAAG,EAIvB,CAAC;AAEJ,QAAA,MAAM,eAAe,GAAU,MAAM,GAAG,KAAG,OAAO,CAAC,GAAG,EAAE,CAEvD,CAAC;AAEF,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,eAAe,EAAE,CAAC;AAC7C,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
const arr = existsSync("config/resources.json")
|
|
3
|
+
? JSON.parse(readFileSync("config/resources.json", "utf-8") || "[]")
|
|
4
|
+
: [];
|
|
5
|
+
const publicResources = arr.map(({ name, actions, feature }) => ({
|
|
6
|
+
name,
|
|
7
|
+
actions,
|
|
8
|
+
feature,
|
|
9
|
+
}));
|
|
10
|
+
const accessResources = async (req) => {
|
|
11
|
+
return publicResources;
|
|
12
|
+
};
|
|
13
|
+
export { arr as resources, publicResources };
|
|
14
|
+
export default accessResources;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const arr: any;
|
|
2
|
+
interface Resource {
|
|
3
|
+
name: string;
|
|
4
|
+
actions: string[];
|
|
5
|
+
feature: string;
|
|
6
|
+
}
|
|
7
|
+
declare const publicResources: Resource[];
|
|
8
|
+
declare const resources: (req?: any) => Promise<Resource[]>;
|
|
9
|
+
export { arr as resources, publicResources };
|
|
10
|
+
export default resources;
|
|
11
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/controllers/resources.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,GAAG,KAEH,CAAC;AAEP,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,MAAM,eAAe,EAAE,QAAQ,EAM9B,CAAC;AAEF,QAAA,MAAM,SAAS,GAAU,MAAM,GAAG,KAAG,OAAO,CAAC,QAAQ,EAAE,CAEtD,CAAC;AAEF,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,eAAe,EAAE,CAAC;AAC7C,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
const arr = existsSync("config/resources.json")
|
|
3
|
+
? JSON.parse(readFileSync("config/resources.json", "utf-8") || "[]")
|
|
4
|
+
: [];
|
|
5
|
+
const publicResources = arr.map(({ name, actions, feature }) => ({
|
|
6
|
+
name,
|
|
7
|
+
actions,
|
|
8
|
+
feature,
|
|
9
|
+
}));
|
|
10
|
+
const resources = async (req) => {
|
|
11
|
+
return publicResources;
|
|
12
|
+
};
|
|
13
|
+
export { arr as resources, publicResources };
|
|
14
|
+
export default resources;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../../server/routes/access/functions/resources.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,aAAa,KAEb,CAAC;AAEP,QAAA,MAAM,mBAAmB,EAAE,GAAG,EAM7B,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;;AAC9C,wBAAoB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
const resourcesList = existsSync("config/resources.json")
|
|
3
|
+
? JSON.parse(readFileSync("config/resources.json", "utf-8") || "[]")
|
|
4
|
+
: [];
|
|
5
|
+
const publicResourcesList = resourcesList.map(({ name, actions, feature }) => ({
|
|
6
|
+
name,
|
|
7
|
+
actions,
|
|
8
|
+
feature,
|
|
9
|
+
}));
|
|
10
|
+
export { resourcesList, publicResourcesList };
|
|
11
|
+
export default null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/access/index.ts"],"names":[],"mappings":"AAgBA,wBAA8B,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/access/index.ts"],"names":[],"mappings":"AAgBA,wBAA8B,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,iBA8B9D"}
|
|
@@ -8,8 +8,11 @@ import { accessGroupPostSchema, accessGroupSchema, accessInterfaceSchema, access
|
|
|
8
8
|
export default async function route(fastify, opt = {}) {
|
|
9
9
|
fastify.get("/access-group/:id", { schema: accessGroupSchema }, accessGroup);
|
|
10
10
|
fastify.post("/access-group/:id", { schema: accessGroupPostSchema }, accessGroupPost);
|
|
11
|
-
fastify.get("/access-user/:id", { permission: "admin.users.read", schema: accessUserSchema }, accessUser);
|
|
12
|
-
fastify.post("/access-user/:id", {
|
|
11
|
+
fastify.get("/access-user/:id", { config: { permission: "admin.users.read" }, schema: accessUserSchema }, accessUser);
|
|
12
|
+
fastify.post("/access-user/:id", {
|
|
13
|
+
config: { permission: "admin.users.update" },
|
|
14
|
+
schema: accessUserPostSchema,
|
|
15
|
+
}, accessUserPost);
|
|
13
16
|
fastify.get("/access-interface/:name", { schema: accessInterfaceSchema }, accessInterface);
|
|
14
17
|
fastify.get("/resources", { config: { policy: "L0" } }, async () => publicResourcesList);
|
|
15
18
|
}
|
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":"address.address_id","module":"address","type":"select","hash":"41626bf5da701077d19230e00ca932ab","dbhash":"41626bf5da701077d19230e00ca932ab","update":false},{"name":"address.address_id_parent","module":"address","type":"select","hash":"4e4d6acd5a1a9195dfd1a0910843aa7f","dbhash":"4e4d6acd5a1a9195dfd1a0910843aa7f","update":false},{"name":"address.atu.object_id_all","module":"address","type":"select","hash":"30f9666dd9befdf934b187339e1f77f3","dbhash":"30f9666dd9befdf934b187339e1f77f3","update":false},{"name":"address.atu_city","module":"address","type":"select","hash":"1309a63f84a11b40932dbb5da38b3206","dbhash":"1309a63f84a11b40932dbb5da38b3206","update":false},{"name":"address.atu_territory","module":"address","type":"select","hash":"7168220fae3699052e3a928c68e67eac","dbhash":"7168220fae3699052e3a928c68e67eac","update":false},{"name":"address.district_id","module":"address","type":"select","hash":"f3158f8508c4ce66cfc333eafe56b5c2","dbhash":"f3158f8508c4ce66cfc333eafe56b5c2","update":false},{"name":"address.no_id","module":"address","type":"select","hash":"34b427f460acec10f0b88d9746e47120","dbhash":"34b427f460acec10f0b88d9746e47120","update":false},{"name":"address.settlement","module":"address","type":"select","hash":"dba691548dcfa77e098cec3682ea4a7d","dbhash":"dba691548dcfa77e098cec3682ea4a7d","update":false},{"name":"address.str_id","module":"address","type":"select","hash":"c6a4f3e240a35d30bb00516290f600f1","dbhash":"c6a4f3e240a35d30bb00516290f600f1","update":false},{"name":"named_obj_type","module":"address","type":"select","hash":"802dcb82818181a6f83d542a67203126","dbhash":"802dcb82818181a6f83d542a67203126","update":false},{"name":"ts.temp_structure.address_id","module":"address","type":"select","hash":"41626bf5da701077d19230e00ca932ab","dbhash":"41626bf5da701077d19230e00ca932ab","update":false},{"name":"user_id","module":"address","type":"select","hash":"4339922d053e66ccd43e34f2838037b1","dbhash":"4339922d053e66ccd43e34f2838037b1","update":false},{"name":"core.accounts","module":"admin","type":"select","hash":"36eef3856f46bc0eecb61a6f911ced2e","dbhash":"36eef3856f46bc0eecb61a6f911ced2e","update":false},{"name":"core.menu_id","module":"admin","type":"select","hash":"3b08d360628afa15339f364f5e2ff211","dbhash":"3b08d360628afa15339f364f5e2ff211","update":false},{"name":"core.roles","module":"admin","type":"select","hash":"ed1290380ea5e5e7e48bd08b41cb7793","dbhash":"ed1290380ea5e5e7e48bd08b41cb7793","update":false},{"name":"core.routes.alias","module":"admin","type":"select","hash":"ac6afe9a8ebaf0b26236c4bae5297709","dbhash":"ac6afe9a8ebaf0b26236c4bae5297709","update":false},{"name":"core.routes","module":"admin","type":"select","hash":"306bddbe5b73b0628728a60f5335aaee","dbhash":"306bddbe5b73b0628728a60f5335aaee","update":false},{"name":"core.rules","module":"admin","type":"select","hash":"a86085f579f4abff5cf09e775e034ed3","dbhash":"a86085f579f4abff5cf09e775e034ed3","update":false},{"name":"core.user_uid","module":"admin","type":"select","hash":"45f7d8a57ecbca5b433be7937be51d5c","dbhash":"45f7d8a57ecbca5b433be7937be51d5c","update":false},{"name":"decision_id","module":"base","type":"select","hash":"6576beab5247dc63421f03aa3469911d","dbhash":"6576beab5247dc63421f03aa3469911d","update":false},{"name":"parcel_id","module":"bp_myo","type":"select","hash":"5e662da87477e9f1c8e3578004e9e5f6","dbhash":"5e662da87477e9f1c8e3578004e9e5f6","update":false},{"name":"gis.srid_from_setting","module":"home","type":"select","hash":"bb922c5bc03a74e8a24c70c0c313d3dc","dbhash":"bb922c5bc03a74e8a24c70c0c313d3dc","update":false},{"name":"mbd.external_id_all","module":"mbd","type":"select","hash":"1bc38e542ee705d35d9c32292dbdd35c","dbhash":"1bc38e542ee705d35d9c32292dbdd35c","update":false},{"name":"mbd.external_id_parent","module":"mbd","type":"select","hash":"a5b5c30a4ee968db7b9925c8545b6dca","dbhash":"a5b5c30a4ee968db7b9925c8545b6dca","update":false},{"name":"account_id","module":"ts","type":"select","hash":"1576257d021802fe8d114b45bdc6aa3b","dbhash":"1576257d021802fe8d114b45bdc6aa3b","update":false},{"name":"ts.application_id","module":"ts","type":"select","hash":"2cadf4f27de1027a9ec51368cc4bc660","dbhash":"2cadf4f27de1027a9ec51368cc4bc660","update":false},{"name":"ts.application_id_change","module":"ts","type":"select","hash":"044cbf2152441bcc9e9a6ae003f9cea2","dbhash":"044cbf2152441bcc9e9a6ae003f9cea2","update":false},{"name":"ts.application_id_continue","module":"ts","type":"select","hash":"33a33573982c539f8e229d189dded17b","dbhash":"33a33573982c539f8e229d189dded17b","update":false},{"name":"ts.application_id_done","module":"ts","type":"select","hash":"3428c8449a56a0080322d3aa91ab411c","dbhash":"3428c8449a56a0080322d3aa91ab411c","update":false},{"name":"ts.application_id_temp","module":"ts","type":"select","hash":"6b469f01dbe434f9dd9c7d589ad219b8","dbhash":"6b469f01dbe434f9dd9c7d589ad219b8","update":false},{"name":"ts.contract_id","module":"ts","type":"select","hash":"465bde9244d25ea9c9a596e422bf24b4","dbhash":"465bde9244d25ea9c9a596e422bf24b4","update":false},{"name":"ts.linking_passport_id","module":"ts","type":"select","hash":"48fc7e925dad2d8d163e9f77856808c7","dbhash":"48fc7e925dad2d8d163e9f77856808c7","update":false},{"name":"ts.temp_structure_id","module":"ts","type":"select","hash":"40c4345548b281c798b7dff52085d9b8","dbhash":"40c4345548b281c798b7dff52085d9b8","update":false},{"name":"zone_catalog_id","module":"zoning","type":"select","hash":"cb60ec8df6e2a25a59b0190dd8b8188b","dbhash":"cb60ec8df6e2a25a59b0190dd8b8188b","update":false},{"name":"zone_shortname","module":"zoning","type":"select","hash":"8e41111f899e61d20d8012e65dc47188","dbhash":"8e41111f899e61d20d8012e65dc47188","update":false},{"name":"core.user_mentioned","module":"core","type":"select","hash":"6687f073de73a3ec4b6e0811d9310e7e","dbhash":"6687f073de73a3ec4b6e0811d9310e7e","update":false},{"name":"address.address_type","module":"address","type":"cls","hash":"ab5badd40861c73225db36c7b8e4981d","dbhash":"ab5badd40861c73225db36c7b8e4981d","update":false},{"name":"address.atu_type","module":"address","type":"cls","hash":"33ad98d9db032bd0d687073e0f313dac","dbhash":"33ad98d9db032bd0d687073e0f313dac","update":false},{"name":"address.atu_type_settlement","module":"address","type":"cls","hash":"cbae107f4573d66a49ec57426467e8f7","dbhash":"cbae107f4573d66a49ec57426467e8f7","update":false},{"name":"address.status","module":"address","type":"cls","hash":"587f5bf088325b3f5337aa9806ef3760","dbhash":"587f5bf088325b3f5337aa9806ef3760","update":false},{"name":"address.type","module":"address","type":"cls","hash":"a966762098302f720899d1f7990772c3","dbhash":"a966762098302f720899d1f7990772c3","update":false},{"name":"edrato.atu.level","module":"address","type":"cls","hash":"53b915b3b0dc17ce644fa0421dac2844","dbhash":"53b915b3b0dc17ce644fa0421dac2844","update":false},{"name":"str_type","module":"address","type":"cls","hash":"d4c3eb1516afe0e5474a7dae242836e4","dbhash":"d4c3eb1516afe0e5474a7dae242836e4","update":false},{"name":"yes_no","module":"address","type":"cls","hash":"50c527053426248c20b0a2f112ff9046","dbhash":"50c527053426248c20b0a2f112ff9046","update":false},{"name":"change_type","module":"admin","type":"cls","hash":"999e9cf8baaa1abf5d6499ec3affb584","dbhash":"999e9cf8baaa1abf5d6499ec3affb584","update":false},{"name":"core.actions","module":"admin","type":"cls","hash":"17862ea92ef5ad846a284fd68b4ff1f7","dbhash":"17862ea92ef5ad846a284fd68b4ff1f7","update":false},{"name":"core.column_type","module":"admin","type":"cls","hash":"8004d1fc1876e6f5a096b4f40a7f3775","dbhash":"8004d1fc1876e6f5a096b4f40a7f3775","update":false},{"name":"users.user_type","module":"admin","type":"cls","hash":"9f6a303d48d2d33c68dbcd8e72ad0e83","dbhash":"9f6a303d48d2d33c68dbcd8e72ad0e83","update":false},{"name":"yes_no","module":"admin","type":"cls"},{"name":"contact_type_cls","module":"base","type":"cls","hash":"0c23406ce442c860e2bce53863cc6396","dbhash":"0c23406ce442c860e2bce53863cc6396","update":false},{"name":"crm.doc_type","module":"base","type":"cls","hash":"624d1ddfbb1371133ff5c782dc58f205","dbhash":"624d1ddfbb1371133ff5c782dc58f205","update":false},{"name":"decision_type","module":"base","type":"cls","hash":"3fc211b360881f6489d45154dbac2db3","dbhash":"3fc211b360881f6489d45154dbac2db3","update":false},{"name":"organization_type_cls","module":"base","type":"cls","hash":"5bdfb72d6d8984850261bafa32403417","dbhash":"5bdfb72d6d8984850261bafa32403417","update":false},{"name":"ownership_type_cls","module":"base","type":"cls","hash":"3bf9fbae5fc42fa08fb0d16d481e5ffb","dbhash":"3bf9fbae5fc42fa08fb0d16d481e5ffb","update":false},{"name":"bp_build_type","module":"bp_myo","type":"cls","hash":"31ce3a109896b9712afc284248a8304c","dbhash":"31ce3a109896b9712afc284248a8304c","update":false},{"name":"doc_status","module":"bp_myo","type":"cls","hash":"6bd8bce51fdeb28d611358c55b951fb5","dbhash":"6bd8bce51fdeb28d611358c55b951fb5","update":false},{"name":"parcel_ownership","module":"bp_myo","type":"cls","hash":"19fbc136a3b902f501701c0e568d3a19","dbhash":"19fbc136a3b902f501701c0e568d3a19","update":false},{"name":"parcel_purpose","module":"bp_myo","type":"cls","hash":"04ea399bc1843a003ae3da627df0e4a7","dbhash":"04ea399bc1843a003ae3da627df0e4a7","update":false},{"name":"reg_status","module":"bp_myo","type":"cls","hash":"e0b9753c9f9280590331f67a4217894b","dbhash":"e0b9753c9f9280590331f67a4217894b","update":false},{"name":"mbd.class_mbd_id_act","module":"mbd","type":"cls","hash":"ffca2e068db53ed11d60e6a3fec3516c","dbhash":"ffca2e068db53ed11d60e6a3fec3516c","update":false},{"name":"mbd.class_mbd_id_all","module":"mbd","type":"cls","hash":"cf4d21fc75d144d19cd2c7cc680714ec","dbhash":"cf4d21fc75d144d19cd2c7cc680714ec","update":false},{"name":"mbd.mbd_status","module":"mbd","type":"cls","hash":"973293e8d96bb0c05efeece9cfc1fc48","dbhash":"973293e8d96bb0c05efeece9cfc1fc48","update":false},{"name":"mbd.mbd_status_act","module":"mbd","type":"cls","hash":"c599c807f05c7ca067833ce4fed1b37f","dbhash":"c599c807f05c7ca067833ce4fed1b37f","update":false},{"name":"mbd.serv_type","module":"mbd","type":"cls","hash":"43f255e01f00a1fcd551eec9d82ab804","dbhash":"43f255e01f00a1fcd551eec9d82ab804","update":false},{"name":"mbd.type_work_id","module":"mbd","type":"cls","hash":"6fb0919a428d5352da936876851faa7d","dbhash":"6fb0919a428d5352da936876851faa7d","update":false},{"name":"ts.application_type","module":"ts","type":"cls","hash":"3d89036af2daa188cf6f0b7c43ba1aa2","dbhash":"3d89036af2daa188cf6f0b7c43ba1aa2","update":false},{"name":"ts.architype","module":"ts","type":"cls","hash":"70ec26a6499609f50bab172147b089a0","dbhash":"70ec26a6499609f50bab172147b089a0","update":false},{"name":"ts.bussines_line","module":"ts","type":"cls","hash":"abe5057216aad5630bfb9225eff931f9","dbhash":"abe5057216aad5630bfb9225eff931f9","update":false},{"name":"ts.cancel_ground","module":"ts","type":"cls","hash":"255f1f2079b8a5679bc01d8289d86951","dbhash":"255f1f2079b8a5679bc01d8289d86951","update":false},{"name":"ts.change_status","module":"ts","type":"cls","hash":"fb6a81be58d1bd87239e2484c313a479","dbhash":"fb6a81be58d1bd87239e2484c313a479","update":false},{"name":"ts.contract_status","module":"ts","type":"cls","hash":"2b58c48b0496cb483f8a465db125bf1a","dbhash":"2b58c48b0496cb483f8a465db125bf1a","update":false},{"name":"ts.deadline","module":"ts","type":"cls","hash":"4211045737ea217a374ae8cc9865898c","dbhash":"4211045737ea217a374ae8cc9865898c","update":false},{"name":"ts.done_status","module":"ts","type":"cls","hash":"a61ba6de159e290a737bbe2c9e3c62b7","dbhash":"a61ba6de159e290a737bbe2c9e3c62b7","update":false},{"name":"ts.repair_ground","module":"ts","type":"cls","hash":"18ff23c5cb7ec10a831798cbec06730d","dbhash":"18ff23c5cb7ec10a831798cbec06730d","update":false},{"name":"ts.status_result","module":"ts","type":"cls","hash":"f1d1b19b206399db49fbd520093fd176","dbhash":"f1d1b19b206399db49fbd520093fd176","update":false},{"name":"ts.stop_contract","module":"ts","type":"cls","hash":"aaf769a63574117c19162323512d1ba1","dbhash":"aaf769a63574117c19162323512d1ba1","update":false},{"name":"ts.stop_ground","module":"ts","type":"cls","hash":"fa188f71d40db20f49260ea4c5ed9c0e","dbhash":"fa188f71d40db20f49260ea4c5ed9c0e","update":false},{"name":"ts.tech_conditions","module":"ts","type":"cls","hash":"48b708072ff7eeda550e0eeb50a0a0a9","dbhash":"48b708072ff7eeda550e0eeb50a0a0a9","update":false},{"name":"ts.tech_structure","module":"ts","type":"cls","hash":"dcbcdf70b63e72b928d211a2ca455c0a","dbhash":"dcbcdf70b63e72b928d211a2ca455c0a","update":false},{"name":"ts.temp_status","module":"ts","type":"cls","hash":"4fbc3b286c378c990d5a1972c0151506","dbhash":"4fbc3b286c378c990d5a1972c0151506","update":false},{"name":"ts.temp_structure.tech_spec","module":"ts","type":"cls","hash":"48b708072ff7eeda550e0eeb50a0a0a9","dbhash":"48b708072ff7eeda550e0eeb50a0a0a9","update":false},{"name":"ts.temp_structure.temp_structure_type","module":"ts","type":"cls","hash":"9bd01c529f54933e895fd11f901ef3cc","dbhash":"9bd01c529f54933e895fd11f901ef3cc","update":false},{"name":"ts.temp_structure.ts_architype","module":"ts","type":"cls","hash":"70ec26a6499609f50bab172147b089a0","dbhash":"70ec26a6499609f50bab172147b089a0","update":false},{"name":"ts.temp_structure.type_building","module":"ts","type":"cls","hash":"3e2e45f2063e907bc7ed268e25ea02d0","dbhash":"3e2e45f2063e907bc7ed268e25ea02d0","update":false},{"name":"ts.temp_struct_status","module":"ts","type":"cls","hash":"f546b4a91a91ab02dbce648254d5bca2","dbhash":"f546b4a91a91ab02dbce648254d5bca2","update":false},{"name":"ts.temp_type","module":"ts","type":"cls","hash":"9bd01c529f54933e895fd11f901ef3cc","dbhash":"9bd01c529f54933e895fd11f901ef3cc","update":false},{"name":"ts.type_build","module":"ts","type":"cls","hash":"3e2e45f2063e907bc7ed268e25ea02d0","dbhash":"3e2e45f2063e907bc7ed268e25ea02d0","update":false},{"name":"muo_type","module":"zoning","type":"cls","hash":"9f53e08c69fc0d8cca8f7eb4ffb6a85c","dbhash":"9f53e08c69fc0d8cca8f7eb4ffb6a85c","update":false},{"name":"reglament_type","module":"zoning","type":"cls","hash":"253091c00f3f11b3322f17b21ed49d30","dbhash":"253091c00f3f11b3322f17b21ed49d30","update":false},{"name":"zone_type","module":"zoning","type":"cls","hash":"009d477c83f99f0dfdd19be383c10a23","dbhash":"009d477c83f99f0dfdd19be383c10a23","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')
|