- Roadmap: 真的有好多还没开发完成的实用功能
安装与配置
常用命令
1 | export PORT=3000 && npm run develop # 更改启动端口 |
配置文件
1 | // config/server.js, Server相关配置 |
自定义Role及权限
免费版不能在web端直接进行配置,不过可以修改数据库,看一下数据库的表结构就能很好修改了,但问题是每次修改了types结构以后需要重新分配role的权限,否则权限会丢失,可以使用以下代码在重新启动应用时自动更新权限,但还是有个问题,如果应用不完全重启,仍然不会更新,因为应用没有完全重启的话
admin
的也不会更新的:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27// config/functions/bootstrap.js
;
const lodash = require('lodash');
// Prevent permissions loss
const setDefaultRolePermissions = async () => {
const adminRole = await strapi.query("role", "admin").findOne({id: 1});
const customRoles = await strapi.query("role", "admin").find({id_gt: 3});
customRoles.forEach(customRole => {
console.log(`Check ${customRole.name} permissions`);
customRole.permissions.forEach(permission => {
// compare permission fields with adminRole
const realPermission = adminRole.permissions.find(p => p.action === permission.action && p.subject === permission.subject)
if (permission.properties.fields && permission.action.includes('plugins::content-manager.explorer') &&(permission.properties.fields.length !== realPermission.properties.fields.length ||
permission.properties.fields.length !== lodash.uniq(permission.properties.fields.concat( realPermission.properties.fields)).length)) {
strapi.query("permission", "admin").update({id: permission.id}, {properties: realPermission.properties})
}
})
})
};
module.exports = async () => {
setTimeout(setDefaultRolePermissions, 3000); // 使用timeout是因为刚重启的时候数据库还没根据新的结构更新
};
升级步骤
升级非常简单,直接在composer.json
里面全局替换,例如将3.5.2
全部替换成3.6.1
,在执行以下命令即可
1 | npm install |
修改admin系统文件
- 只需要参照
node_modules/strapi-admin/
中的目录结构,在根目录新建admin文件夹与其保持一致,任何想要覆盖的都可以放在这里 - 替换logo,可以在
admin/src/assets/images
中放置