Можно ли в symfony проверить есть ли доступ у определённой роли к url адресу?

Да, в Symfony вы можете проверить доступ определенной роли к URL-адресу.

Symfony предоставляет встроенную систему доступа, называемую Security Bundle, которая предлагает мощный механизм для управления доступом в вашем приложении. Она основана на ролях (Roles) и ACE (Access Control Expressions), позволяя вам определить, какие роли могут получить доступ к определенным частям приложения или маршрутам.

Чтобы проверить доступ определенной роли к URL-адресу, вам нужно сделать следующее:

1. Определите роли в вашей системе. Роли могут быть определены в файле безопасности (security.yaml) в вашем Symfony-приложении. Например, вы можете создать две роли: ROLE_ADMIN и ROLE_USER.

2. В файле безопасности (security.yaml) вы также можете настроить подробности доступа для каждой роли. Например, вы можете запретить доступ к определенным URL-адресам для некоторых ролей или наоборот, разрешить доступ только для определенных ролей. Например:

security:
    # ...
    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/user, roles: ROLE_USER }

3. В вашем контроллере или шаблоне (Twig), вы можете использовать функцию is_granted() для проверки доступа определенной роли. Например, чтобы проверить, имеет ли текущий пользователь с ролью ROLE_ADMIN доступ к определенному URL-адресу, вы можете сделать следующее:

use SymfonyComponentSecurityCoreExceptionAccessDeniedException;

// ...

if (!$this->isGranted('ROLE_ADMIN')) {
    throw new AccessDeniedException('У вас нет доступа.');
}

Этот код вызовет исключение AccessDeniedException, если текущий пользователь не имеет роли ROLE_ADMIN и не будет иметь доступ к URL-адресу.

Также, вы можете использовать аннотации @IsGranted('ROLE_ADMIN') для проверки доступа к определенным методам контроллера. Например:

use SymfonyComponentSecurityCoreExceptionAccessDeniedException;
use SensioBundleFrameworkExtraBundleConfigurationIsGranted;

class AdminController extends AbstractController
{
    /**
     * @Route("/admin", name="admin")
     * @IsGranted("ROLE_ADMIN")
     */
    public function index()
    {
        // ...
    }
}

В этом примере, если текущий пользователь не имеет роли ROLE_ADMIN, Symfony автоматически вызовет исключение AccessDeniedException и предотвратит доступ к методу index().

Таким образом, в Symfony вы можете легко проверять доступ определенной роли к URL-адресу с помощью Security Bundle и функционала доступа, предоставленного этим бандлом.