/** * Specifies the access control rules. * This method is used by the 'accessControl' filter. * @return array access control rules */ public function accessRules() { $arr = explode('/', $_SERVER['REDIRECT_URL']); $system = $arr[1]; $controller = Yii::app()->controller->id; $action = Yii::app()->controller->action->id; $list_ignore = $this->controllerIgnore(); $controller_ignore = $list_ignore[$system]; if (array_key_exists($controller, $controller_ignore)) { $actions = $controller_ignore[$controller]; if (in_array($action, $actions)) { return array(); } } //admin system khong thuoc he thong phan quyen if ($this->user['admin_system'] == 1) { return array(); } if (!empty($this->user['access_url']) && !isset($_GET['test'])) { $access_url = trim($this->user['access_url'], '/'); $request_url = trim($_SERVER['REQUEST_URI'], '/'); if (strpos($request_url, $access_url) !== 0) { die('Access define!'); } } //lay danh sach quyen $query = "SELECT rule_id FROM {{user_rule}} WHERE uid = " . $this->user['id']; $listRule = $this->db->createCommand($query)->queryColumn(); if (empty($listRule)) { die('tài khoản của bạn không được phép truy cập vào hệ thống quản trị'); } //lay danh sach controller co quyen vao $query = "SELECT controller, actions FROM {{permission}} WHERE system = '" . addslashes($system) . "' AND rule_id IN (" . implode(',', $listRule) . ")"; $listController = $this->db->createCommand($query)->queryAll(); $list = array(); foreach ($listController as $item) { $tmp = unserialize($item['actions']); if (isset($list[$item['controller']])) { $list[$item['controller']] = array_merge($list[$item['controller']], $tmp); } else { $list[$item['controller']] = $tmp; } } self::$permission = $list; if (isset($list[$controller]) && in_array($action, $list[$controller])) { return array(array('allow', 'actions' => array(), 'users' => array(Yii::app()->user->guestName)), array('allow', 'users' => array('@')), array('deny', 'users' => array('*'))); } else { echo '<meta charset="utf-8" />'; die('Bạn không có quyền truy cập chức năng này!'); } }