/**
  * 保存设定
  */
 public function saveAction()
 {
     if ($this->_request->isPost()) {
         $roleId = (int) $this->_request->getParam('role_id');
         $this->acl->assign($roleId, $this->_request->getPost('rule_id'));
         $this->_redirect($this->view->url(array('action' => 'assign', 'role_id' => $roleId)));
     }
     $this->view = null;
 }
Ejemplo n.º 2
0
 public function checkRole($userID)
 {
     if (Session::get('role') == null) {
         $file = MODEL_PATH . 'AclModel.php';
         if (file_exists($file)) {
             include_once $file;
         }
         $acl = new AclModel();
         $role = $acl->selectAllUserAcl($userID);
         if (empty($role)) {
             $this->error(true);
             return false;
         } else {
             $aclUserId = array();
             foreach ($role as $id) {
                 $aclUserId[] = $id['acl_id'];
             }
             $aclId = implode(',', $aclUserId);
             $roles = $acl->selectAll($aclId);
             $module = array('');
             $controllAction = array('');
             foreach ($roles as $value) {
                 $module[] = trim($value['module']);
                 $temp = explode('|', $value['action']);
                 foreach ($temp as $ac) {
                     $controllAction[] = $value['module'] . '-' . trim($ac);
                 }
             }
             $setRole = array();
             $setRole['module'] = $module;
             $setRole['controllAction'] = $controllAction;
             Session::set('role', $setRole);
         }
     }
     if (Router::$controller != 'index') {
         if (in_array(Router::$controller, Session::get('role')['module']) != 1) {
             $this->error(true);
             return false;
         }
         if (Router::$action != 'default') {
             $check = Router::$controller . '-' . Router::$action;
             echo in_array($check, Session::get('role')['controllAction']) . '<br />';
             if (in_array($check, Session::get('role')['controllAction']) != 1) {
                 $this->error(true);
                 return false;
             }
         }
     }
     $this->index();
 }
Ejemplo n.º 3
0
 /**
  * save User ACL settings
  */
 public function updateACL($section = '')
 {
     $id = $this->obj->getUid();
     if (!$id) {
         return false;
     }
     $objLst = new AclModel();
     $objLst->connectDb();
     if (is_string($section)) {
         $objLst->where("section='{$section}'");
     }
     if (!$objLst->loadList()) {
         return false;
     }
     $i = 0;
     $fc = FrontController::getInstance();
     $db = DbConnector::getConnection();
     $table = $objLst->dbTable('acl_user');
     while ($objLst->next()) {
         if ($fc->getReqVar('acl_' . $objLst->get('name'))) {
             $db->query('INSERT IGNORE INTO `' . $table . '` SET `user_id`=' . $id . ', `acl_id`=' . $objLst->getUid());
         } else {
             $db->query('DELETE IGNORE FROM `' . $table . '` WHERE `user_id`=' . $id . ' AND `acl_id`=' . $objLst->getUid());
         }
         $i++;
     }
     return $i;
 }
Ejemplo n.º 4
0
 function delete_roles($args = null)
 {
     //проверяем значение в post
     if (!isset($_POST["roles"]) || !is_array($_POST["roles"])) {
         echo json_encode(array("error" => array("field" => "roles", "msg" => "Не указаны роли")));
         exit;
     }
     //удаляем массив ролей по параметрам из post
     AclModel::deleteRoles($_POST["roles"]);
     //возвращаем положительный ответ
     echo json_encode(array("answer" => array("msg" => "ok")));
     exit;
 }
Ejemplo n.º 5
0
 public function __construct()
 {
     $model = new AclModel();
     $roles = $model->getRoles();
     foreach ($roles as $role) {
         //        	dump($role['key_name'], $role['parent_key']);
         $this->addRole($role['key_name'], $role['parent_key']);
     }
     $resources = $model->getResources();
     foreach ($resources as $resource) {
         //        	dump($resource['key_name'], $resource['parent_key']);
         $this->addResource($resource['key_name'], $resource['parent_key']);
     }
     foreach ($model->getRules() as $rule) {
         if (!is_null($rule->assertion)) {
             $rule->assertion = new $rule->assertion();
         }
         //        	dump($rule->access ? 'allow' : 'deny', $rule->role, $rule->resource, $rule->privilege, $rule->assertion);
         $this->{$rule->access ? 'allow' : 'deny'}($rule->role, $rule->resource, $rule->privilege, $rule->assertion);
     }
     //        die();
 }
Ejemplo n.º 6
0
 public function __construct()
 {
     $model = new AclModel();
     $roles = $model->getRoles();
     foreach ($roles as $role) {
         $this->addRole($role['key_name'], $role['parent_key']);
     }
     $model->getResources();
     foreach ($model->getResources() as $resource) {
         $this->addResource($resource['key_name'], $resource['parent_key']);
     }
     foreach ($model->getRules() as $rule) {
         $this->{$rule->access ? 'allow' : 'deny'}($rule->role, $rule->resource, $rule->privilege);
     }
 }
Ejemplo n.º 7
0
 public function modelJson()
 {
     $usergroup = Ajde::app()->getRequest()->getPostParam('usergroup', []);
     $model = Ajde::app()->getRequest()->getPostParam('model');
     $preset = Ajde::app()->getRequest()->getPostParam('preset');
     $options = $this->_modelPermissions[$model][$preset];
     foreach ($usergroup as $ugId => $acl) {
         AclModel::removeModelPermissions($ugId, $options['model'], $options['extra']);
         foreach ($acl as $permission => $actions) {
             foreach (explode('|', $actions) as $action) {
                 if ($action) {
                     AclModel::addPermission($permission, 'model', $ugId, $options['model'], $action, $options['extra']);
                 }
             }
         }
     }
     Ajde_Session_Flash::alert('Access updated for ' . $model . ': ' . $preset);
     return ['success' => true];
 }