From 92955a80b10abeab41b015a2fb25006eb3916c24 Mon Sep 17 00:00:00 2001 From: yanzai Date: Mon, 16 Oct 2023 09:41:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=89=8D=E7=AB=AF=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Admin/BaseInfoController.php | 9 +++++ Laravel/app/Services/Admin/UserService.php | 21 +++++++++++ Laravel/routes/api.php | 1 + el-admin/src/api/api.js | 4 ++ el-admin/src/router/index.js | 37 ++++++++++++++----- el-admin/src/views/Login.vue | 2 - 6 files changed, 62 insertions(+), 12 deletions(-) diff --git a/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php b/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php index 86b8da1..2dfd5bd 100644 --- a/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php +++ b/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php @@ -26,4 +26,13 @@ class BaseInfoController extends Controller return $s->GetDetail(['id'=>$userid]); } + + //检查用户是否有某个目录的权限 + public function CheckMenuAuth(Request $request){ + $userid = $request->get('userid');//中间件产生的参数 + $group = $request->get('role');//中间件产生的参数 + $url= request('url'); + $s=app()->make(UserService::class); + return $s->CheckMenuAuth(['userid'=>$userid,'group'=>$group,'url'=>$url]); + } } diff --git a/Laravel/app/Services/Admin/UserService.php b/Laravel/app/Services/Admin/UserService.php index 5e22ae1..4c72fa6 100644 --- a/Laravel/app/Services/Admin/UserService.php +++ b/Laravel/app/Services/Admin/UserService.php @@ -89,4 +89,25 @@ class UserService } return $result; } + + //检查用户是否有某个目录的权限 + //参数['userid'=>$userid,'group'=>$group,'url'=>$url] + public function CheckMenuAuth($arr){ + $list=['index','dashboard']; + $q=DB::select("select * from users where id=? and `group` =?",[$arr['userid'],$arr['group']]); + if(count($q)==1){ + if(in_array($arr['url'],$list)){ + return \Yz::Return(true,'',[]); + } + $check=DB::select("select * from (select menu_id from group_menu where group_id=? ) as a inner JOIN (select id from menu where url = ? ) as b on a.menu_id=b.id +",[$arr['group'],$arr['url']]); + if(count($check)>0){ + return \Yz::Return(true,'',[]); + }else{ + return \Yz::echoError1('暂无权限'); + } + }else{ + return \Yz::echoError1('权限不匹配'); + } + } } diff --git a/Laravel/routes/api.php b/Laravel/routes/api.php index 55fdff8..6a2830c 100644 --- a/Laravel/routes/api.php +++ b/Laravel/routes/api.php @@ -37,6 +37,7 @@ Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1'],function () { Route::post('admin/GroupChangeMenu','App\Http\Controllers\API\Admin\GroupController@ChangeMenu'); //admin后台组列表 Route::post('admin/GetGroupMenuList','App\Http\Controllers\API\Admin\GroupController@GetGroupMenuList'); //管理员查询分组使用的菜单 Route::post('admin/SaveGroup','App\Http\Controllers\API\Admin\GroupController@Save'); //admin后台组列表 + Route::post('admin/CheckMenuAuth','App\Http\Controllers\API\Admin\BaseInfoController@CheckMenuAuth'); //admin后台检查用户菜单权限 //--------------以上为系统基本接口 Route::post('admin/GetHealthOrganizationEnableList','App\Http\Controllers\API\Admin\YeWu\HealthOrganizationController@GetEnableList'); //admin后台获取可用体检机构列表 diff --git a/el-admin/src/api/api.js b/el-admin/src/api/api.js index 6b5f274..d8642dc 100644 --- a/el-admin/src/api/api.js +++ b/el-admin/src/api/api.js @@ -82,4 +82,8 @@ export const CalendarDel = (data={}) => { //admin后台更新日历 export const CalendarChangeInfo = (data={}) => { return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CalendarChangeInfo',data:data}) +} +//admin后台更新日历 +export const CheckMenuAuth = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CheckMenuAuth',data:data}) } \ No newline at end of file diff --git a/el-admin/src/router/index.js b/el-admin/src/router/index.js index 50abe98..d085623 100644 --- a/el-admin/src/router/index.js +++ b/el-admin/src/router/index.js @@ -18,12 +18,15 @@ const router = createRouter({ routes: [ { path: '/', - name: 'login1', - component: Login - }, { + name: 'Login1', + component: Login, + meta: { requiresAuth:false} + }, + { path: '/login', name: 'Login', - component: Login + component: Login, + meta: { requiresAuth:false} }, { path: '/index', name: 'Index', @@ -71,15 +74,29 @@ const router = createRouter({ import { - GetAdminBaseMenuList + CheckMenuAuth } from "@/api/api.js"; +import { + ElMessage +} from 'element-plus' - -router.beforeEach(async (to, from ) => { - - - +router.beforeEach( (to, from ,next) => { + console.log(to.meta.requiresAuth) + const url= to.path + if(to.meta.requiresAuth ==false){ + next() + }else{ + const NewUrl=url.substring(1) + CheckMenuAuth({url:NewUrl}).then(res=>{ + if(res.status){ + next(); + }else{ + ElMessage.error(res.msg) + next('/'); + } + }) + } }) diff --git a/el-admin/src/views/Login.vue b/el-admin/src/views/Login.vue index 7adda57..2af098c 100644 --- a/el-admin/src/views/Login.vue +++ b/el-admin/src/views/Login.vue @@ -73,8 +73,6 @@ //调用登录接口 Login(data).then(res => { - - if (res.data.status == 'ok') { sessionStorage.setItem('token', res.data.token); sessionStorage.setItem('refreshToken', res.data.refresh_token);