いつものように、IDEをいじくり回しています。今日の課題は、テスト管理コンポーネントのさまざまなマネージャー(リスト/フォームビュー)ごとにビューレベルのACLルールを設定することです。
まず、必要なセクションをaccess.xmlファイルに追加しました
<?xml version="1.0" encoding="UTF-8"?>
<access component="com_babelu_exams">
<section name="component">
<action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" />
<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" />
</section>
<section name="category">
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_CATEGORY_DESC" />
<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_CATEGORY_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_CATEGORY_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_CATEGORY_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_CATEGORY_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_CATEGORY_DESC" />
</section>
<section name="level">
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_LEVEL_DESC" />
<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_LEVEL_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_LEVEL_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_LEVEL_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_LEVEL_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_LEVEL_DESC" />
</section>
<section name="exam">
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_EXAM_DESC" />
<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_EXAM_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_EXAM_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_EXAM_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_EXAM_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_EXAM_DESC" />
</section>
<section name="section">
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_SECTION_DESC" />
<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_SECTION_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_SECTION_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_SECTION_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_SECTION_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_SECTION_DESC" />
</section>
<section name="problem">
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_PROBLEM_DESC" />
<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_PROBLEM_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_PROBLEM_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_PROBLEM_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_PROBLEM_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_PROBLEM_DESC" />
</section>
<section name="result">
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_RESULT_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_RESULT_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_RESULT_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_RESULT_DESC" />
</section>
次に、権限フィールドセットの下のconfig.xmlにこれらを追加しようとしました
<!-- SOF PERMISSIONS -->
<fieldset name="permissions" description="JCONFIG_PERMISSIONS_DESC"
label="JCONFIG_PERMISSIONS_LABEL">
<field name="rules" type="rules" component="com_babelu_exams"
filter="rules" validate="rules" label="JCONFIG_PERMISSIONS_LABEL"
section="component" />
<field name="rules" type="rules" component="com_babelu_exams"
filter="rules" validate="rules" label="JCONFIG_PERMISSIONS_LABEL"
section="category" />
</fieldset>
<!-- EOF PERMISSIONS -->
ただし、カテゴリルールがコンポーネントルールを上書きしたため、これは機能しませんでした。だから私はルールを配列にしてみました
<!-- SOF PERMISSIONS -->
<fieldset name="permissions" description="JCONFIG_PERMISSIONS_DESC"
label="JCONFIG_PERMISSIONS_LABEL">
<field name="rules[]" type="rules" component="com_babelu_exams"
filter="rules" validate="rules" label="JCONFIG_PERMISSIONS_LABEL"
section="component" />
<field name="rules[]" type="rules" component="com_babelu_exams"
filter="rules" validate="rules" label="JCONFIG_PERMISSIONS_LABEL"
section="category" />
</fieldset>
<!-- EOF PERMISSIONS -->
しかし、これは同じ効果がありました。そのため、コンポーネント属性にセクションを追加しようとしましたが、これにより、権限コントロール全体が空白になりました。
それで、私がやろうとしていることがcom_configコンポーネントビュー内で可能かどうか誰かが知っていますか?
これをコンポーネントレベルで保持したいのは、完全なカスケードACLを実現しようとしているためです。特権管理者がACLをコンポーネント->ビュー->レコードに設定できる場所。これにより、現在のユーザーのアクセス許可に関連しないコンポーネントのセクションを非表示にできます。
したがって、com_configを使用してこれを行う方法を知っている場合は、私に知らせてください。 = ^ D当面の間、解決策を探します。見つけたら、投稿します。
Happy Joomla!ng
タイプミスかどうかは不明ですが、access.xmlに</access>
の終了タグがありません。
私は試したことはありませんが、同じ設定で複数の権限フィールドを持つことはできないと思います。
component
セクションは、コンポーネントレベルのオプションで使用されます。category
は、com_categoriesが単一カテゴリのアクセス許可のために使用します。com_content
の場合と同様に、article
セクションがあり、各記事の権限を個別に設定するために使用されます。ビューごとに個別のACLが必要な場合は、独自のACLルールを作成する必要があり、コアのルールを使用しないでください。 com_babelu_exams.level.create
のように。