ユーザーがバックエンドから作成されているときに、SonataUser を拡張してisAdminというフィールドを true に設定する必要があります。ADMIN => (管理者ユーザーを作成し、他のエンティティで CRUD を実行できます) とSTAFF => (他のエンティティで CRUD を実行できます)の異なるユーザー グループがあります。顧客はフロントエンドから登録します。
backend_users (STAFF) と顧客の両方が、 SonataUserを拡張する User エンティティのインスタンスです。
これまで、デフォルトの User および Group Admin クラスを使用していました。これが私の app/config/config.yml の外観です
...app/config/config.yml...
users:
label: Users
items: [ sonata.user.admin.user ]
groups:
label: Groups
items: [sonata.user.admin.group]
...
それは私にとってはうまくいきました。
ここで、デフォルトの実装をカスタマイズする必要があったため、 からコードをコピーしてSonata/UserBundle/User/BaseUser.php
、<my namespace>/AdminBundle/Admin/BackendUser.php
新しいサービスを作成し、config.yml にマップしました。
...app/config/config.yml...
users:
label: Users
items: [ gd_admin.backend_user ]
groups:
label: Groups
items: [sonata.user.admin.group]
...
...GD/AdminBundle/Resources/services.yml...
parameters:
gd_admin.backend_user.class: GD\AdminBundle\Admin\BackendUserAdmin
..
services:
gd_admin.backend_user:
class: %gd_admin.backend_user.class%
tags:
- { name: sonata.admin, manager_type: orm, label: Backend User }
arguments: [null, GD\AdminBundle\Entity\User, null]
# NOTE: No group defined in tags
...
以前に、ADMIN グループに次のロールを付与しました。
'ROLE_SONATA_USER_ADMIN_USER_EDIT',
'ROLE_SONATA_USER_ADMIN_USER_LIST',
'ROLE_SONATA_USER_ADMIN_ USER _CREATE',
'ROLE_SONATA_USER_ADMIN_ USER _VIEW',
'ROLE_SONATA_USER_ADMIN_ USER _DELETE',
'ROLE_SONATA_USER_ADMIN_ USER _OPERATOR',
'ROLE_SONATA_USER_ADMIN_ USER _MASTER',
Now they are:
'ROLE_GD_ADMIN_BACKEND_USER_EDIT',
'ROLE_GD_ADMIN_BACKEND_USER_LIST',
'ROLE_GD_ADMIN_BACKEND_USER_CREATE',
'ROLE_GD_ADMIN_BACKEND_USER_VIEW',
'ROLE_GD_ADMIN_BACKEND_USER_DELETE',
'ROLE_GD_ADMIN_BACKEND_USER_OPERATOR',
'ROLE_GD_ADMIN_BACKEND_USER_MASTER',
管理者/ダッシュボードにログインすると、管理者ダッシュボード ウィジェットに BackendUser が表示されます。しかし、「リスト」または「新規追加」をクリックすると、403: Access Denied Exception が発生します。
どこが間違っていますか?
ありがとう、アミット