У меня имеется небольшой проект, в котором реализована пользовательская система, в связи:
<?php
class User extends \FOS\UserBundle\Model\User {
/**
* @ORM\OneToOne(targetEntity="Group")
* @ORM\JoinColumn(name="group_id", referencedColumnName="id")
* @var $group \Cyber\CraftBundle\Entity\Group
*/
protected $group;
//... другие поля
}
/**
* @ORM\Entity(repositoryClass="GroupRepository")
* @ORM\Table(name="cyber_groups")
*/
class Group implements \FOS\UserBundle\Model\GroupInterface
{
/**
* @ORM\ManyToMany(targetEntity="Role")
* @ORM\JoinTable(name="cyber_groups_user_roles")
*/
protected $roles;
/**
* @ORM\OneToOne(targetEntity="Group")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
protected $parent;
}
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\Role\RoleInterface;
/**
* Role Entity
*
* @ORM\Entity(repositoryClass="RoleRepository")
* @ORM\Table(name="cyber_roles")
*/
class Role implements RoleInterface {
public static $ROLE_DEFAULT = "VIEW_SITE";
/**
* @ORM\Id
* @ORM\Column(type="integer", name="id")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", name="role", unique=true, length=70)
*/
private $role;
}
Однако, после авторизации, как я понял, все роли записываются в сессии, что противоречит архитектуре моего приложения, так как в админпанели есть функция смены группы пользователя - таким образом, $user->getRoles() вернёт уже совсем другие значения ролей. Как мне форсировать обновление этих прав с каждым заходом на сайт, а не хранить их в сессиях?