Недавно я столкнулся с неприятной ситуацией: после того как я удалил несколько статей на своем сайте под управлением Joomla, меня неожиданно выкинуло из административной панели. При попытке войти снова я увидел сообщение: "Вам не разрешен доступ к панели управления". Сначала я запаниковал, но потом решил разобраться, в чем дело. Оказалось, что проблема крылась в пропавшей записи root.1
в таблице sukko_assets
. Вот как я это обнаружил и исправил.
Что произошло
Все началось после того, как я удалил несколько статей через админку на сайте https://sukkograd.ru
. Я работал с объявлениями об аренде, которые публикуются через Telegram-бота, и решил убрать несколько старых записей. После этого меня выкинуло из системы, и при попытке войти в /administrator
я получил сообщение об отсутствии доступа. Это было странно, ведь я — супер-администратор с полными правами.
Первые шаги: анализ возможных причин
Я начал думать, что могло пойти не так. Вот какие варианты я рассмотрел:
- Проблема с правами в
sukko_assets
:Я знал, что Joomla использует таблицу
sukko_assets
для управления правами доступа. Возможно, удаление статей как-то повлияло на эту таблицу. - Сбой в группе пользователей:
Может быть, мои права супер-администратора (группа Super Users, ID 8) были случайно изменены?
- Сбой сессии:
Иногда Joomla "глючит" из-за проблем с сессиями, особенно после таких действий.
- Плагины:
У меня нет специфических плагинов вроде 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
— возможно, корень зла именно там!
Если что-то подобное повторится, я теперь знаю, куда смотреть. Надеюсь, мой опыт поможет и другим!