diff --git a/server/like/admin/service/system/auth_admin.py b/server/like/admin/service/system/auth_admin.py index a634d58499c4f4cec29f6145722d6b23b4514a05..d25189aa97bd2d8b00e1eb32f84c3b717888bd97 100644 --- a/server/like/admin/service/system/auth_admin.py +++ b/server/like/admin/service/system/auth_admin.py @@ -87,7 +87,7 @@ class SystemAuthAdminService(ISystemAuthAdminService): # 角色权限 auths = [] if admin_id > 1: - menu_ids = await self.auth_perm_service.select_menu_ids_by_role_id([int(i) for i in sys_admin.role_ids]) + menu_ids = await self.auth_perm_service.select_menu_ids_by_role_id([int(i) for i in sys_admin.role_ids.split(',')]) if menu_ids: menus = await db.fetch_all( system_auth_menu.select() diff --git a/server/like/admin/service/system/auth_perm.py b/server/like/admin/service/system/auth_perm.py index 066d8c67e1e7ab3dd77aa523a22a8ff6f629bb81..5030c7a1337a8035d39fbffbe687323b55088647 100644 --- a/server/like/admin/service/system/auth_perm.py +++ b/server/like/admin/service/system/auth_perm.py @@ -59,8 +59,8 @@ class SystemAuthPermService(ISystemAuthPermService): auth_menus = await db.fetch_all( system_auth_menu.select().where( system_auth_menu.c.is_disable == 0, - system_auth_menu.c.id in menu_ids, - system_auth_menu.c.menu_type in ['C', 'A']) + system_auth_menu.c.id.in_(menu_ids), + system_auth_menu.c.menu_type.in_(['C', 'A'])) .order_by(system_auth_menu.c.menu_sort, system_auth_menu.c.id)) menus = [i.perms for i in auth_menus if i.perms] await RedisUtil.hset(AdminConfig.backstage_roles_key, str(role_id), ','.join(menus)) diff --git a/server/like/dependencies/verify.py b/server/like/dependencies/verify.py index 6c5cf7e7ea8ba8bf35cbbfea307300df2afd85b0..74cdf91bea227abec2eda03345084c9a801694d4 100644 --- a/server/like/dependencies/verify.py +++ b/server/like/dependencies/verify.py @@ -69,13 +69,13 @@ async def verify_token(request: Request): role_ids = mapping.get('role_ids') menus = [] # 校验角色权限是否存在 - for role_id in role_ids: + for role_id in role_ids.split(','): if not await RedisUtil.hexists(AdminConfig.backstage_roles_key, role_id): await SystemAuthPermService.cache_role_menus_by_role_id(role_id) - menus.extend(await RedisUtil.hget(AdminConfig.backstage_roles_key, role_id)) - + menus.extend((await RedisUtil.hget(AdminConfig.backstage_roles_key, role_id)).split(',')) + menus = filter(None, set(menus)) # 验证是否有权限操作 - if not (menus and auths in menus.split(',')): + if not (menus and auths in menus): raise AppException(HttpResp.NO_PERMISSION) diff --git a/sql/install.sql b/sql/install.sql index 3f20d5a54885a4a5dd53c49574f8c3a710544a1d..f57ff6c0ad450c5497d1ba458eb78e8452b9af87 100644 --- a/sql/install.sql +++ b/sql/install.sql @@ -583,7 +583,7 @@ INSERT INTO `la_article` VALUES (3, 2, '金山电池公布“沪广深市民绿 COMMIT; BEGIN; -INSERT INTO `la_system_auth_menu` VALUES (1, 0, 'C', '工作台', 'el-icon-Monitor', 50, 'index:console', 'workbench', 'workbench/index', '', '', 1, 1, 0, 1650341765, 1668672757); +INSERT INTO `la_system_auth_menu` VALUES (1, 0, 'C', '工作台', 'el-icon-Monitor', 50, 'common:index:console', 'workbench', 'workbench/index', '', '', 1, 1, 0, 1650341765, 1668672757); INSERT INTO `la_system_auth_menu` VALUES (100, 0, 'M', '权限管理', 'el-icon-Lock', 44, '', 'permission', '', '', '', 0, 1, 0, 1650341765, 1662626201); INSERT INTO `la_system_auth_menu` VALUES (101, 100, 'C', '管理员', 'local-icon-wode', 0, 'system:admin:list', 'admin', 'permission/admin/index', '', '', 1, 1, 0, 1650341765, 1663301404); INSERT INTO `la_system_auth_menu` VALUES (102, 101, 'A', '管理员详情', '', 0, 'system:admin:detail', '', '', '', '', 0, 1, 0, 1650341765, 1660201785);