Итак, я хочу создать что-то вроде @IsGranted
. Я использовал @IsGranted
в своем приложении для контроля доступа, например, чтобы предотвратить доступ простого пользователя к странице администратора.
В моей сущности у меня есть логическое поле с именем is_Active
- если это правда (1), то пользователь может использовать свою учетную запись
- , если ложь (0), тогда он будет перенаправлен на страницу с ошибкой!
В этом случае я я не собираюсь тестировать поле Roles
пользователя, но я собираюсь протестировать поле is_Active
, поэтому я не могу использовать @IsGranted
.
I создал страницу ветки ошибки active.html.twig
, и я помещаю ее в папку шаблонов, и я обнаружил, что ПРИНУДИТЕЛЬНО добавить эти 2 строки в каждую функцию контроллера.
if ($this->getUser()->getIsActive()==false) {
return $this->render('active.html.twig');}
Вот пример :
/**
* @IsGranted("ROLE_ADMIN")
* @Route("/", name="user_index", methods={"GET"})
*/
public function index(UserRepository $userRepository): Response
{
if ($this->getUser()->getIsActive()==false) {
return $this->render('active.html.twig');}
return $this->render('user/index.html.twig', [
'users' => $userRepository->findAll(),
]);
}
Это очень тяжело и плохо - добавлять этот оператор if для каждой функции (у меня +30 функций в приложении)
Может быть, я смогу создать что-то похожее на @IsGranted
и использовать его вместо аннотации каждой функции?