/** * 检测用户是否对URI有访问权限的 * * @param unknown_type $userid * @return boolean */ public static function check($userid, $controller, $action) { // 非普通用户不查检权限 if (QP_Session_Session::get('login_priv') != 1) { return true; } // 得到配置 $privcfg = QP_Sys::config('privconfig'); // 如果不使用权限则永远返回 true if (!$privcfg['enable']) { return true; } // 判断是否在全局访问的资源中 $allRes = strtolower($controller . '_*'); $currentRes = strtolower($controller . '_' . $action); if (in_array($currentRes, $privcfg['allow']) || in_array($allRes, $privcfg['allow'])) { return true; } // 得到用户所在的组的所有权限 $userModel = new Model_User(); $userInfo = $userModel->userinfo($userid); $privModel = new Model_Priv(); $resourceArr = $privModel->getResource($userInfo['groupid']); // 判断是否在权限组中 return in_array($currentRes, $resourceArr) || in_array($allRes, $resourceArr); }
/** * 语言切换 */ public function langAction() { $lang = $this->request->getGet('lang'); // 记录 session QP_Session_Session::set('lang', $lang); // 跳转到上一个页面 $url = $this->request->getGet('bgurl'); $url == '' && ($url = QP_Sys::url('setup')); $this->location($url); }
/** * 检测用户的权限 * */ private function _checkpriv() { $controller = isset($_GET['c']) ? $_GET['c'] : QP_Controller::DEFAULT_CONTROLLER; $action = isset($_GET['a']) ? $_GET['a'] : QP_Controller::DEFAULT_ACTION; // 如果有权限则返回 $ret = Priv::check(QP_Session_Session::get('login_userid'), $controller, $action); if ($ret) { return; } // 如果是异步访问则直接输出错误 if (QP_Request::getInstance()->isAJAX()) { die('Priv Access denied'); } else { // 其它方式则直接提示后跳转 QP_Sys::msgbox('Priv Access denied!', url('index', 'index'), 10); } }
/** * 自动运行 */ public function init() { // 得到用户信息 $this->userid = intval(QP_Session_Session::get('login_userid')); $this->username = QP_Session_Session::get('login_username'); $this->priv = QP_Session_Session::get('login_priv'); // 自动得到当前的控制器和方法,适应各种URL模式 $get = $this->request->getGet(); $parsm = $this->request->getParam(); $this->controller = strtolower($get['controller'] ? $get['controller'] : $parsm['controller']); $this->action = strtolower($get['action'] ? $get['action'] : $parsm['action']); // 判断是否登录了,除了可以直接访问的行为 $allowRes = QP_Sys::config('privconfig.allow'); $res = strtolower($this->controller . '_' . $this->action); $resAll = strtolower($this->controller . '_*'); if (!in_array($res, $allowRes) && !in_array($resAll, $allowRes)) { // 没有登录后台则跳转到登录去 if (!$this->userid) { $url = $this->request->currentUrl(); $this->gotoUri('index', 'login', array('bgurl' => $url)); } } }
/** * 语言切换 */ public function langAction() { $lang = $this->request->getGet('lang'); // 记录 session QP_Session_Session::set('lang', $lang); // 如果登录了则记录用户的语言选择 if ($this->userid > 0) { $userModel = new Model_User(); $userModel->saveSet('lang', $lang); } $url = $this->request->getGet('bgurl'); $url == '' && ($url = QP_Sys::url('index')); $this->location($url); }
/** * 得到当前用户所选择的语言 * * @return unknown */ function getLang() { $lang = null; // 如果当前有用户登录了 if (QP_Session_Session::get('login_userid') > 0) { $userModel = new Model_User(); $lang = $userModel->getSet('lang'); } // 如果用户没有设置则检查 session if ($lang == null) { $lang = QP_Session_Session::get('lang'); } // 如果还是没有设置则取系统配置的默认值了 if ($lang == null) { $lang = QP_Sys::config('Sysconfig.lang'); } return ucfirst($lang); }
/** * 构造函数 * */ public function __construct() { $this->db = QP_Db::factory(); $this->userid = QP_Session_Session::get('login_userid'); $this->userpriv = QP_Session_Session::get('login_priv'); }
/** * 用户登出 * * @return boolean */ public function logout() { // 写SESSION QP_Session_Session::set(array('login_userid' => 0, 'login_username' => '', 'login_truename' => '', 'login_priv' => 0, 'lang' => '')); return true; }
/** * 检测输入的验证码是否正确 */ public static function chkVerify($verifyCode) { return QP_Session_Session::get('QP_Verify_Code') == md5(strtolower($verifyCode)); }