Quellcode durchsuchen

菜单、用户角色按钮权限

zuy vor 2 Jahren
Ursprung
Commit
d3712f5dc7

+ 1 - 1
admin-web/src/components/auth/auth.vue

@@ -21,6 +21,6 @@ const { userInfos } = storeToRefs(stores);
 
 // 获取 pinia 中的用户权限
 const getUserAuthBtnList = computed(() => {
-	return userInfos.value.authBtnList.some((v: string) => v === props.value);
+	return userInfos.value.permissions.some((v: string) => v === props.value);
 });
 </script>

+ 15 - 6
admin-web/src/directive/authDirective.ts

@@ -12,17 +12,23 @@ export function authDirective(app: App) {
 	// 单个权限验证(v-auth="xxx")
 	app.directive('auth', {
 		mounted(el, binding) {
-			console.log("v-auth",binding.value)
 			const stores = useUserInfo();
-			// if (!stores.userInfos.permList.some((v: string) => v === binding.value)) el.parentNode.removeChild(el);
+			if(!binding.value||!stores.userInfos?.permissions){
+				return;
+			}
+
+			if (!stores.userInfos.permissions.some((v: string) => v === binding.value)) el.parentNode.removeChild(el);
 		},
 	});
 	// 多个权限验证,满足一个则显示(v-auths="[xxx,xxx]")
 	app.directive('auths', {
 		mounted(el, binding) {
+			if(!binding.value){
+				return;
+			}
 			let flag = false;
 			const stores = useUserInfo();
-			stores.userInfos.permList.map((val: string) => {
+			stores.userInfos.permissions.map((val: string) => {
 				binding.value.map((v: string) => {
 					if (val === v) {
 						flag = true;
@@ -31,15 +37,18 @@ export function authDirective(app: App) {
 				});
 			});
 			console.log("v-auths")
-			// if (!flag) el.parentNode.removeChild(el);
+			if (!flag) el.parentNode.removeChild(el);
 		},
 	});
 	// 多个权限验证,全部满足则显示(v-auth-all="[xxx,xxx]")
 	app.directive('auth-all', {
 		mounted(el, binding) {
+			if(!binding.value){
+				return;
+			}
 			const stores = useUserInfo();
-			const flag = judementSameArr(binding.value, stores.userInfos.permList);
-			// if (!flag) el.parentNode.removeChild(el);
+			const flag = judementSameArr(binding.value, stores.userInfos.permissions);
+			if (!flag) el.parentNode.removeChild(el);
 		},
 	});
 }

+ 1 - 1
admin-web/src/router/frontEnd.ts

@@ -133,7 +133,7 @@ export function setFilterMenuAndCacheTagsViewRoutes() {
 	// debugger
 	let routes = [...staticRoutes]
 	console.log("设置后台菜单>>>",adminRoutes)
-	let menuList = setFilterHasPermsMenu(adminRoutes, userInfos.value.permList);
+	let menuList = setFilterHasPermsMenu(adminRoutes, userInfos.value.permissions);
 	console.log("设置后台菜单>>>",menuList)
 	storesRoutesList.setRoutesList(menuList);
 	setCacheTagsViewRoutes();

+ 1 - 1
admin-web/src/router/route.ts

@@ -207,7 +207,7 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                     isAffix: false,
                     isIframe: false,
                     icon: 'ele-User',
-                    perm:"user.list",
+                    perm:"account.list",
                 }
             },
             {

+ 4 - 4
admin-web/src/views/admin/role/dialog.vue

@@ -4,7 +4,7 @@
       <el-form ref="roleDialogFormRef" :model="state.ruleForm" :rules="state.rules" size="default" label-width="90px">
         <el-row :gutter="35">
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="角色名称" prop="name">
+            <el-form-item label="角色名称" prop="roleName">
               <template #label>
                 <el-tooltip effect="dark" content="用于标识日常使用的角色名称" placement="top-start">
                   <span>角色名称</span>
@@ -15,7 +15,7 @@
           </el-col>
 
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="角色别名" prop="roleAlias">
+            <el-form-item label="角色别名" prop="roleDesc">
               <el-input v-model="state.ruleForm.roleDesc" placeholder="请输入角色别名" clearable></el-input>
             </el-form-item>
           </el-col>
@@ -42,7 +42,7 @@
                     </el-col>-->
           <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
             <span style="margin-left: 5px">
-              <el-button  type="danger" @click="handleDelete" size="default">删除角色</el-button>
+              <el-button v-auth="'role.delete'"   type="danger" @click="handleDelete" size="default">删除角色</el-button>
             </span>
           </el-col>
 
@@ -83,7 +83,7 @@ const state = reactive({
     describe: '', // 角色描述
   },
   rules: {
-    name: [u.validator.required, u.validator.length32],
+    roleName: [u.validator.required, u.validator.length32],
   },
   menuData: [] as TreeType[],
   menuProps: {

+ 3 - 3
admin-web/src/views/admin/role/index.vue

@@ -12,13 +12,13 @@
         <!--          </el-icon>-->
         <!--          查询-->
         <!--        </el-button>-->
-        <el-button size="default" type="success" class="ml10" @click="handleOpenDialog(0,false)">
+        <el-button v-auth="'role.add'"  size="default" type="success" class="ml10" @click="handleOpenDialog(0,false)">
           <el-icon>
             <ele-FolderAdd/>
           </el-icon>
           新增角色
         </el-button>
-        <el-button v-if="state.changed" size="default" type="success" class="ml10" @click="handleSaveRolePermission">
+        <el-button v-auth="'role.modify'"   v-if="state.changed" size="default" type="success" class="ml10" @click="handleSaveRolePermission">
           <SvgIcon name="ele-Printer"/>
           保存设置
         </el-button>
@@ -129,7 +129,7 @@ const loadPermissionList = (roleList: Array<any>) => {
       state.columns.push({
         label: role.roleName,
         prop: 'role_' + role.id,
-        width: (role.roleName).length * 24 + 45,
+        width: (role.roleName).length * 60 + 45,
       });
       roleMap.set(role.id, role)
     });

+ 3 - 0
admin-web/src/views/admin/user/dialog.vue

@@ -10,6 +10,7 @@
         append-to-body
         destroy-on-close
         :close-on-click-modal="false"
+        @close="onClose"
     >
       <el-form
           :model="state.ruleForm"
@@ -139,6 +140,7 @@ const state = reactive(initState());
 
 // 打开弹窗
 const open = (action: string = 'add', row: any) => {
+  console.log(state.ruleForm)
   loadRole();
   state.dialog.title = u.dialog.actions[action].title + "『运营用户』"
   state.dialog.submitTxt = u.dialog.actions[action].btn + "『运营用户』"
@@ -160,6 +162,7 @@ const handleAvatarChange = (val: string) => {
 const onClose = () => {
   state.dialog.isShowDialog = false;
   Object.assign(state, initState())
+  console.log(state.ruleForm)
 };
 // 取消
 const onCancel = () => {

+ 3 - 3
admin-web/src/views/admin/user/index.vue

@@ -77,7 +77,7 @@
           查询
         </el-button>
 
-        <el-button size="default" plain  type="success" class="ml10" @click="onRowClick('add',null)">
+        <el-button  v-auth="'user.add'"   size="default" plain  type="success" class="ml10" @click="onRowClick('add',null)">
           <SvgIcon name="ele-FolderAdd"/>
           新增
         </el-button>
@@ -116,8 +116,8 @@
               <ext-d-label type="AdminUser.status" v-model="row[field.prop]"/>
             </template>
             <template v-else-if="'action'===field.prop">
-             <el-button  size="small" plain  type="warning" @click="onRowClick('edit',row)">编辑</el-button>
-             <el-button  size="small" plain  type="danger" @click="onRowDel(row)">删除</el-button>
+             <el-button  v-auth="'user.modify'"  size="small" plain  type="warning" @click="onRowClick('edit',row)">编辑</el-button>
+             <el-button v-auth="'user.delete'"   size="small" plain  type="danger" @click="onRowDel(row)">删除</el-button>
             </template>
             <template v-else>
               <div>{{row[field.prop]}}</div>

+ 3 - 1
admin-web/src/views/login/component/account.vue

@@ -133,6 +133,8 @@ const initData = () => {
         offset: 100,
       })
     }
+
+    signInSuccess(false);
   }).catch(err => {
     ElMessage.error("登录状态失效,请重新登录管理控制台");
     // Session.clear();
@@ -165,7 +167,7 @@ const onSignIn = async () => {
       // refreshLogin();
       state.loading.signIn = false;
 
-      signInSuccess(false);
+
     } else {
       ElMessage.error(res.msg);
       state.loading.signIn = false;

+ 4 - 1
admin/src/main/java/com/kym/admin/controller/AdminUserController.java

@@ -1,5 +1,6 @@
 package com.kym.admin.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.kym.common.R;
@@ -82,6 +83,7 @@ public class AdminUserController extends IController {
      * @param adminUserVo
      * @return
      */
+    @SaCheckPermission("user.add")
     @PostMapping("add")
     R<?> createAdminUser(@RequestBody AdminUserVo adminUserVo) {
         adminUserService.createAdminUser(adminUserVo);
@@ -95,6 +97,7 @@ public class AdminUserController extends IController {
      * @param adminUserVo
      * @return
      */
+    @SaCheckPermission("user.modify")
     @PostMapping("modify")
     R<?> updateAdminUser(@RequestBody AdminUserVo adminUserVo) {
         adminUserService.updateAdminUser(adminUserVo);
@@ -117,7 +120,7 @@ public class AdminUserController extends IController {
         return resp(() -> adminUserService.detail(id));
     }
 
-    //    @SaCheckPermission("")
+    @SaCheckPermission("user.modify")
     @PostMapping("updateRole")
     R<?> updateRole(@RequestBody AdminUserRoleVo vo) {
         adminUserService.updateRole(vo.getUserId(), vo.getRoleIdList());

+ 1 - 1
admin/src/main/java/com/kym/admin/controller/CustomController.java

@@ -30,7 +30,7 @@ public class CustomController {
         this.payLogService = payLogService;
     }
 
-    @SaCheckPermission("user.list")
+    @SaCheckPermission("account.list")
     @SysLog("查询用户列表")
     @GetMapping("/listUser")
     public R listUser(@ModelAttribute CommonQueryParam params) {

+ 5 - 1
admin/src/main/java/com/kym/admin/controller/RoleController.java

@@ -1,5 +1,6 @@
 package com.kym.admin.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.kym.common.R;
 import com.kym.common.controller.IController;
 import com.kym.entity.admin.Role;
@@ -40,18 +41,20 @@ public class RoleController extends IController {
         return resp(()->roleService.listRole(roleName));
     }
 
-
+    @SaCheckPermission("role.add")
     @PostMapping("add")
     public R<?>  add(@RequestBody Role role) {
         return resp(() -> roleService.add(role));
     }
 
+    @SaCheckPermission("role.modify")
     @PostMapping("modify")
     public R<?> modify(@RequestBody Role role) {
         return resp((t) -> roleService.modify(role));
     }
 
 
+    @SaCheckPermission("role.delete")
     @PostMapping("delete/{id}")
     public R<?>  delete(@PathVariable (name = "id") int id) {
         return resp((t) -> roleService.remove(id));
@@ -65,6 +68,7 @@ public class RoleController extends IController {
 
 
 
+    @SaCheckPermission("role.modify")
     @PostMapping("saveList")
     public R<?>  saveList(@RequestBody List<Role> roleList) {
         return resp((t) -> roleService.saveList(roleList));