代码功能更新

This commit is contained in:
root
2025-05-18 07:42:27 +00:00
parent 7fc1d422a1
commit 4a90c41da2
2083 changed files with 695218 additions and 3 deletions
+69
View File
@@ -0,0 +1,69 @@
<?php
/**
* 后台操作日志中间件
*/
namespace app\middleware\admin;
use app\model\admin\action\Log;
use laytp\BaseMiddleware;
use app\model\admin\Menu;
use app\service\admin\UserServiceFacade;
use think\Request;
class ActionLog extends BaseMiddleware
{
/**
* 执行中间件
* @param Request $request
* @param \Closure $next
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function handle(Request $request, \Closure $next)
{
$initUser = UserServiceFacade::init($request->header('laytp-admin-token', $request->cookie('laytpAdminToken')));
if (!$initUser || $request->isGet()) return $next($request);
$requestBody = $request->post();
//日志不记录密码
if (isset($requestBody['password'])) {
$requestBody['password'] = '******';
}
$rule = $request->url();
$menu = '';
$menus = Menu::where('rule', '=', $rule)->order('pid', 'asc')->select()->toArray();
if ($menus) {
for ($i = 1; $i <= 4; $i++) {
if ($menus[0]['pid']) {
$tempMenu = Menu::where('id', '=', $menus[0]['pid'])->find();
if ($tempMenu) {
$tempMenu = $tempMenu->toArray();
array_unshift($menus, $tempMenu);
}
} else {
break;
}
}
$menuName = [];
foreach ($menus as $v) {
$menuName[] = $v['name'];
}
$menu = implode(' - ', $menuName);
}
Log::create([
'admin_id' => UserServiceFacade::getUser()->id,
'rule' => $request->url(),
'menu' => $menu,
'request_body' => json_encode($requestBody, JSON_UNESCAPED_UNICODE),
'request_header' => json_encode(request()->header(), JSON_UNESCAPED_UNICODE),
'ip' => request()->ip(),
'create_time' => date('Y-m-d H:i:s'),
]);
return $next($request);
}
}
+53
View File
@@ -0,0 +1,53 @@
<?php
namespace app\middleware\admin;
use app\service\admin\AuthServiceFacade;
use app\service\admin\UserServiceFacade;
use laytp\BaseMiddleware;
use think\Request;
class Auth extends BaseMiddleware
{
/**
* 执行中间件
* @param Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, \Closure $next)
{
if (AuthServiceFacade::needLogin()) {
// 为了兼容windows和linux获取header中驼峰命名的参数修改
// windows中,使用原样获取,比如laytpAdminToken
// linux中,驼峰需要转换成短横杆获取,比如laytpAdminToken要使用laytp-admin-token来获取
$initUser = UserServiceFacade::init($request->header('laytp-admin-token', $request->header('laytpAdminToken', $request->cookie('laytpAdminToken'))));
if (!$initUser) return $this->error(UserServiceFacade::getError(), 10401);
if (!UserServiceFacade::isLogin()) {
if ($request->isAjax()) {
return $this->error('登录信息已过期', 10401);
} else {
return redirect('/admin/login.html');
}
}
if (AuthServiceFacade::needAuth()) {
$user = UserServiceFacade::getUser();
if ($user->is_super_manager !== 1) {
$userId = $user->id;
$plugin = defined('LT_PLUGIN') ? LT_PLUGIN : '';
$controller = strtolower(str_replace("\\", ".", $request->controller()));
if ($plugin) {
$node = 'plugin/' . $plugin . '/' . $controller . '/' . $request->action();
} else {
$node = trim(app('http')->getName() . '/' . $controller . '/' . $request->action(),'/');
}
if (!AuthServiceFacade::hasAuth($userId, $node)) {
return $this->error('无权请求:/' . $node);
}
}
}
}
return $next($request);
}
}