tachybase_todo/packages/plugin-acl/src/actions/role-collections.ts

42 lines
1.1 KiB
TypeScript
Raw Normal View History

import { Database } from '@nocobase/database';
type UsingConfigType = 'strategy' | 'resourceAction';
const roleCollectionsResource = {
name: 'roles.collections',
actions: {
async list(ctx, next) {
const role = ctx.action.params.associatedIndex;
const db: Database = ctx.db;
const collectionRepository = db.getRepository('collections');
const collections = await collectionRepository.find();
const roleResources = await db.getRepository('rolesResources').find({
filter: {
roleName: role,
usingActionsConfig: true,
},
});
const roleResourcesNames = roleResources.map((roleResource) => roleResource.get('name'));
ctx.body = collections.map((collection) => {
const usingConfig: UsingConfigType = roleResourcesNames.includes(collection.get('name'))
? 'resourceAction'
: 'strategy';
return {
name: collection.get('name'),
title: collection.get('title'),
usingConfig,
};
});
2022-02-11 23:59:03 +08:00
await next();
},
},
};
export { roleCollectionsResource };