2 回答

TA貢獻(xiàn)1966條經(jīng)驗 獲得超4個贊
如果您使用的是FOS/user-bundle您可以授予用戶角色,您可以創(chuàng)建自己的或使用預(yù)定義的(Admin 是預(yù)定義的)。 https://symfony.com/doc/2.0.x/bundles/FOSUserBundle/index.html
如果您真的想自己這樣做,您可以擁有一個模型但不同的實例化是您將您的用戶設(shè)置為是否具有角色的布爾值,然后在根據(jù)角色請求時創(chuàng)建一個新對象:
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
* @ORM\Table(name="users")
*/
class User
{
/** @Column(name="`isApiUser`", type="boolean") */
private $isApiUser;
/** @Column(name="`isSiteUser`", type="boolean") */
private $isSiteUser;
/** @Column(name="`isAdminUser`", type="boolean") */
private $isAdminUser;
//....
public function getApiUser(): ?ApiUser
{
return $this->isApiUser() ? new ApiUser($this) : null;
}
public function getSiteUser(): SiteUser
{
return $this->isSiteUser() ? new SiteUser($this) : null;
}
public function getAdminUser(): ApiUser
{
return $this->isAdminUser() ? new AdminUser($this);
}
//....
}
然后讓每個用戶對象執(zhí)行以下操作:
class ApiUser
{
private $userName;
public function __construct(User $user)
{
$this->userName = $user->getUserName();
// Continue for whatever logic you want
}
}
對每個用戶類型執(zhí)行相同的操作。
然后當(dāng)你想在你的控制器(或任何地方)中使用它時
class SomeController extends Controller
{
public function indexAction()
{
$repository = $this->getDoctrine()->getRepository(User::class);
$user = $product = $repository->findOneBy([
'userName' => 'UserName',
'isApiUser' => true
]);
$apiUser = $this->getApiUser();
}
}
- 2 回答
- 0 關(guān)注
- 183 瀏覽
添加回答
舉報