concrete5仅限文件所有者的限制文件访问权限

时间:2013-01-24 15:06:36

标签: php file-permissions concrete5

我的concrete5网站对一个组织的某些有限成员开放。每个组织成员根据其组织部门分配给用户组。我正在给他们(他们的用户组准确)访问权限添加他们自己的特殊内容,当然他们可以在他们自己的页面上传和附加他们自己的图像/文件。

现在,关于这些图片/文件,我不希望他们能够访问所有以前上传的文件(任何人)。他们只能访问属于他们的文件(或者至少属于他们的用户组)。

最新的Concrete5(5.6)具有为每个文件设置权限的多种功能。但那不是我想要的。逐个设置所有文件的权限是不切实际的。我希望它全部自动设置。因此,当他们上传文件时,该文件权限自动分配,只能为他们访问,除了超级管理员外,没有其他用户能够访问他们的文件。

This is我就此问题进行了最近的论坛讨论,但遗憾的是,讨论最终没有真正的解决方案。

我该怎么做才能获得此功能? concrete5真的有这个功能吗?如果没有,是否有某种添加功能?或者如果我应该弄脏我改变具体的核心代码,我应该从哪里开始?我可以覆盖哪些文件?

1 个答案:

答案 0 :(得分:0)

我自己挖了具体的5核心代码,经过大量的测试,我找到了解决方案

实现这一目标的最简单方法是在elements\files\search_results.php

条件下添加更多内容

按照覆盖结构,将\concrete\elements\files\search_results.php复制到elements\files\search_results.php

concrete5使用此文件显示文件管理器上的文件列表(基于搜索条件)。去看看代码,你会根据自己的要求知道在那里编辑什么。

就我而言,我在foreach循环中添加了这个条件

$u = new User();

if($u->inGroup(Group::getByName("Administrators")) || $u->getUserName() == "admin" || 
$f->getUserID() == $u->getUserID()){
    $pf = new Permissions($f);
    if (!isset($striped) || $striped == 'ccm-list-record-alt') {
         $striped = '';
    } else if ($striped == '') { 
        $striped = 'ccm-list-record-alt';
    }
    $star_icon = ($f->isStarred() == 1) ? 'star_yellow.png' : 'star_grey.png';
    $fv = $f->getApprovedVersion(); 
    ... cut ...
    <?php  } ?>

    </tr>
    <?php 
} ?>
相关问题