You've already forked opc-backend
开发了多角色登录与鉴权接口:实现了普通用户、企业和管理员的登录分流,并支持Token验证。
开发了权限控制接口:实现了通过数据库分配菜单权限节点,控制接口访问安全。 开发了实名认证中心:实现了个人身份证信息与企业营业执照的提交与审核接口。 开发了任务与协作大厅核心业务:实现了任务的发布、接单、状态流转以及专家邀约接口。 配置了全局环境变量与数据库引擎:集成了 PostgreSQL 数据库、Redis 缓存与 MinIO 对象存储。
This commit is contained in:
103
seed_roles_pages.py
Normal file
103
seed_roles_pages.py
Normal file
@@ -0,0 +1,103 @@
|
||||
import os
|
||||
import django
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
|
||||
django.setup()
|
||||
|
||||
from users.models import Permission, Role, RolePermission
|
||||
|
||||
def seed():
|
||||
print("--- 正在初始化预设角色与页面权限数据 ---")
|
||||
|
||||
# 1. 预设角色
|
||||
roles_data = [
|
||||
{"code": "ADMIN", "name": "管理员", "description": "系统超级管理员", "is_system": True},
|
||||
{"code": "USER", "name": "普通用户", "description": "平台普通注册用户", "is_system": True},
|
||||
{"code": "ENTERPRISE", "name": "企业用户", "description": "已入驻企业账号及团队成员", "is_system": True},
|
||||
{"code": "OPC_USER", "name": "OPC 专家", "description": "已通过 OPC 认证的专家", "is_system": True},
|
||||
]
|
||||
|
||||
for rd in roles_data:
|
||||
Role.objects.update_or_create(code=rd["code"], defaults=rd)
|
||||
|
||||
# 2. 预设页面菜单节点
|
||||
admin_menus = [
|
||||
"menu:business:tasks",
|
||||
"menu:business:tasks:publish",
|
||||
"menu:business:enterprises",
|
||||
"menu:account:users",
|
||||
"menu:business:certs",
|
||||
"menu:business:enterprise_certs",
|
||||
"menu:account:user_manage",
|
||||
"menu:account:roles",
|
||||
"menu:settings:announcements",
|
||||
"menu:settings:skills",
|
||||
"menu:business:models",
|
||||
"menu:business:screen",
|
||||
]
|
||||
|
||||
ent_menus = [
|
||||
"menu:ent:dashboard",
|
||||
"menu:ent:tasks",
|
||||
"menu:ent:tasks:create",
|
||||
"menu:ent:team",
|
||||
"menu:ent:opc_users",
|
||||
"menu:ent:invitations",
|
||||
"menu:ent:verification",
|
||||
"menu:ent:profile",
|
||||
"menu:ent:settings",
|
||||
]
|
||||
|
||||
user_menus = [
|
||||
"menu:user:dashboard",
|
||||
"menu:user:tasks",
|
||||
"menu:user:my_tasks",
|
||||
"menu:user:invitations",
|
||||
"menu:user:announcements",
|
||||
"menu:user:certification",
|
||||
"menu:user:profile",
|
||||
"menu:user:settings",
|
||||
]
|
||||
|
||||
all_menus = admin_menus + ent_menus + user_menus
|
||||
|
||||
# Create root menus
|
||||
for menu_code in all_menus:
|
||||
parts = menu_code.split(":")
|
||||
for i in range(1, len(parts) + 1):
|
||||
parent_code = ":".join(parts[:i])
|
||||
Permission.objects.get_or_create(
|
||||
code=parent_code,
|
||||
defaults={"name": parent_code, "type": "MENU"}
|
||||
)
|
||||
|
||||
# 3. 分配权限
|
||||
admin_role = Role.objects.get(code="ADMIN")
|
||||
ent_role = Role.objects.get(code="ENTERPRISE")
|
||||
user_role = Role.objects.get(code="USER")
|
||||
opc_role = Role.objects.get(code="OPC_USER")
|
||||
|
||||
# Clear old menu permissions to reset cleanly
|
||||
RolePermission.objects.filter(permission__type='MENU').delete()
|
||||
|
||||
def assign_perms(role, menu_list):
|
||||
perms_to_add = []
|
||||
for menu_code in menu_list:
|
||||
parts = menu_code.split(":")
|
||||
for i in range(1, len(parts) + 1):
|
||||
parent_code = ":".join(parts[:i])
|
||||
perms_to_add.append(parent_code)
|
||||
|
||||
perms = Permission.objects.filter(code__in=perms_to_add)
|
||||
for p in perms:
|
||||
RolePermission.objects.get_or_create(role=role, permission=p)
|
||||
|
||||
assign_perms(admin_role, admin_menus)
|
||||
assign_perms(ent_role, ent_menus)
|
||||
assign_perms(user_role, user_menus)
|
||||
assign_perms(opc_role, user_menus)
|
||||
|
||||
print("角色与页面权限预设完成!")
|
||||
|
||||
if __name__ == '__main__':
|
||||
seed()
|
||||
Reference in New Issue
Block a user