Support

Admin Tools

#43505 Locked out of site but have changed all the settings

Posted in ‘Admin Tools for Joomla!’
This is a public ticket

Everybody will be able to see its contents. Do not include usernames, passwords or any other sensitive information.

Environment Information

Joomla! version
6.2.2
PHP version
8.3
Admin Tools version
n/a

Latest post by nicholas on Thursday, 12 November 2026 11:05 CST

UglyEoin

Hi Nick,

I am locked out of a site with the message:

Login denied! Your account has either been blocked or you have not activated it yet.   Just before that I was trying to uninstall Admin Tools and reinstall it as I have had a hack on the website.   I figure I was blocked by the WAF as I disallowed the ability to do this.   I don't see the user deactivated or blocked in PHP MyAdmin, and I've used the user before (as you can tell because of what I just told you).   Here's a screenshot for sanity testing    sqvMuD.jpg   I have renamed public_html/plugins/system/admintools/services/provider-disable.php   Any other ideas?

nicholas
Akeeba Staff
Manager

Hi, Eoin!

First of all, thank you for making this ticket public. It is an excellent way for me to show how I approach an "impossible" issue like this: reading the code, eliminating possibilities, and taking it from there.

This message you get is the JERROR_NOLOGIN_BLOCKED language string. It is not used in Admin Tools at all. It is, however, used in exactly one place in Joomla: plugins/user/joomla/src/Extension/Joomla.php line 309. It triggers when a user record's block column is set to 1.

Admin Tools does have three features where it can set the user's block to 1 and two where it checks it, but neither applies here:

  • SuperUsersList.php:271 is the closest match. It runs $user->block = 1; $user->save(); on a Super User that was added by some unknown route. The save persists the value into the database. You showed block=0, so that's not it.
  • TrackFailedLogins.php:126 binds block = 1 into $data, then calls $user->bind($data) and $user->save(). This is the auto-block after repeated failed logins, and it also sets an activation token. Your activation column is empty, so that's not it.
  • TemporarySuperUsers.php:191 and DisableObsoleteAdmins.php:375 run a direct database update to set block = 1. You showed block=0, so that's not it.
  • DisableObsoleteAdmins.php:181-187 only compares block in onUserBeforeSave data and doesn't modify it. This only applies to backend saves of Super Users, so that's definitely not it.

Moreover, the two features in Admin Tools which implement onUserLogin (therefore could be even remotely implicated in this) are PWAuthOnWebAuthn and NoFrontendSuperUserLogin. Neither has anything to do with block, though. They return a false result to deny a login, resulting in a completely different error message thrown by Joomla.

That is to say, we have determined Admin Tools is not involved here.

For this issue to happen with this database record we'd need a third-party plugin with an onUserLogin handler which sets block=1 on the shared user object instance before Joomla's user plugin runs. I'm not sure if it would work at all, and if it does it would of course depend on plugin ordering. This is very implausible. A user plugin would instead return a false response to deny login, but you'd get a generic login failure instead of the blocked message.

By Occam's razor, this leaves us with exactly one explanation that's simple and explains your result: you're probably looking at the wrong database or database record. Can you do a quick sanity check, reading the site's configuration.php and checking if you're looking at the correct database?

If you're looking at the correct database, read the prefix in the site's configuration.php and check that you're looking at the right table.

If you're really looking at the correct database and table, the only thing left to do is look into the #__extensions table and disable all user plugins except the joomla one.

If that still fails, you can now positively say that you smell a rat; restore from the last known good backup.

Nicholas K. Dionysopoulos

Lead Developer and Director

🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!

UglyEoin

It's not the wrong database I have double checked that, there's only one database for that site in that cPanel.  

But here is the odd behaviour that I am seeing.  I update a users password - we had a hack so I'm resetting all passwords.

I log in, that's fine.  I am immediately blocked as soon as I do anything else.

Can you think of anything that would cause that?  I know you mentioned:

  • SuperUsersList.php:271 is the closest match. It runs $user->block = 1; $user->save(); on a Super User that was added by some unknown route. The save persists the value into the database. You showed block=0, so that's not it.

Initially I changed the password in admin, but as soon as I was locked out I changed it using PHP MyAdmin.

nicholas
Akeeba Staff
Manager

When you get blocked, what is the value of the block column of the user record you were logged in as at the time?

Nicholas K. Dionysopoulos

Lead Developer and Director

🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!

Support Information

Working hours: We are open Monday to Friday, 9am to 7pm Cyprus timezone (EET / EEST). Support is provided by the same developers writing the software, all of which live in Europe. You can still file tickets outside of our working hours, but we cannot respond to them until we're back at the office.

Support policy: We would like to kindly inform you that when using our support you have already agreed to the Support Policy which is part of our Terms of Service. Thank you for your understanding and for helping us help you!