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

45 lines
1.2 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') as string,
title: collection.get('title') as string,
2022-02-18 20:26:50 +08:00
roleName: role,
usingConfig,
};
})
.sort((a, b) => (a.name > b.name ? 1 : -1));
2022-02-11 23:59:03 +08:00
await next();
},
},
};
export { roleCollectionsResource };