nextcloud / user_sql

🔒 App for authenticating Nextcloud users using SQL
GNU Affero General Public License v3.0
66 stars 33 forks source link

Memory cache returns users as ARRAY, not as Object #168

Open rotdrop opened 2 years ago

rotdrop commented 2 years ago

Hi,

at least when using the REDIS cache as distributed cache the cached users are first encoded to JSON, and decoded from JSON to an array when read back. This results in error messages like:

  | Error: Attempt  to read property "uid" on array at  /var/www/orgacloud/nextcloud/apps/user_sql/lib/Backend/UserBackend.php#432  /var/www/orgacloud/nextcloud/lib/private/Log/ErrorHandler.php:95
-- | --

I have also added some diagnostic log messages in the UserBackend.php, and indeed

$this->logger->info('USER ' . print_r($user, true)); 
...
USER Array ( [uid] => 

A workaround is to disable the cache. However, this should be fixed. The affected function is getUser(). There around line 457 the cache value is just used as is, but it is an array created by json_decode(..., true) and not an object.