@opengis/admin
Version:
This project Softpro Admin
34 lines (29 loc) • 1.26 kB
JavaScript
import { pgClients, metaFormat } from '@opengis/fastify-table/utils.js';
import { 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) {
const { pg = pgClients.client, params = {}, user = {} } = req;
// restrict access - admin only
const check = await getAdminAccess({
id: params.name, user,
});
if (check) return check;
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 };
}