Esempio n. 1
0
 /**
  * 检测用户是否对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);
 }
Esempio n. 2
0
 /**
  * 语言切换
  */
 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);
 }
Esempio n. 3
0
 /**
  * 检测用户的权限
  *
  */
 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);
     }
 }
Esempio n. 4
0
 /**
  * 自动运行
  */
 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));
         }
     }
 }
Esempio n. 5
0
 /**
  * 语言切换
  */
 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);
 }
Esempio n. 6
0
/**
 * 得到当前用户所选择的语言
 *
 * @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);
}
Esempio n. 7
0
 /**
  * 构造函数
  *
  */
 public function __construct()
 {
     $this->db = QP_Db::factory();
     $this->userid = QP_Session_Session::get('login_userid');
     $this->userpriv = QP_Session_Session::get('login_priv');
 }
Esempio n. 8
0
 /**
  * 用户登出
  *
  * @return boolean
  */
 public function logout()
 {
     // 写SESSION
     QP_Session_Session::set(array('login_userid' => 0, 'login_username' => '', 'login_truename' => '', 'login_priv' => 0, 'lang' => ''));
     return true;
 }
Esempio n. 9
0
 /**
  * 检测输入的验证码是否正确
  */
 public static function chkVerify($verifyCode)
 {
     return QP_Session_Session::get('QP_Verify_Code') == md5(strtolower($verifyCode));
 }