2013-01-24 1 views
0

내 concrete5 웹 사이트는 일부 제한된 조직 구성원 만 사용할 수 있습니다. 각 조직 구성원은 조직의 부서에 따라 사용자 그룹에 할당됩니다. 나는 그들 자신의 특별한 콘텐츠를 추가 할 수있는 권한을 사용자 그룹에 부여하고 있으며 물론 자신의 이미지/파일을 자신의 페이지에 업로드하고 첨부 할 수 있습니다.concrete5 파일 소유자에 한해 제한 파일 액세스

이제 이미지/파일과 관련하여 이전에 업로드 한 모든 파일에 액세스 할 수 없도록하고 싶습니다. 사용자는 자신에게 속한 파일에만 액세스 할 수 있습니다 (또는 적어도 사용자 그룹에 속함).

최신 Concrete5 (5.6)는 모든 단일 파일에 대한 권한을 설정할 수있는 매우 다양한 기능을 가지고 있습니다. 하지만 그건 내가 원하는 것만은 아니다. 모든 파일에 대한 권한을 하나씩 설정하는 것은 실용적이지 않습니다. 모든 것이 자동으로 설정되기를 바랍니다. 따라서 파일을 업로드 할 때 해당 파일 권한 만 자동으로 배타적으로 할당되므로 다른 사용자가 슈퍼 관리자를 제외한 파일에 액세스 할 수 없어야합니다.

This is이 문제에 관해 가장 가까운 포럼 토론이지만, 불행히도 토론은 실질적인 해결책없이 끝납니다.

이 기능을 사용하려면 어떻게해야합니까? concrete5에는 실제로이 기능이 있습니까? 그렇지 않다면, 거기에 어떤 종류의 기능이 추가되어 있습니까? 또는 손을 더러워서 concrete5 핵심 코드를 변경해야한다면 어디에서 시작해야할까요? 어떤 파일을 덮어 쓸 수 있습니까?

답변

0

나는 나 자신을 concrete5 핵심 코드를 파고 여기 저기 테스트를 많이 후, 나는 해결책

이 다음을 추가하여 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 
} ?>