Блокировка доступа к директориям
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).