Недавно я столкнулся с неприятной ситуацией: после того как я удалил несколько статей на своем сайте под управлением Joomla, меня неожиданно выкинуло из административной панели. При попытке войти снова я увидел сообщение: "Вам не разрешен доступ к панели управления". Сначала я запаниковал, но потом решил разобраться, в чем дело. Оказалось, что проблема крылась в пропавшей записи root.1 в таблице sukko_assets. Вот как я это обнаружил и исправил.

Что произошло

Все началось после того, как я удалил несколько статей через админку на сайте https://sukkograd.ru. Я работал с объявлениями об аренде, которые публикуются через Telegram-бота, и решил убрать несколько старых записей. После этого меня выкинуло из системы, и при попытке войти в /administrator я получил сообщение об отсутствии доступа. Это было странно, ведь я — супер-администратор с полными правами.

Первые шаги: анализ возможных причин

Я начал думать, что могло пойти не так. Вот какие варианты я рассмотрел:

  1. Проблема с правами в sukko_assets:

    Я знал, что Joomla использует таблицу sukko_assets для управления правами доступа. Возможно, удаление статей как-то повлияло на эту таблицу.

  2. Сбой в группе пользователей:

    Может быть, мои права супер-администратора (группа Super Users, ID 8) были случайно изменены?

  3. Сбой сессии:

    Иногда Joomla "глючит" из-за проблем с сессиями, особенно после таких действий.

  4. Плагины:

    У меня нет специфических плагинов вроде Admin Tools, но я подумал, что что-то могло заблокировать доступ.

Как я нашел проблему

Я решил начать с базы данных, так как подозревал, что удаление статей могло повредить что-то важное. Вот что я сделал:

Шаг 1: Проверка пользователя

Сначала я зашел в phpMyAdmin и открыл базу данных сайта. В таблице sukko_users нашел свою учетную запись по имени sukkogradoff. Поле block было равно 0, значит, я не заблокирован. Затем в sukko_user_usergroup_map проверил свою группу: мой user_id (допустим, 7905837659) был связан с group_id = 8. Права супер-администратора на месте, так что проблема не в этом.

Шаг 2: Проверка таблицы sukko_assets

Дальше я перешел к таблице sukko_assets. Я знал, что она управляет правами доступа, и решил проверить корневой ассет — запись с name = 'root.1' и id = 1. Выполнил запрос:

SELECT * FROM sukko_assets WHERE name = 'root.1';

И тут меня ждал сюрприз — запись отсутствовала! Это был ключевой момент. Без root.1 Joomla не могла корректно определить базовые права доступа, и я потерял доступ к админке.

Шаг 3: Подтверждение гипотезы

Я проверил записи, связанные с удаленными статьями (например, com_content.article.213), но их отсутствие не должно было повлиять на вход. Проблема явно была в пропавшем корневом ассете. Видимо, при удалении статей через админку что-то пошло не так, и запись root.1 была случайно удалена.

Как я исправил проблему

Обнаружив причину, я решил восстановить запись root.1. В phpMyAdmin я выполнил следующий SQL-запрос:

INSERT INTO sukko_assets (id, parent_id, lft, rgt, level, name, title, rules)
VALUES (1, 0, 0, 0, 0, 'root.1', 'Root Asset', '{"core.login.site":{"6":1,"2":1},"core.login.admin":{"6":1},"core.admin":{"8":1},"core.manage":{"7":1},"core.create":{"6":1,"3":1},"core.delete":{"6":1},"core.edit":{"6":1,"4":1},"core.edit.state":{"6":1,"5":1},"core.edit.own":{"6":1,"3":1}}');

Этот запрос добавил корневой ассет с типичными правами доступа, которые используются в Joomla по умолчанию. После этого я очистил сессии, чтобы сбросить старые данные:

TRUNCATE TABLE sukko_session;

Затем я вернулся на страницу входа https://sukkograd.ru/аdministratоr, ввел свои логин и пароль — и вуаля, доступ восстановлен!

Дополнительные проверки

Чтобы убедиться, что всё работает, я зашел в раздел Пользователи → Группы и Глобальные настройки → Разрешения. Права для группы Super Users были в порядке. Я также проверил логи ошибок в файле error_log, но там не было ничего необычного, что подтвердило: проблема была только в sukko_assets.

Почему это произошло?

Я думаю, что удаление статей через админку вызвало сбой в Joomla, который привел к удалению корневого ассета. Наш Telegram-бот, который публикует статьи, тут ни при чем — он аккуратно работает с sukko_content, sukko_workflow_associations и sukko_assets. Скорее всего, это была случайная ошибка в интерфейсе Joomla, которая повредила структуру базы данных.

Вывод

В итоге я нашел проблему в пропавшей записи root.1 в таблице sukko_assets. Это был интересный опыт, который научил меня внимательнее проверять базу данных после массовых изменений на сайте. Если у вас возникнет похожая ситуация, начните с проверки sukko_assets — возможно, корень зла именно там!

Если что-то подобное повторится, я теперь знаю, куда смотреть. Надеюсь, мой опыт поможет и другим!