8

FOSUserBundle と Group オプションを使用しています。登録が機能します。グループの作成も機能します。admin と client の 2 つのグループを作成し、手動で a:1:{i:0;s:10:"ROLE_ADMIN";} を fos_group テーブルの admin グループに追加してから、fos_user_user_group に手動でセットアップしてエントリを追加します。ユーザーを管理者グループに追加すると、そのユーザーでログインすると、管理者としてログインできるようになります。

ただし、明らかに、この方法にはいくつかの欠点があります。ユーザーをグループに追加するには、何を使用できますか? 昇格コマンド ライン オプションを使用すると、ロールがそのユーザーに追加されますが、fos_user テーブルに追加されます。また、グループを使用しているため、fos_user テーブルのロール列は使​​用されていないと思われます。それでも目的を果たす場合、プログラムでユーザーをグループに割り当てるにはどうすればよいですか?

もう 1 つの大きな疑問は、グループに役割を割り当てる方法です。グループのアイデア全体について何かを得ていないのかもしれませんが、作成時にグループの役割を追加できると期待していましたが、「新しい」フォームはグループ名のみを要求し、そこにはありませんグループのユーザー昇格コマンドに相当するものは存在しないようです。

ありがとうございました。

4

1 に答える 1

14

プログラムでユーザーをグループに割り当てるにはどうすればよいですか?

$user->addGroup($group);

あなたは FOSUserBundle を使用しているので、あなたのユーザーエンティティはFOS\UserBundle\Modelどれを実装するかを拡張しますGroupableInterface。したがって、ユーザー クラスには既に group methods がありますgetGroups, hasGroup($name), addGroup(GroupInterface $group), removeGroup(GroupInterface $group)。参照については、https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Model/User.phpをご覧ください。

グループに役割を割り当てるにはどうすればよいですか?

$em = $this->getDoctrine()->getEntityManager();

$group = new Group();
$group->setRoles(array());
$group->addRole('ROLE_ACTOR');
$em->persist($group);
$em->flush();

ロールの割り当ては自分で実装する必要があります。fosuserbundle には、このための事前定義されたフォームがありません。

于 2013-02-24T22:47:53.803 に答える