Zazza / fm

Ostora filemanager

Home Page:http://http://tushkan.com/projects/ostora/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Блокировка доступа к директориям

Flaxing opened this issue · comments

Пользователи видят дерево каталогов к которым не имеют доступа.

Решил добавлением в файл \system\Model\File.php своего говнокода и получилась

Новая функция showTree с работающим контролем доступа

(для установки можно заменить функцию целиком)

    function showTree($pid, $admin = false) {
    $sql="SELECT * FROM fm_users_priv WHERE id=:uid";
        $res = $this->registry['db']->prepare($sql);
        $param = array(":uid" => $_SESSION['login']['id']);
        $res->execute($param);
        $data = $res->fetch(PDO::FETCH_ASSOC);
        $group=$data['group'];

        if ($admin) {
            $sql = "SELECT id,name,pid FROM fm_dirs WHERE pid = :pid ORDER BY name";
        } else {
            $sql = "SELECT fm_dirs.id as id,name,pid,fm_dirs_chmod.right FROM fm_dirs LEFT JOIN fm_dirs_chmod ON fm_dirs.id=fm_dirs_chmod.did WHERE pid = :pid AND close = 0 ORDER BY name";
        }

        $res = $this->registry['db']->prepare($sql);
        $param = array(":pid" => $pid);
        $res->execute($param);
        $data = $res->fetchAll(PDO::FETCH_ASSOC);

        if (count($data) > 0) {
            $this->_tree .= "<ul>";
            foreach($data as $part) {

    $arr=json_decode(stripslashes($part['right']));

    if(count($arr)>0 && !$admin)
    if(!array_key_exists("user".$_SESSION['login']['id'],$arr) && !array_key_exists("fg".$group,$arr) && !array_key_exists("frall",$arr)) continue;         
                $id1 = $part["id"];
                $this->_tree .= "<li>";

                $this->_tree .= "<span class='folder' title='d_" . $part["id"] . "'><a class='tbranch' href='" . $this->registry["uri"] . "fm/?id=" . rawurlencode($part["id"]) . "'>" . $part["name"] . "</a></span>";
                $this->showTree($id1, $admin);
            }
            $this->_tree .= "</ul>";
        }
    }

Класс, а получится сделать pull request?

Если честно на моём сервере с PHP 5.3.3 скрипт много ошибок даёт, исправив несколько (добавление count($array)>0 для циклов foreach некоторых классов), решил всё-таки съехать и написал свой AutoIndex, используя стандартный модуль apache и bootstrap :D
Могу поделиться результатом на почту.

Я уже не поддерживаю этот проект. Поэтому, врядли найду время на его установку и проверку. Поэтому лучший вариант, если всё же вы сделаете pull request (если вообще нужно).
У меня сейчас есть похожий проект, только он более накручен, на falcon и с удалённым хранилищем файлов. Если интересно позже могу выложить в паблик.
И, кстати, интеренсо, где вы используете этот fm и какие функции наиболее востребованы?

Я свой простенький написал на модуле Apache AutoIndex, бутстрапе и немного
PHP с Basic auth.
http://files.mamaev.pro
могу поделиться, если интересно

C уважением, Александр Николаевич Мамаев
инженер-программист информационно-технического отдела
БУ ХМАО-Югры "Ханты-Мансийской клинической стоматологической поликлиники"
тел.: 8 (3467) 351-740
e-mail: 1flaxing1@gmail.com
ICQ: 2080090
Skype: mamaev.pro

10 марта 2015 г., 11:24 пользователь zazza notifications@github.com
написал:

Я уже не поддерживаю этот проект. Поэтому, врядли найду время на его
установку и проверку. Поэтому лучший вариант, если всё же вы сделаете pull
request (если вообще нужно).
У меня сейчас есть похожий проект, только он более накручен, на falcon и с
удалённым хранилищем файлов. Если интересно позже могу выложить в паблик.
И, кстати, интеренсо, где вы используете этот fm и какие функции наиболее
востребованы?


Reply to this email directly or view it on GitHub
#14 (comment).