Учебное руководство
Главы руководства
На этой странице

Вход, русский язык и оформление панелей

Оглавление · Настройки

Панель контента и панель задач используют свои аккаунты и cookie-сессии. Общий значок и нейтральные названия относятся к оформлению интерфейса. Учебная документация сохраняет технические названия Strapi и Hatchet, чтобы можно было найти исходники, понять устройство системы и обновить зависимости.

Почему браузер больше не запрашивает пароль

Раньше Caddy проверял Basic Auth перед панелями. Strapi отправляет запросы с Authorization: Bearer ...; два способа аутентификации конкурировали за один заголовок. Запрос с Bearer не проходил внешнюю Basic-проверку, и браузер снова показывал своё окно входа.

Теперь Caddy маршрутизирует запросы, а приложения выполняют вход и проверку прав. Пароль вводится в форме панели, затем приложение сохраняет сессию по своим правилам. Это также объясняет, почему хеш из старой Caddy-конфигурации нельзя было вводить как пароль: хеш служит для проверки исходного пароля и не является самим паролем.

На текущем стенде данные доступа записаны в .local/production-access.txt, который исключён из Git. В коммиты не входят этот файл, .env, API tokens и приватные SSH-ключи. Учётная запись администратора CMS отличается от read-only Content API token сайта.

Настройка Strapi

src/admin/app.ts задаёт русский язык, логотипы, переводы, отключение учебных подсказок и уведомлений о релизах. Язык профиля пользователь выбирает в настройках своего аккаунта: доступная локаль и выбранная локаль пользователя — разные настройки.

config/admin.ts отключает NPS, продвижение платных возможностей и ссылки на внешнюю документацию. Остальная конфигурация аутентификации и шифрования остаётся серверной.

brand-admin.mjs выполняется после strapi build: меняет название HTML-документа, язык, favicon и суффикс заголовков. Скрипт проверяет ожидаемую структуру сборки и прекращает работу, если upstream изменил места замены. После обновления Strapi нельзя считать старый патч совместимым только потому, что npm install завершился успешно.

Для проверки CMS отдельно от workspace:

npm run check:models --prefix infra/strapi
npm run test:import --prefix infra/strapi
STRAPI_TELEMETRY_DISABLED=true npm run build --prefix infra/strapi

bootstrap панели получает публичный API, который отличается от полного внутреннего StrapiApp. Попытка вызвать отсутствующий app.widgets.register приводила к падению входа; такой вызов удалён. Читайте API для закреплённой версии, а не полагайтесь только на тип внутреннего объекта.

Что означает сообщение про strapi develop

Content-Type Builder меняет схему данных, поэтому для него нужен режим разработки с автоматической перезагрузкой. Content Manager редактирует записи и работает при strapi start. Чтобы публиковать новости и фотографии, включать develop на стенде не нужно. Схемы меняйте локально, сохраняйте в Git и доставляйте новым образом.

Настройка панели задач

infra/hatchet содержит Dockerfile и исходники оформления. Сборка скачивает закреплённый архив upstream, проверяет SHA-256, применяет патч и собирает frontend. Финальный образ использует исходный сервер Hatchet Lite с заменёнными статическими ресурсами. HTTP API, gRPC, cookie-сессии и воркер не переписываются ради оформления.

HATCHET_IMAGE выбирает этот образ в production. CI публикует его вместе с другими образами и записывает выбранный digest в release.env. Лицензии upstream сохраняются; при обновлении проверяются патч, сборка и реальные сценарии входа и просмотра задач.

Обновление сайта теперь не зависит от этой панели: Strapi webhook напрямую инвалидирует кеш Next.js. Учебный воркер Hatchet остаётся примером очереди и повторов, которому событие отправляется отдельно.

Упражнение

Измените одну подпись в русских переводах и соберите CMS. Найдите, почему изменение JSON не появляется в уже собранном образе без rebuild. Затем проверьте отдельно: форму входа, выбранный язык профиля, переход в Content Manager и редактирование записи. Успешная сборка и работоспособная пользовательская сессия — разные проверки.