我的concrete5网站对一个组织的某些有限成员开放。每个组织成员根据其组织部门分配给用户组。我正在给他们(他们的用户组准确)访问权限添加他们自己的特殊内容,当然他们可以在他们自己的页面上传和附加他们自己的图像/文件。
现在,关于这些图片/文件,我不希望他们能够访问所有以前上传的文件(任何人)。他们只能访问属于他们的文件(或者至少属于他们的用户组)。
最新的Concrete5(5.6)具有为每个文件设置权限的多种功能。但那不是我想要的。逐个设置所有文件的权限是不切实际的。我希望它全部自动设置。因此,当他们上传文件时,该文件权限自动分配,只能为他们访问,除了超级管理员外,没有其他用户能够访问他们的文件。
This is我就此问题进行了最近的论坛讨论,但遗憾的是,讨论最终没有真正的解决方案。
我该怎么做才能获得此功能? concrete5真的有这个功能吗?如果没有,是否有某种添加功能?或者如果我应该弄脏我改变具体的核心代码,我应该从哪里开始?我可以覆盖哪些文件?
答案 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
} ?>