2013-01-24 178 views
0

我的concrete5網站對組織的某些有限成員開放。根據組織中的部門將每個組織成員分配到一個用戶組。我讓他們(他們的用戶組是準確的)可以添加他們自己的特殊內容,當然他們也可以在他們自己的頁面上載和附加他們自己的圖片/文件。concrete5僅限文件所有者的限制文件訪問

現在,關於這些圖像/文件,我不希望他們能夠訪問所有以前上傳的文件(任何人)。他們只能訪問屬於他們的文件(或者至少屬於他們的用戶組)。

最新的Concrete5(5.6)具有非常靈活的設置每個文件權限的能力。但那不完全是我想要的。逐個設置所有文件的權限並不實際。我希望它自動設置。所以當他們上傳他們的文件時,這個文件權限自動分配給他們只能訪問它們,除了超級管理員以外,其他用戶都不能訪問他們的文件。

This is我得到了關於這個問題的最接近的論壇討論,但不幸的是,討論最終沒有真正的解決方案。

我該怎麼做才能獲得此功能? concrete5真的有這個功能嗎?如果沒有,是否有某種附加功能與此功能?或者如果我應該弄髒混凝土5核心代碼,我應該從哪裏開始?我可以覆蓋哪些文件?

回答

0

我挖concrete5核心代碼我和很多測試在這裏和那裏後,我已經找到了解決辦法

實現這一目標是通過增加更多的如果有條件上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 
} ?>