Категории

Symfony Блог. Уровень 2: Авторизация и Админка

2025-09-07 10:39:04 | создание сайтов
Ккак создать Symfony блог - авторизация и админка

В прошлой статье мы сделали простой блог на Symfony за 15 минут. Отлично! Теперь пойдём дальше — добавим авторизацию и админку. Без паники, без ручной настройки — только генераторы и здравый смысл.

🎯 Что ты получишь в итоге

📌 Шаг 1: Создаём сущность User

Выполни в терминале:

php bin/console make:user

Ответь на вопросы:

Готово! Symfony создал src/Entity/User.php и добавил нужные интерфейсы.

📌 Шаг 2: Создаём миграцию для User

php bin/console make:migration
php bin/console doctrine:migrations:migrate

Теперь у тебя есть таблица пользователей.

📌 Шаг 3: Генерируем систему авторизации

php bin/console make:auth

Выбери:

Создастся контроллер SecurityController, шаблон логина, маршруты и конфиг безопасности.

📌 Шаг 4: Защищаем маршруты постов

Открой config/packages/security.yaml и добавь:

access_control:
    - { path: ^/post, roles: ROLE_USER }

Теперь все маршруты /post/* доступны только авторизованным.

📌 Шаг 5: Создаём первого пользователя

Пока нет формы регистрации — создадим через консоль.

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 и войти.

📌 Шаг 6: Ставим админку EasyAdmin

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 — и ты в админке!

📌 Шаг 7: Защищаем админку

Вернись в security.yaml и добавь:

- { path: ^/admin, roles: ROLE_ADMIN }

Теперь дадим админские права нашему пользователю — открой базу данных (например, через SQLite Browser или консоль) и в поле roles у пользователя вставь:

["ROLE_ADMIN"]

Перелогинься — и у тебя полный доступ к админке!

🧠 Что ты только что освоил?

💡 Что дальше?

🔚 Заключение

Ты сделал блог, добавил авторизацию и админку — и всё это без боли, без include’ов, без “я не понимаю, что происходит”.

Symfony — не страшный монстр. Это взрослый, но дружелюбный инструмент. И ты уже им управляешь 😉

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Внимание: Cтатьи здесь сгенерированны через нейросеть, не правил ошибки, да и не до этого пока. Блог только запустил. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я делал минимум один раз. Сервера стоят, клиенты довольны, дата-центры не горят.

Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA
Кто я | HSH | Контакты и регион