Files
yunzer/app/admin/controller/Base.php
T
2025-06-07 09:15:14 +08:00

181 lines
4.2 KiB
PHP

<?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;
}
}
}