LoginAuthMiddleware.php
2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
namespace App\Http\Middleware\Bside;
use App\Enums\Common\Code;
use App\Models\User\ProjectMenu;
use App\Models\User\ProjectRole as ProjectRoleModel;
use App\Services\ProjectServer;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Route;
class LoginAuthMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
$token = $request->header('token');
$info = Cache::get($token);
if(empty($info) || empty($token)){
return response(['code'=>Code::USER_LOGIN_ERROE,'msg'=>'当前用户未登录']);
}
//0代表超级管理员
if($info['role_id'] != 0){
$role_info = $this->setRole($info);
//获取当前操作的路由name
$action = Route::currentRouteName();
//查询当前用户是否拥有权限操作
$this->viewOperateAuth($role_info,$action);
}
//配置数据库
$this->setProject($info);
return $next($request);
}
/**
* @remark :设置数据库
* @name :setProject
* @author :lyh
* @method :post
* @time :2023/7/28 14:52
*/
public function setProject($info){
// 设置数据信息
$project = ProjectServer::useProject($info['project_id']);
if(empty($project)){
return response(['code'=>Code::USER_LOGIN_ERROE,'msg'=>'数据库未配置']);
}
}
/**
* @remark :查看角色权限
* @name :setRole
* @author :lyh
* @method :post
* @time :2023/7/28 14:53
*/
public function setRole($info){
//操作权限设置
$projectRoleModel = new ProjectRoleModel();
$role_info = $projectRoleModel->read(['id'=>$info['role_id']]);
if($role_info['status'] != 0){
return response(['code'=>Code::USER_LOGIN_ERROE,'当前用户角色被禁用']);
}
return $role_info;
}
/**
* @remark :查看操作权限
* @name :viewOperateAuth
* @author :lyh
* @method :post
* @time :2023/7/28 14:56
*/
public function viewOperateAuth($role_info,$action){
$projectMenuModel = new ProjectMenu();
$menu_id = $projectMenuModel->read(['action'=>$action],['id']);
if($menu_id !== false){
if(strpos($role_info['role_menu'], $menu_id['id']) === false){
return response(['code'=>Code::USER_PERMISSION_ERROE,'msg'=>'当前用户没有权限']);
}
}
}
}