UNPKG

@opengis/fastify-table

Version:

core-plugins

37 lines (36 loc) 1.4 kB
// import { type ExtendedRequest } from "../../../types/core.js"; import { pgClients, metaFormat, getAdminAccess } from "../../../../utils.js"; const q = `select a.route_id as id, coalesce(b.user_uid, d.user_uid) as user_uid, coalesce(d.actions, b.actions, array['view']) as actions, b.scope, c.role_id from admin.routes a left join admin.role_access b on a.route_id=b.route_id left join admin.roles c on b.role_id=c.role_id and c.enabled left join admin.user_roles d on c.role_id=d.role_id and ( case when d.expiration is not null then d.expiration > CURRENT_DATE else 1=1 end ) where $1 in (a.route_id, a.alias, a.table_name) and coalesce(b.user_uid, d.user_uid) is not null`; export default async function accessInterface(req, reply) { const { pg = pgClients.client, params = {}, user = {}, unittest } = req; // restrict access - admin only const check = await getAdminAccess({ id: params.name, user, }); if (check?.message && check?.status && !unittest) { return reply.status(check?.status).send(check?.message); } const { rows = [] } = await pg.query(q, [params.name]); const cls = { user_uid: "core.user_uid", actions: "core.actions", role_id: "core.roles", }; await metaFormat({ rows, cls, sufix: false }); return { rows }; }