@opengis/fastify-table 2.0.157 → 2.0.159
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/server/migrations/context.sql +3 -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/crud/funcs/getAccess.d.ts.map +1 -1
- package/dist/server/plugins/crud/funcs/getAccess.js +13 -3
- 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 +39 -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.user.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.user.js +1 -5
- package/dist/server/routes/access/controllers/access.user.post.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.user.post.js +1 -5
- package/dist/server/routes/access/index.d.ts.map +1 -1
- package/dist/server/routes/access/index.js +2 -2
- 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
|
@@ -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
|
+
*/
|
|
@@ -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":"getAccess.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/getAccess.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAccess.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/getAccess.ts"],"names":[],"mappings":"AA8BA;;;;;;;;;GASG;AAEH,wBAA8B,SAAS,CACrC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAS,EAAE,MAAc,EAAE,EAAE,GAAG,EAC/C,EAAE,MAAmB,sBAiGtB"}
|
|
@@ -2,7 +2,14 @@ import pgClients from "../../pg/pgClients.js";
|
|
|
2
2
|
import getMeta from "../../pg/funcs/getMeta.js";
|
|
3
3
|
import getTemplate from "../../table/funcs/getTemplate.js";
|
|
4
4
|
import applyHook from "../../hook/applyHook.js";
|
|
5
|
+
import getUserPermissions from "../../auth/funcs/getUserPermissions.js";
|
|
5
6
|
const allActions = ["view", "edit", "add", "del"];
|
|
7
|
+
const matches = {
|
|
8
|
+
read: "view",
|
|
9
|
+
create: "add",
|
|
10
|
+
update: "edit",
|
|
11
|
+
delete: "del",
|
|
12
|
+
};
|
|
6
13
|
const q = `select a.route_id as id, d.actions as user_roles, d.actions as role_actions, coalesce(b.actions, array['view']) as interface_actions, b.scope, c.role_id
|
|
7
14
|
from admin.routes a
|
|
8
15
|
left join admin.role_access b on
|
|
@@ -28,7 +35,7 @@ where $1 in (a.route_id, a.alias, a.table_name) and $2 in (b.user_uid, d.user_ui
|
|
|
28
35
|
* @param {String} user.user_type User type
|
|
29
36
|
* @returns { scope: String, roles: String[], actions: String[], query: String }
|
|
30
37
|
*/
|
|
31
|
-
export default async function getAccess({ table, form, user = {}, method =
|
|
38
|
+
export default async function getAccess({ table, form, user = {}, method = "GET" }, pg = pgClients.client) {
|
|
32
39
|
if (!table)
|
|
33
40
|
return null;
|
|
34
41
|
const hookData = await applyHook("getAccess", { table, user, pg, method });
|
|
@@ -83,12 +90,15 @@ export default async function getAccess({ table, form, user = {}, method = 'GET'
|
|
|
83
90
|
}))
|
|
84
91
|
: {};
|
|
85
92
|
const query = userAccess?.scope === "my" ? `uid='${uid}'` : "1=1";
|
|
86
|
-
const
|
|
93
|
+
const permissions = await getUserPermissions(uid, pg).then((el) => (el || [])
|
|
94
|
+
.filter((e) => e.name === (body.table || table))
|
|
95
|
+
.flatMap((el) => el.actions.map((e) => matches[e] || e)));
|
|
96
|
+
const actions = permissions.concat(userAccess?.interface_actions
|
|
87
97
|
?.filter((el) => userAccess?.role_actions?.length
|
|
88
98
|
? userAccess?.role_actions.includes(el)
|
|
89
99
|
: true)
|
|
90
100
|
?.filter((el) => tableActions.includes(el))
|
|
91
|
-
?.filter?.((el, idx, arr) => arr.indexOf(el) === idx);
|
|
101
|
+
?.filter?.((el, idx, arr) => arr.indexOf(el) === idx));
|
|
92
102
|
return {
|
|
93
103
|
scope: userAccess?.scope,
|
|
94
104
|
roles: userAccess?.roles,
|
|
@@ -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,iBAgEpB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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) => {
|
|
13
|
+
const lastDotIndex = el.lastIndexOf(".");
|
|
14
|
+
return [el.slice(0, lastDotIndex), el.slice(lastDotIndex + 1)];
|
|
15
|
+
});
|
|
16
|
+
if (!permissions?.length) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const userPermissions = await getUserPermissions(user?.uid, pg).then((arr) => arr.reduce((acc, curr) => ({ ...acc, [curr.name]: curr.actions }), {}));
|
|
20
|
+
const havePermission = Object.keys(userPermissions).length &&
|
|
21
|
+
permissions?.length &&
|
|
22
|
+
permissions.length ===
|
|
23
|
+
permissions.filter(([key, value]) => userPermissions[key]?.includes(value)).length;
|
|
24
|
+
if (!havePermission) {
|
|
25
|
+
logger.file("policy/permissions", {
|
|
26
|
+
path,
|
|
27
|
+
method,
|
|
28
|
+
params,
|
|
29
|
+
query,
|
|
30
|
+
body,
|
|
31
|
+
message: "access restricted: permissions",
|
|
32
|
+
uid: user?.uid,
|
|
33
|
+
});
|
|
34
|
+
return reply
|
|
35
|
+
.status(403)
|
|
36
|
+
.send({ error: "access restricted: permissions", code: 403 });
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
@@ -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 +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,
|
|
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,gBA6B5D"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { pgClients } from "../../../../utils.js";
|
|
2
2
|
export default async function accessUser(req, reply) {
|
|
3
3
|
if (!req.params?.id) {
|
|
4
4
|
return reply
|
|
5
5
|
.status(400)
|
|
6
6
|
.send({ error: "not enough params: id", code: 400 });
|
|
7
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
8
|
const { pg = pgClients.client } = req;
|
|
13
9
|
const routes = await pg
|
|
14
10
|
.query(`select a.route_id as path, b.actions from admin.routes a
|
|
@@ -1 +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,
|
|
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,gBAyDhE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { pgClients } from "../../../../utils.js";
|
|
2
2
|
import accessUser from "./access.user.js";
|
|
3
3
|
export default async function accessUserPost(req, reply) {
|
|
4
4
|
const { pg = pgClients.client, params, body, user } = req;
|
|
@@ -10,10 +10,6 @@ export default async function accessUserPost(req, reply) {
|
|
|
10
10
|
if (!user?.uid) {
|
|
11
11
|
return reply.status(401).send({ error: "unauthorized", code: 401 });
|
|
12
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
13
|
await pg.query("delete from admin.role_access where user_uid=$1", [
|
|
18
14
|
params.id,
|
|
19
15
|
]);
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,QAsBxD"}
|
|
@@ -7,7 +7,7 @@ import { accessGroupPostSchema, accessGroupSchema, accessInterfaceSchema, access
|
|
|
7
7
|
export default function route(fastify, opt = {}) {
|
|
8
8
|
fastify.get("/access-group/:id", { schema: accessGroupSchema }, accessGroup);
|
|
9
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);
|
|
10
|
+
fastify.get("/access-user/:id", { permission: "admin.users.read", schema: accessUserSchema }, accessUser);
|
|
11
|
+
fastify.post("/access-user/:id", { permission: "admin.users.update", schema: accessUserPostSchema }, accessUserPost);
|
|
12
12
|
fastify.get("/access-interface/:name", { schema: accessInterfaceSchema }, accessInterface);
|
|
13
13
|
}
|
|
@@ -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":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -105,4 +105,5 @@ export { default as s3Client } from "./server/plugins/file/providers/s3/client.j
|
|
|
105
105
|
// scripts
|
|
106
106
|
export { default as dumpDatabase } from "./script/dump.js";
|
|
107
107
|
export { default as migrate } from "./script/migrate.js";
|
|
108
|
+
export { default as getUserPermissions } from "./server/plugins/auth/funcs/getUserPermissions.js";
|
|
108
109
|
export default null;
|