Skip to content

Commit

Permalink
fix: always use display name from correct backend
Browse files Browse the repository at this point in the history
Overwrite the display name after the account is initialized
when using an instacne of IGetDisplayNameBackend.

Before when using a variation of user_oidc and registering
a Backend.php implementing IGetDisplayNameBackend
the personal setting page shows 'uid'.

The UserManager/AccountManager seems not to use consistently
the correct backend.

The correct backend is used in this sequence:

server/lib/private/TemplateLayout.php

          $userDisplayName = \OC_User::getDisplayName();
          $this->assign(user_displayname, $userDisplayName);

In the settings page, it definitely not calls the registered backend,
but seems to fall back to default Backend and shows (usually) uid
or a value from the standard account property table.

Signed-off-by: Max <[email protected]>
  • Loading branch information
max-nextcloud committed Aug 14, 2023
1 parent 5fcb19c commit b72e979
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/private/Accounts/AccountManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
use OCP\Mail\IMailer;
use OCP\Security\ICrypto;
use OCP\Security\VerificationToken\IVerificationToken;
use OCP\User\Backend\IGetDisplayNameBackend;
use OCP\Util;
use Psr\Log\LoggerInterface;
use function array_flip;
Expand Down Expand Up @@ -744,6 +745,10 @@ public function getAccount(IUser $user): IAccount {
return $cached;
}
$account = $this->parseAccountData($user, $this->getUser($user));
if ($user->getBackend() instanceof IGetDisplayNameBackend) {
$propery = $account->getProperty(self::PROPERTY_DISPLAYNAME);
$account->setProperty(self::PROPERTY_DISPLAYNAME, $user->getDisplayName(), $propery->getScope(), $property->getVerified());

Check failure on line 750 in lib/private/Accounts/AccountManager.php

View workflow job for this annotation

GitHub Actions / static-code-analysis

UndefinedVariable

lib/private/Accounts/AccountManager.php:750:101: UndefinedVariable: Cannot find referenced variable $property (see https://psalm.dev/024)

Check failure

Code scanning / Psalm

UndefinedVariable Error

Cannot find referenced variable $property
}
$this->internalCache->set($user->getUID(), $account);
return $account;
}
Expand Down

0 comments on commit b72e979

Please sign in to comment.