2025-07-14 14:48:36 +08:00

181 lines
4.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* 商业使用授权协议
*
* Copyright (c) 2025 [云泽网]. 保留所有权利.
*
* 本软件仅供评估使用。任何商业用途必须获得书面授权许可。
* 未经授权商业使用本软件属于侵权行为,将承担法律责任。
*
* 授权购买请联系: 357099073@qq.com
* 官方网站: https://www.yunzer.cn
*
* 评估用户须知:
* 1. 禁止移除版权声明
* 2. 禁止用于生产环境
* 3. 禁止转售或分发
*/
/**
* 后台管理系统-管理员
*/
namespace app\admin\controller;
use app\AppApi;
use think\facade\Db;
use think\facade\View;
use think\facade\Cookie;
use think\facade\Config;
use app\admin\model\YzAdminConfig;
use think\exception\HttpResponseException;
use think\facade\Request;
use think\facade\Route;
use think\App;
class Base
{
protected $app;
protected $request;
public $adminId = null;
public $config = [];
public $aUser = [];
public function __construct()
{
date_default_timezone_set('PRC');
# 获取配置
$YzAdminConfig = new YzAdminConfig();
$this->config = $YzAdminConfig->getAll();
# 获取账户,账户判断
$this->adminId = Cookie::get('admin_id');
if (empty($this->adminId)) {
header('Location:' . $this->config['admin_route'] . 'Login/index');
exit;
}
$this->aUser = Db::table('yz_admin_user')->where('uid', $this->adminId)->find();
if (empty($this->aUser)) {
Cookie::delete('admin_id');
$this->error('管理员账户不存在');
}
if ($this->aUser['status'] != 1) {
Cookie::delete('admin_id');
$this->error('管理员已被禁用');
}
# 获取用户组权限
$group = Db::table('yz_admin_user_group')->where(['group_id' => $this->aUser['group_id']])->find();
if (empty($group)) {
$this->error('对不起,您没有权限');
}
# 获取当前链接,查询是否有权限
$controller = request()->controller();
$action = request()->action();
$key = $controller . '/' . $action;
View::assign([
'aUser' => $this->aUser,
'config' => $this->config
]);
}
/**
* 返回json对象
*/
protected function returnCode($code, $data = [], $count = 10)
{
header('Content-type:application/json');
if ($code == 0) {
$arr = array(
'code' => $code,
'msg' => '操作成功',
'count' => $count,
'data' => $data
);
} else if ($code >= 1 && $code <= 100) {
$arr = array(
'code' => $code,
'msg' => $data
);
} else {
$appapi = new AppApi();
$arr = array(
'code' => $code,
'msg' => $appapi::errorTip($code)
);
}
echo json_encode($arr);
if ($code != 0) {
exit;
}
}
/**
* 操作成功跳转的快捷方法
* @access protected
* @param mixed $msg 提示信息
* @return void
*/
protected function success($msg = '')
{
$result = [
'code' => 1,
'msg' => $msg
];
$type = $this->getResponseType();
if ($type == 'html') {
$response = view(Config::get('app.dispatch_success_tmpl'), $result);
} else if ($type == 'json') {
$response = json($result);
}
throw new HttpResponseException($response);
}
/**
* 操作错误跳转的快捷方法
* @access protected
* @param mixed $msg 提示信息
* @return void
*/
protected function error($msg = '')
{
$result = [
'code' => 0,
'msg' => $msg
];
$response = view(Config::get('app.dispatch_error_tmpl'), $result);
throw new HttpResponseException($response);
}
/**
* 获取当前的response 输出类型
* @access protected
* @return string
*/
protected function getResponseType()
{
return Request::isJson() || Request::isAjax() ? 'json' : 'html';
}
public function initialize(App $app)
{
$this->app = $app;
$this->request = $this->app->request;
// 检查是否是直接访问具体页面
$controller = $this->request->controller();
$action = $this->request->action();
// 如果不是访问index控制器且不是通过iframe加载且不是ajax请求
if (
$controller != 'Index' &&
!$this->request->isAjax() &&
!$this->request->header('X-Requested-With') &&
!$this->request->param('iframe')
) { // 添加iframe参数检查
// 重定向到index页面并带上当前页面参数
$currentUrl = $controller . '/' . $action;
redirect(url('index/index', ['page' => $currentUrl]))->send();
exit;
}
}
}