0

sonata admin では、ロールは CRUD エクスポートとマスター権限を持つ管理サービス名に基づいていますが、他のユーザーのグループを作成したり、特定の権限をユーザーに割り当てたりするのはあまりユーザーフレンドリーではないように見えます。 admin は assonata.news.admin.postと名付けられ、そのサービスに対して生成されたロールは次のようになります

ROLE_SONATA_NEWS_ADMIN_POST_EDIT
ROLE_SONATA_NEWS_ADMIN_POST_LIST
ROLE_SONATA_NEWS_ADMIN_POST_CREATE
ROLE_SONATA_NEWS_ADMIN_POST_VIEW
ROLE_SONATA_NEWS_ADMIN_POST_DELETE
ROLE_SONATA_NEWS_ADMIN_POST_EXPORT
ROLE_SONATA_NEWS_ADMIN_POST_OPERATOR
ROLE_SONATA_NEWS_ADMIN_POST_MASTER

通常のユーザーにとって、ロールの読み取り/割り当てが難しい場合、生成されたロールを表現するためのより良い方法はありますか?

4

1 に答える 1

3

自分の答えを追加する

Sonata 管理者で、セキュリティ ロールの表示をユーザー フレンドリーなビューに変更したい場合は、sonata のサービスの下でオーバーライドする必要があります

  • sonata.user.editable_role_builder
  • sonata.user.form.type.security_roles

そして、定義は以下のようになります

    <services>
        <service id="sonata.user.editable_role_builder" class="Acme\DemoBundle\Security\EditableRolesBuilder">
            <argument type="service" id="security.context" />
            <argument type="service" id="sonata.admin.pool" />
            <argument>%security.role_hierarchy.roles%</argument>
        </service>
        <service id="sonata.user.form.type.security_roles" class="Acme\DemoBundle\Form\Type\SecurityRolesType">
            <tag name="form.type" alias="sonata_security_roles" />
            <argument type="service" id="sonata.user.editable_role_builder" />
        </service>

    </services>

これらのサービスでクラスを定義して、私が使用したデモコードAcme\DemoBundle

SecurityRolesTypeクラスはソナタEditableRolesBuilderに依存するようになり、独自のクラスに依存させる必要があるため、同じ方法でソナタのクラスへEditableRolesBuilderの依存関係をオーバーライドする必要がありますRestoreRolesTransformer

すべてのロールをモジュールごとのロールの配列に変換し、SecurityRolesType.phpそれを渡して、このファイルで表示できるすべてのカスタマイズを表示しました

また、親小枝ファイルを上書きするパスをコピーform_admin_fields.html.twigvendor\sonata-project\user-bundle\Resources\viewsて追加することで上書きできるロールの小枝テンプレートを上書きします。app\Resources\SonataUserBundle\views\Form


注: このコードはアクセス許可 [作成、編集、表示、リスト、エクスポート、削除、マスター] のみを表示し、カスタム アクセス許可は処理しません。

最後のステップで、サービス ファイルをメイン構成ファイルにインポートします。config.yml

    imports:
        - { resource: parameters.yml }
        - { resource: security.yml }
        - { resource: @AcmeDemoBundle/Resources/config/admin.xml }

完全なコード デモについては、以下のリポジトリにあります。

Sonata Admin Enhanced View For Security Roles

モジュール権限のプレビュー

ここに画像の説明を入力

于 2015-02-04T06:28:30.033 に答える