РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
576 of 1361 menu

Метод getRoles

Метод getRoles объявлен в интерфейсе UserInterface и возвращает массив строк - список ролей, назначенных пользователю. Каждая роль должна начинаться с префикса ROLE_ (например, ROLE_ADMIN, ROLE_USER). Symfony вызывает этот метод при проверке прав доступа через isGranted и в voter-ах. Параметров метод не принимает.

Синтаксис

public function getRoles(): array

Пример

Давайте реализуем сущность User, которая возвращает фиксированный набор ролей:

<?php namespace AppEntity; use SymfonyComponentSecurityCoreUserUserInterface; class User implements UserInterface { private string $email; public function getUserIdentifier(): string { return $this->email; } public function getRoles(): array { return ['ROLE_USER', 'ROLE_ADMIN']; } public function eraseCredentials(): void { } } ?>

Результат выполнения метода:

["ROLE_USER", "ROLE_ADMIN"]

Пример

Давайте добавим роль ROLE_ADMIN, если у пользователя установлен флаг isAdmin:

<?php namespace AppEntity; use SymfonyComponentSecurityCoreUserUserInterface; class User implements UserInterface { private string $email; private bool $isAdmin = false; public function getUserIdentifier(): string { return $this->email; } public function getRoles(): array { $roles = ['ROLE_USER']; if ($this->isAdmin) { $roles[] = 'ROLE_ADMIN'; } return $roles; } public function eraseCredentials(): void { } } ?>

Результат выполнения метода при isAdmin = false:

["ROLE_USER"]

Пример

Давайте проверим роль через isGranted в контроллере:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentSecurityHttpAttributeIsGranted; class UserController extends AbstractController { #[Route('/admin', name: 'user_admin')] #[IsGranted('ROLE_ADMIN')] public function admin(): Response { return new Response('hello'); } } ?>

Результат выполнения кода для пользователя с ролью ROLE_ADMIN:

hello

Смотрите также

  • интерфейс UserInterface,
    который описывает контракт пользователя
  • метод getUserIdentifier,
    который возвращает идентификатор пользователя
  • метод eraseCredentials,
    который очищает чувствительные данные
  • атрибут IsGranted,
    который проверяет доступ к методу контроллера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить