app = $app; $this->request = $this->app->request; $this->module = strtolower(app('http')->getName()); $this->controller = strtolower($this->request->controller()); $this->action = strtolower($this->request->action()); $this->uid = 0; // 控制器初始化 $this->initialize(); } // 初始化 protected function initialize() { // 检测权限 $this->checkLogin(); $this->param = $this->request->param(); } /** * 显示当前登录账户信息 */ protected function showLoginUserInfo() { $session_admin = get_config('app.session_admin'); if (Session::has($session_admin)) { $loginUser = Session::get($session_admin); // 输出当前登录账户信息 // echo '当前登录账户信息:' . $loginUser['username']; } } /** *验证用户登录 */ protected function checkLogin() { // 定义一个不需要登录验证的接口白名单 $noNeedLogin = [ 'apiout/businessinfo/product_info', 'apiout/businessinfo/bifill', 'apiout/index/getpicbedfolder', 'apiout/download/catelist', 'apiout/download/cateinfo', ]; // 当前请求的路径 $currentPath = $this->module . '/' . $this->controller . '/' . $this->action; // 检查当前路径是否在白名单中 if (in_array($currentPath, $noNeedLogin)) { return true; } if ($this->controller !== 'login' && $this->controller !== 'captcha') { $session_admin = get_config('app.session_admin'); if (!Session::has($session_admin)) { if ($this->request->isAjax()) { return to_assign(404, '请先登录'); } else { // redirect('/home/login/index.html')->send(); // exit; return to_assign(404, '请先登录'); } } else { $loginUser = Session::get($session_admin); $loginInfo = Db::name('Admin')->where('id', $loginUser['id'])->find(); $this->uid = $loginInfo['id']; $params = [ 'uid' => $this->uid, 'name' => $loginInfo['name'], 'thumb' => $loginInfo['thumb'], 'module' => $this->module, 'controller' => $this->controller, 'action' => $this->action, 'url' => $this->module . '/' . $this->controller . '/' . $this->action, 'version' => get_system_config('web', 'version') ]; View::assign('params', $params); // 验证用户访问权限 if (($this->module == 'api') || ($this->module == 'home') || ($this->module == 'apiout')) { return true; } else { $reg_pwd = Db::name('Admin')->where(['id' => $this->uid])->value('reg_pwd'); if ($reg_pwd !== '') { redirect('/home/user/edit_password.html')->send(); exit; } if (!$this->checkAuth()) { if ($this->request->isAjax()) { return to_assign(202, '你没有权限,请联系管理员或者人事部'); } else { echo '
你没有权限,请联系管理员或者人事部
'; exit; } } } } } } /** * Api处理成功结果返回方法 * @param $message * @param null $redirect * @param null $extra * @return mixed * @throws ReturnException */ protected function apiSuccess($msg = 'success', $data = []) { return $this->apiReturn($data, 0, $msg); } /** * Api处理结果失败返回方法 * @param $error_code * @param $message * @param null $redirect * @param null $extra * @return mixed * @throws ReturnException */ protected function apiError($msg = 'fail', $data = [], $code = 1) { return $this->apiReturn($data, $code, $msg); } /** * 返回封装后的API数据到客户端 * @param mixed $data 要返回的数据 * @param integer $code 返回的code * @param mixed $msg 提示信息 * @param string $type 返回数据格式 * @param array $header 发送的Header信息 * @return Response */ protected function apiReturn($data, int $code = 0, $msg = '', string $type = '', array $header = []): Response { $result = [ 'code' => $code, 'msg' => $msg, 'time' => time(), 'data' => $data, ]; $type = $type ?: 'json'; $response = Response::create($result, $type)->header($header); throw new HttpResponseException($response); } }