権限とワークフロー

concrete5 は高度な権限機能を備えています。デフォルトでは、この複雑な機能は隠されていますが、上級者は管理画面から上級権限モードを有効にすることで、この機能を使用することができます。

コアでは、concrete5は権限の Checker(チェッカー)クラス(コード上では Permissions クラスとして現れることが多いでしょう)を使って、オブジェクトに対する権限を検証します。

$c = Page::getByPath('/path/to/page');
$pc = new Permissions($c);

この例では、ページ(Page)オブジェクトを Permission Category(権限カテゴリー)と言います。開発者は新しいカテゴリーを用途に応じて登録することができます。権限チェッカークラス(Permissions)は、オブジェクトが特定の権限へのアクセス権を持っているかどうかを教えてくれる、Permissions Response(権限レスポンス)の値にアクセスするための、プロキシクラスとして動作します。権限のチェックを行う際には必ず、Permissions Key(権限キー)がデータベースから取得され、その権限キーと権限オブジェクト(特定の権限カテゴリーのオブジェクトのインスタンス)との組み合わせで、Permission Assignment(権限アサイン)オブジェクトがシステムから取得されます。この権限アサインオブジェクトによって、Access(アクセス)オブジェクトにアクセスできます。これは、この権限にどのようなアクセスが可能なのかを教えてくれるオブジェクトです。また、オプションで Duration(期間)オブジェクトによって、アクセスが可能な開始と終了時間を取得することができます。

管理者が特定の権限を誰かに付与するとき、実際にはアクセスエンティティに対して付与しているということになります。これらのエンティティは、特定のユーザーやグループや、「このページを作成したユーザー」というような特定の条件に沿ったユーザーやグループの組み合わせであったりします。

権限は、ワークフローと強固に結びついています。concrete5 では、権限キーごとにワークフローを起動するように設定することができます。管理者は、特定の権限に関連する操作が行われた時に、ひとつ以上のワークフローを起動するように設定することができます。いったんワークフローが起動すると、ワークフローリクエストが作成され、権限に関連する操作はワークフローが完了するまで保留されます。ワークフローは複数のタイプを持つことができます(基本の1段階のワークフローはコアに実装されています。多段階ワークフローは、エンタープライズアドオンとして販売されています)。ワークフローの進行中は、Workflow Progress(ワークフロー進捗)オブジェクトが進捗を管理します。

原文:Permissions & Workflow