tachybase_todo/packages/plugins/system-settings/src/server.ts
chenos 249dff16d3
refactor: plugin manager (#965)
* feat: improve code

* chore: update version

* feat: api service

* fix: api services

* feat: improve code

* feat: improve code

* feat: improve code

* feat: pm socket

* fix: test errors

* feat: add built-in plugins before upgrade

* feat: update docs

* feat: improve code

* fix: after load
2022-10-27 13:00:16 +08:00

48 lines
1.2 KiB
TypeScript

import { skip } from '@nocobase/acl';
import { InstallOptions, Plugin } from '@nocobase/server';
import { resolve } from 'path';
export class SystemSettingsPlugin extends Plugin {
getInitAppLang(options) {
return options?.cliArgs?.[0]?.opts?.lang || process.env.INIT_APP_LANG || 'en-US';
}
async install(options?: InstallOptions) {
await this.db.getRepository('systemSettings').create({
values: {
title: 'NocoBase',
appLang: this.getInitAppLang(options),
enabledLanguages: [this.getInitAppLang(options)],
logo: {
title: 'nocobase-logo',
filename: '682e5ad037dd02a0fe4800a3e91c283b.png',
extname: '.png',
mimetype: 'image/png',
url: 'https://nocobase.oss-cn-beijing.aliyuncs.com/682e5ad037dd02a0fe4800a3e91c283b.png',
},
},
});
}
beforeLoad() {
const cmd = this.app.findCommand('install');
if (cmd) {
cmd.option('-l, --lang [lang]');
}
}
async load() {
await this.app.db.import({
directory: resolve(__dirname, 'collections'),
});
this.app.acl.use(
skip({
resourceName: 'systemSettings',
actionName: 'get',
}),
);
}
}
export default SystemSettingsPlugin;