Skip to content

Python System RBAC

路由:app/api/v1/system.pyapp/api/v1/database.py
服务:app/services/system_service.pyapp/services/database_init.py

API 前缀:/api/v1/system/*

RBAC 资源

资源主要端点权限示例
UsersGET/POST /usersGET/PUT/DELETE /users/{id}system:user:list/create/update/delete
GET /users/exportPOST /users/importsystem:user:export/import
PUT /users/{id}/rolesPUT /users/{id}/postssystem:user:update
PUT /users/{id}/reset-passwordsystem:user:resetPwd
RolesGET/POST /rolesGET/PUT/DELETE /roles/{id}system:role:*
PUT /roles/{id}/permissionsPUT /roles/{id}/deptssystem:role:update
MenusGET/POST /menusGET/PUT/DELETE /menus/{id}system:menu:*
PermissionsGET/POST /permissionsGET/PUT/DELETE /permissions/{id}system:permission:*

列表接口支持 page / pageSize / keyword(权限、用户等)。

角色详情

GET /roles/{id} 返回 RoleDetailDto,含 deptIdspermissionIds(分配权限弹窗预填)。

数据权限

SystemUserService.list_users 通过 DataScopeService 按角色 data_scope 过滤(与 Java 一致)。见 Java 安全 — 数据权限

数据库初始化

app/api/v1/database.py

方法路径说明
POST/api/v1/system/database/init删表 → 建表 → seed → 重载调度器

实现:database_init.initialize_database()
SQL 来源:app/resources/db/drop.sqlschema.sql(内容与 contracts/sql/schema.sql 对齐,运行时读包内副本)。

DB_INIT_ALLOW_WEB 控制;无需登录(与 Java Security 白名单一致)。

种子数据

app/services/seed.py — 权限码、菜单(含 monitor 三项挂系统管理下)、字典 sys_page_size、参数 sys.page.defaultSize 等。已有用户时 seed_data() 直接 return。

相关文档

Xichen Full Stack 内部文档