В прошлой статье мы сделали простой блог на Symfony за 15 минут. Отлично! Теперь пойдём дальше — добавим авторизацию и админку. Без паники, без ручной настройки — только генераторы и здравый смысл.
Выполни в терминале:
php bin/console make:user
Ответь на вопросы:
UseryesemailyesГотово! Symfony создал src/Entity/User.php и добавил нужные интерфейсы.
php bin/console make:migration
php bin/console doctrine:migrations:migrate
Теперь у тебя есть таблица пользователей.
php bin/console make:auth
Выбери:
1 — Login form authenticatorAppAuthenticatoryesСоздастся контроллер 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 — не страшный монстр. Это взрослый, но дружелюбный инструмент. И ты уже им управляешь 😉
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!