concrete5で特定のユーザーが特定のページの閲覧権限を有するかプログラムでチェックする
Posted by admin at 12:48 日時 2014/11/27
対象:バージョン5.6.xまで
普通のウェブサイト構築では権限周りは一切プログラミング不要で自動で処理されますが、ユーザーごとにその人が閲覧可能なページの一覧を取得してCSVで出力してくれとか、そういう変わった面倒くさい依頼が合った人向けのメモ。
// ページオブジェクトを取得 $c = Page::getByID($cID); // ページ権限キーオブジェクトを取得 $pk = PagePermissionKey::getByHandle('view_page'); if (is_object($pk) && is_object($c)) { // ページ権限キーオブジェクトにページオブジェクトをセット $pk->setPermissionObject($c); // 権限アクセスオブジェクトを取得 $pae = $pk->getPermissionAccessObject(); if (is_object($pae)) { // ユーザーオブジェクトを取得 $u = User::getByUserID($uID); // 特定のユーザーの権限アクセスエンティティを全て取得 $accessEntities = PermissionAccessEntity::getForUser($u); // 権限の検証 $valid = $pae->validateAccessEntities($accessEntities); if ($valid) { echo 'このユーザーは該当ページの閲覧権限があります'; } else { echo 'このユーザーは該当ページの閲覧権限がありません'; } } }
「ゲスト」グループのアクセス権があるかどうかを調べる場合
$gg = GroupPermissionAccessEntity::getOrCreate(Group::getByID(GUEST_GROUP_ID)); $accessEntities = array($gg);