mirror of
https://github.com/nocobase/nocobase.git
synced 2026-09-24 16:02:20 +08:00
chore: add import export permission to admin & member user (#4809)
* chore: add import export permission to admin & member user * fix: test
This commit is contained in:
@@ -381,7 +381,7 @@ export class PluginACLServer extends Plugin {
|
||||
name: 'member',
|
||||
title: '{{t("Member")}}',
|
||||
allowNewMenu: true,
|
||||
strategy: { actions: ['view', 'update:own', 'destroy:own', 'create', 'importXlsx', 'export'] },
|
||||
strategy: { actions: ['view', 'update:own', 'destroy:own', 'create'] },
|
||||
default: true,
|
||||
snippets: ['!ui.*', '!pm', '!pm.*'],
|
||||
},
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import { createMockServer, MockServer } from '@nocobase/test';
|
||||
|
||||
describe('acl', () => {
|
||||
let app: MockServer;
|
||||
beforeEach(async () => {
|
||||
app = await createMockServer({
|
||||
plugins: ['nocobase'],
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await app.destroy();
|
||||
});
|
||||
|
||||
it('should add export action to default role strategy', async () => {
|
||||
const roles = ['admin', 'member'];
|
||||
for (const roleName of roles) {
|
||||
const role = app.acl.getRole(roleName);
|
||||
expect(role.strategy['actions']).toContain('export');
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -11,7 +11,34 @@ import { Plugin } from '@nocobase/server';
|
||||
import { exportXlsx } from './actions';
|
||||
|
||||
export class PluginActionExportServer extends Plugin {
|
||||
beforeLoad() {}
|
||||
beforeLoad() {
|
||||
this.app.on('afterInstall', async () => {
|
||||
if (!this.app.db.getRepository('roles')) {
|
||||
return;
|
||||
}
|
||||
|
||||
const roleNames = ['admin', 'member'];
|
||||
const roles = await this.app.db.getRepository('roles').find({
|
||||
filter: {
|
||||
name: roleNames,
|
||||
},
|
||||
});
|
||||
|
||||
for (const role of roles) {
|
||||
await this.app.db.getRepository('roles').update({
|
||||
filter: {
|
||||
name: role.name,
|
||||
},
|
||||
values: {
|
||||
strategy: {
|
||||
...role.strategy,
|
||||
actions: [...role.strategy.actions, 'export'],
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async load() {
|
||||
this.app.dataSourceManager.afterAddDataSource((dataSource) => {
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import { createMockServer, MockServer } from '@nocobase/test';
|
||||
|
||||
describe('acl', () => {
|
||||
let app: MockServer;
|
||||
beforeEach(async () => {
|
||||
app = await createMockServer({
|
||||
plugins: ['nocobase'],
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await app.destroy();
|
||||
});
|
||||
|
||||
it('should add importXlsx action to default role strategy', async () => {
|
||||
const roles = ['admin', 'member'];
|
||||
for (const roleName of roles) {
|
||||
const role = app.acl.getRole(roleName);
|
||||
expect(role.strategy['actions']).toContain('importXlsx');
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -17,6 +17,32 @@ export class PluginActionImportServer extends Plugin {
|
||||
beforeLoad() {
|
||||
this.app.i18n.addResources('zh-CN', namespace, zhCN);
|
||||
this.app.i18n.addResources('en-US', namespace, enUS);
|
||||
|
||||
this.app.on('afterInstall', async () => {
|
||||
if (!this.app.db.getRepository('roles')) {
|
||||
return;
|
||||
}
|
||||
const roleNames = ['admin', 'member'];
|
||||
const roles = await this.app.db.getRepository('roles').find({
|
||||
filter: {
|
||||
name: roleNames,
|
||||
},
|
||||
});
|
||||
|
||||
for (const role of roles) {
|
||||
await this.app.db.getRepository('roles').update({
|
||||
filter: {
|
||||
name: role.name,
|
||||
},
|
||||
values: {
|
||||
strategy: {
|
||||
...role.strategy,
|
||||
actions: [...role.strategy.actions, 'importXlsx'],
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async load() {
|
||||
|
||||
Reference in New Issue
Block a user