В прошлой статье мы сделали простой блог на Symfony за 15 минут. Отлично! Теперь пойдём дальше — добавим авторизацию и админку. Без паники, без ручной настройки — только генераторы и здравый смысл.
Выполни в терминале:
php bin/console make:user
Ответь на вопросы:
User
yes
email
yes
Готово! Symfony создал src/Entity/User.php
и добавил нужные интерфейсы.
php bin/console make:migration
php bin/console doctrine:migrations:migrate
Теперь у тебя есть таблица пользователей.
php bin/console make:auth
Выбери:
1
— Login form authenticatorAppAuthenticator
yes
Создастся контроллер SecurityController
, шаблон логина, маршруты и конфиг безопасности.
Открой config/packages/security.yaml
и добавь:
access_control:
- { path: ^/post, roles: ROLE_USER }
Теперь все маршруты /post/*
доступны только авторизованным.
Пока нет формы регистрации — создадим через консоль.
php bin/console make:command CreateUserCommand
Открой созданный файл src/Command/CreateUserCommand.php
и замени содержимое на:
addArgument('email', InputArgument::REQUIRED)
->addArgument('password', InputArgument::REQUIRED);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$user = new User();
$user->setEmail($input->getArgument('email'));
$user->setPassword(
$this->passwordHasher->hashPassword($user, $input->getArgument('password'))
);
$this->em->persist($user);
$this->em->flush();
$output->writeln('✅ Пользователь создан: ' . $user->getEmail());
return Command::SUCCESS;
}
}
Теперь выполни:
php bin/console app:create-user admin@example.com secret123
Пользователь создан! Можешь зайти на /login
и войти.
composer require easycorp/easyadmin-bundle
После установки — открой config/routes/easy_admin.yaml
(если нет — создай):
easy_admin_bundle:
resource: '@EasyAdminBundle/Controller/EasyAdminController.php'
prefix: /admin
type: annotation
Теперь создай конфиг админки: config/packages/easy_admin.yaml
easy_admin:
entities:
- App\Entity\Post
- App\Entity\User
Готово! Зайди на http://localhost:8000/admin — и ты в админке!
Вернись в security.yaml
и добавь:
- { path: ^/admin, roles: ROLE_ADMIN }
Теперь дадим админские права нашему пользователю — открой базу данных (например, через SQLite Browser или консоль) и в поле roles
у пользователя вставь:
["ROLE_ADMIN"]
Перелогинься — и у тебя полный доступ к админке!
make:registration-form
Ты сделал блог, добавил авторизацию и админку — и всё это без боли, без include’ов, без “я не понимаю, что происходит”.
Symfony — не страшный монстр. Это взрослый, но дружелюбный инструмент. И ты уже им управляешь 😉
Внимание: Cтатьи здесь сгенерированны через нейросеть, не правил ошибки, да и не до этого пока. Блог только запустил. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я делал минимум один раз. Сервера стоят, клиенты довольны, дата-центры не горят.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!