예제 #1
0
 protected function seoGUI()
 {
     if (!K_Access::acl()->isAllowed(K_Auth::getRoles(), 'admin/tree/updateseo', true)) {
         return false;
     }
     $this->tabs['seo'] = 'SEO';
     $this->view->node = $this->nodeData;
     return $this->x_render('seo', $this);
 }
예제 #2
0
 public function indexAction()
 {
     $auth_error = false;
     //Если авторизован отпровляем в админку
     if (K_Access::acl()->isAllowed(K_Auth::getRoles(), 'admin')) {
         K_Request::redirect("/admin");
     }
     if (isset($_POST['btnauth'])) {
         $login = K_Arr::get($_POST, 'login', false);
         if ($login and strlen($login) < 100) {
             $password = K_Arr::get($_POST, 'password', false);
             if ($password) {
                 $password_hash = md5(md5($password . K_Registry::get('Configure.salt')));
                 $user_model = new Admin_Model_User();
                 $user_arr = $user_model->find(K_Db_Select::create()->fields('user_id, user_name, user_login , user_email')->where(array('and' => array('user_login' => $login, "user_password" => $password_hash)))->limit(1));
                 if (is_array($user_arr) && count($user_arr)) {
                     $user = $user_arr[0]->toArray();
                     $user_role = new Admin_Model_UserRole();
                     // находим все роли пользователя
                     $user_roles_arr = $user_role->fetchAssoc('role_acl_key', 'SELECT r.role_acl_key FROM (`users_roles`)inner join `role` as r on usrol_role_id=r.role_id  WHERE usrol_user_id = "' . $user['user_id'] . '"');
                     foreach ($user_roles_arr as $v) {
                         $user_roles[] = $v["role_acl_key"];
                     }
                     //Загружаем роли в класc авторизации
                     // var_dump ($user);
                     //даже если у пользователя нет ролей даём ему роль guests
                     if (!isset($user_roles)) {
                         $user_roles = array('guests');
                     }
                     K_Auth::authorize($user, $user_roles);
                     K_Request::redirect("/admin");
                 } else {
                     $auth_error = true;
                 }
             } else {
                 $auth_error = true;
             }
         } else {
             $auth_error = true;
         }
     }
     $this->view->error_msg = '';
     if ($auth_error) {
         $this->view->error_msg = "Ошибка авторизации, неверный логин или пароль";
     }
 }
예제 #3
0
 public static function accessSiteCheck($res, $privilege = 'view')
 {
     self::init();
     self::$lastKnowResourse = null;
     if (is_string($res)) {
         $res = explode('/', $res);
     }
     $allowTrigger = false;
     $access = false;
     $roles = K_Auth::getRoles();
     foreach ($res as $v) {
         if (is_string($v)) {
             $resourseArr[] = $v;
             $resourse = strtolower(implode('/', $resourseArr));
             $access = K_Access::acl()->isAllowed($roles, $resourse, $privilege);
             if (K_Access::acl()->lastResource == false) {
                 $access = $allowTrigger;
             } else {
                 self::$lastKnowResourse = K_Access::acl()->lastResource;
             }
             $allowTrigger = $access;
         }
     }
     return $access;
 }
예제 #4
0
    
    Returns data for client-side tree
    
    var data = [
    {
    label: 'Тест',
    children: [
    { label: 'child1' },
    { label: 'child2' }
    ]
    },
    {
    label: 'Тест 2',
    children: [
    { label: 'child3' }
    ]
    }
    ];
    
    */
    public function getAction()
    {
        $this->disableRender = true;
        $query = new K_Db_Query();
        $treeStructure = array();
        $treeElements = array();
        if ($this->getParam('pid')) {
            $nodeId = $this->getParam('pid');
        } else {
            $nodeId = 0;
        }
        // Прийдётся лезть в тип списка
        $pidType = K_TreeQuery::gOne((int) $nodeId);
        //var_dump($pidType);
        if ($pidType['sorted'] == "По алфавиту") {
            $order = "`t1`.`tree_title`";
        } else {
            $order = "`t1`.`tree_lkey`";
        }
        $sql = 'SELECT `t1`.*, COUNT(`t2`.`tree_id`) as subElements FROM `tree` as `t1` 
				LEFT JOIN `tree` as `t2` ON `t2`.`tree_pid` = `t1`.`tree_id`
				WHERE `t1`.`tree_pid`=' . (int) $nodeId . '
				GROUP BY `t1`.`tree_id`, `t1`.`tree_pid`, `t1`.`tree_title`
				ORDER BY ' . $order;
        $treeElements = $query->q($sql);
        foreach ($treeElements as $key => $column) {
            $treeElements[$key] = $column->toArray();
        }
        if ($nodeId != '0') {
            $nodeArr = K_tree::getParents($nodeId);
            // выбираем всех родителей ноды
            $nodeArr[] = $nodeId;
            // добовляем id самой ноды
            // проверяем на доступ ноду со всеми её родителями к которой запрашиваються потомки
            /* foreach ( $pid_node_perents as $v ) {
			if ( is_string( $v ) ) {
			$resourse_arr[] = $v;
			$resourse = 't:' . implode( '/', $resourse_arr );
			// echo $resourse;
			try {
			$access = K_Access::acl()->isAllowed( K_Auth::getRoles(), $resourse, 'view' );
			// var_dump($access);
			}
			catch ( exception $e ) {
			$access = $allow_trigger;
			}
			$allow_trigger = $access;
			}
			}*/
            //строим ресур запрашиваемой ноды если нода не равна 0
            $allowTrigger = false;
            $access = false;
            $_nodeArr = $nodeArr;
            for ($i = count($_nodeArr); $i > 0; $i--) {
                $resourse = implode('/', $_nodeArr);
                array_pop($_nodeArr);
                $access = K_Access::aclTree()->isAllowed(K_Auth::getRoles(), $resourse, true);
                if (K_Access::aclTree()->lastResource) {
                    break;
                }
            }
            $allowTrigger = $access;