権限¶
許可の概要¶
新しいユーザーには、明示的にアクセス権が付与されていない限り、システムのどの部分に対する権限もありません。アクセスするには、通常、所属するユーザーグループに割り当てられているロールを継承する必要があります。
各ロールには、1つ以上のポリシーを含めることができます。ポリシーは、モジュール内の単一の関数へのアクセスを許可するルールです。たとえば、section/assignポリシーでは、ユーザーがコンテンツをセクションに割り当てることができます。
ポリシーをロールに追加する場合、1つ以上の制限を使用してポリシーを制限することもできます。制限付きのポリシーは、制限内の条件が満たされた場合にのみ適用されます。たとえば、「ブログ投稿」コンテンツタイプに制限のあるcontent/publishポリシーではContentType、ユーザーはブログ投稿のみを公開でき、他のコンテンツは公開できません。
ポリシーのような制限は、ユーザーが 実行できないことではなく、ユーザーが実行できることを指定します。ASectionの制限は、例えば、与えていない、選択されたセクションへのユーザーのアクセスを禁止し、それを。
詳細および権限設定などの権限のユースケースについては、使用可能な制限を参照してください。
ポリシーの組み合わせ¶
1つのロールのポリシーは、またはではなく、および関係 に関連付けられているため、ポリシーに複数の制限がある場合は、それらすべてを適用する必要があります。
複数の制限をandではなくorの関係と組み合わせる場合は、ポリシーを2つに分割し、それぞれにこれらの制限の1つを含めることができます。
ユーザーへの役割の割り当て¶
すべてのユーザーまたはユーザーグループは、多くの役割を持つことができます。ユーザーは、管理者、編集者、サブスクライバーなど、多くのグループに属することもできます。
ユーザーに直接ロールを割り当てないようにすることをお勧めします。代わりに、ユーザーグループに割り当てられた一般的な役割でカバーできるようにコンテンツを整理してみてください。
グループを使用すると、管理が簡単になり、安全性が高まります。また、システムパフォーマンスも向上します。特定のユーザーに追加する役割の割り当てと複雑なポリシーが多いほど、検索/読み込みクエリはより複雑になります。これは、それらが常にアクセス許可を考慮に入れるためです。
利用可能なポリシー¶
モジュール 関数 効果
all modules all functions 利用可能なすべての権限を付与する
content read フロントエンドとバックエンドの両方でコンテンツを表示する
diff 未使用
view_embed 別のコンテンツアイテムに埋め込まれたコンテンツを表示する(ユーザーがそれを個別のコンテンツアイテムとして表示することを許可されていない場合でも)
create 新しいコンテンツを作成します。注:このポリシーがなくても、ユーザーは編集モードに入ることができますが、コンテンツアイテムでの作業を完了することはできません。
edit 既存のコンテンツを編集する
publish コンテンツを公開します。このポリシーがないと、ユーザーは下書きを保存するか、レビューのために送信することしかできません(IbexaExperienceで)
manage_locations 場所を削除し、コンテンツをゴミ箱に送信します
hide コンテンツの場所を非表示にして表示する
reverserelatedlist コンテンツアイテムに関連するすべてのコンテンツを表示します(ユーザーがコンテンツアイテムを個別のコンテンツアイテムとして表示することを許可されていない場合でも)
translate 未使用
remove 場所を削除し、コンテンツをゴミ箱に送信します
versionread 公開後にコンテンツを表示し、サイトモードでコンテンツをプレビューする
versionremove アーカイブされたコンテンツバージョンを削除する
translations 管理者で言語リストを管理する
urltranslator コンテンツアイテムのURLエイリアスを管理する
pendinglist 未使用
restore ごみ箱からコンテンツを復元する
cleantrash ゴミ箱を空にします(ユーザーが個々のコンテンツアイテムにアクセスできない場合でも)
unlock アクションを実行するためにユーザーにロックされたドラフトのロックを解除する
Content Type update 既存のコンテンツタイプを変更します。新しいコンテンツタイプを作成するためにも必要
create 新しいコンテンツタイプを作成します。既存のコンテンツタイプを編集するためにも必要
delete コンテンツタイプを削除する
state assign オブジェクトの状態をコンテンツアイテムに割り当てる
administrate オブジェクトの状態を表示、追加、編集する
role assign ユーザーとユーザーグループに役割を割り当てる
update 既存の役割を変更する
create 新しい役割を作成する
delete 役割を削除する
read 管理者で役割リストを表示します。他のすべての役割関連のポリシーに必要
section assign セクションをコンテンツに割り当てる
edit 既存のセクションを編集して新しいセクションを作成する
view Adminでセクションリストを表示します。他のすべてのセクション関連のポリシーに必要
setup administrate 管理者にアクセス
install 未使用
setup 未使用
system_info 管理者の[システム情報]タブを表示します
site view トップナビゲーションで「サイト」を表示
create サイトファクトリでサイトを作成する
edit サイトファクトリでサイトを編集する
delete サイトファクトリからサイトを削除する
change_status サイトファクトリへの、LiveまたはOfflineサイトファクトリ内のサイトのパブリックアクセスのステータスを変更する
user login アプリケーションにログインします
password 未使用
preferences ユーザー設定へのアクセスと設定
register /registerルートを使用して登録する
selfedit 未使用
activation 未使用
workflow change_stage 指定されたワークフローのステージを変更します
comparison view バージョン比較を表示
segment read セグメント情報をロードする
create セグメントを作成する
update セグメントの更新
remove セグメントを削除
assign_to_user セグメントをユーザーに割り当てる
segment_group read セグメントグループ情報をロードする
create セグメントグループを作成する
update セグメントグループの更新
remove セグメントグループを削除する
siso_policy
checkout チェックアウトプロセスにアクセスする
edit_invoice 請求書の住所を編集する
edit_delivery 配送先住所を編集する
delegate 委任画面にアクセス
dashboard_view バックオフィスのコックピットにアクセスする
forms_profile_edit ユーザープロファイルにアクセスする
manage_orders 注文管理画面にアクセス
manage_prices [価格管理]タブで作業する
manage_stock 在庫管理タブでの作業
manage_shipping_costs [送料管理]タブで作業します
manage_config eコマースの構成設定にアクセスする
lostorder_list バックオフィスで失われた注文にアクセスする
lostorder_manage 失われた注文を管理する
lostorder_process 失われた注文を処理する
orderhistory_view 注文履歴を表示
quickorder クイックオーダーにアクセスする
read_basket バスケットを見る
write_basket バスケットを変更する(追加、更新、削除)
see_product_price カタログの製品価格を参照してください
siso_customercenter
approve カスタマーセンターでバスケットを承認する
buy カスタマーセンターユーザーとして購入
view カスタマーセンターのユーザー管理にアクセスする
siso_control_center
manage_erp_log ERPログへのアクセス
manage_emails コントロールセンターの電子メールアーカイブにアクセスする
manage_jobs: コントロールセンターのeコマースジョブにアクセスする
ルートの権限¶
ポリシーごとに特定のルートへのアクセスを制限できます。
siso_quick_order:
path: /quickorder
defaults:
_controller: siso_quick_order.quick_order_controller:quickOrderAction
policy: siso_policy/quickorder
この構成を使用して、ユーザーが単一のポリシーを持っているかどうかを確認できます。セクションをチェックしたり、複数のポリシーを一度にチェックしたりするなど、より複雑なルールが必要な場合は、コントローラーで権限チェックを実装します。
カスタムコントローラーのアクセス許可¶
performAccessCheck()メソッドを実装することにより、カスタムコントローラーへのアクセスを制御できます。
次の例では、section/viewポリシーがない限り、ユーザーはコントローラーにアクセスできません。
use eZ\Publish\Core\MVC\Symfony\Security\Authorization\Attribute;
public function performAccessCheck(): void
{
parent:performAccessCheck();
$this->denyAccessUnlessGranted(new Attribute('section', 'view'));
}
Attribute 3つの引数を受け入れます。
moduleポリシーモジュールです(例content)
functionモジュール内の関数です(例read)
limitationsチェックするオプションの制限です。ここでは、2つのキーを提供できます。
valueObjectたとえば、チェックするオブジェクトですContentInfo。
targets操作のターゲットである値オブジェクトのテーブルです。たとえば、コンテンツをセクションに割り当てることができるかどうかを確認するには、セクションをとして指定しtargetsます。 targetsLocation、Object state、Sectionオブジェクトを受け入れます。
ユーザーアクセスの確認¶
ユーザーが操作にアクセスできるかどうかを確認するには、このisGranted()メソッドを使用します。たとえば、コンテンツをセクションに割り当てることができるかどうかを確認するには、次のようにします。
$hasAccess = $this->isGranted(
new Attribute( 'section', 'assign', array( 'valueObject' => $contentInfo, 'targets' => $section ) )
);
権限リゾルバー(eZ\Publish\API\Repository\PermissionResolver)を使用することもできます。このcanUser()メソッドは、ユーザーが選択したオブジェクトを使用して特定のアクションを実行できるかどうかを確認します。
例:指定された場所で提供されたコンテンツアイテムの権限をcanUser('content', 'edit', $content, $location ); 確認しますcontent/edit。
コントローラアクションへのアクセスをブロックする¶
コントローラの特定のアクションへのアクセスをブロックするには、アクションの定義に以下を追加します。
$this->denyAccessUnlessGranted(new Attribute('state', 'administrate'));