0

我的具体5 网站对组织的一些有限成员开放。每个组织成员都根据其在组织中的部门分配到一个用户组。我授予他们(确切地说是他们的用户组)添加他们自己的特殊内容的权限,当然他们也被允许在他们自己的页面上上传和附加他们自己的图像/文件。

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

最新的 Concrete5 (5.6) 具有为每个文件设置权限的通用能力。但这并不是我想要的。为所有文件一一设置权限是不切实际的。我希望一切都自动设置。因此,当他们上传文件时,该文件权限会自动分配,仅供他们访问,除了超级管理员之外,其他用户都不能访问他们的文件。

这是我得到的关于这个问题的最接近的论坛讨论,但不幸的是,讨论最终没有真正的解决方案。

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

4

1 回答 1

0

我自己挖了concrete5核心代码,经过多次测试,我找到了解决方案

实现这一点的最简单方法是添加更多 if 条件elements\files\search_results.php

按照覆盖结构,复制\concrete\elements\files\search_results.phpelements\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 
} ?>
于 2013-01-25T09:43:23.777 回答