0

私のconcrete5 Webサイトは、組織の一部の限られたメンバーに公開されています。組織の各メンバーは、組織の部門に従ってユーザー グループに割り当てられます。私は彼ら (正確にはユーザー グループ) に、独自の特別なコンテンツを追加するアクセス権を与えています。もちろん、独自の画像/ファイルを自分のページにアップロードして添付することも許可されています。

さて、この画像/ファイルに関して、以前にアップロードされたすべてのファイルに(誰でも)アクセスできるようにしたくありません。自分に属する (または少なくとも自分のユーザー グループに属する) ファイルにのみアクセスできます。

最新の Concrete5 (5.6) には、すべてのファイルにアクセス許可を設定するための非常に用途の広い機能があります。しかし、それはまさに私が望むものではありません。すべてのファイルに 1 つずつアクセス許可を設定するのは現実的ではありません。すべて自動で設定したい。そのため、ファイルをアップロードすると、そのファイルのアクセス許可が自動的に割り当てられ、そのファイルにのみアクセスできるようになります。もちろん、スーパー管理者を除いて、他のユーザーはファイルにアクセスできません。

これは、この問題について私が得た最も近いフォーラムの議論ですが、残念ながら、議論は実際の解決策なしに終わっています.

この機能を利用するにはどうすればよいですか? コンクリート5は本当にこの機能を持っていますか? そうでない場合、この機能を備えた何らかのアドオンはありますか? または、concrete5 のコア コードを変更する必要がある場合は、どこから始めればよいですか? どのファイルを上書きできますか?

4

1 に答える 1

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 
} ?>
于 2013-01-25T09:43:23.777 に答える