Don't force displayname if backend already provides one
`\OC_User::loginWithApache` is used in combination with backend mechanisms like our SSO / SAML integration. Those can optionally already provide a displayname using other means. For example by mapping SAML attributes. The current approach makes it however impossible for backends using `\OCP\Authentication\IApacheBackend` to set a displayname on their own. Because the display name will simply be overwritten with the loginname. Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
This commit is contained in:
parent
f25c89461c
commit
92c74d2f9a
|
@ -187,7 +187,18 @@ class OC_User {
|
||||||
if ($uid) {
|
if ($uid) {
|
||||||
if (self::getUser() !== $uid) {
|
if (self::getUser() !== $uid) {
|
||||||
self::setUserId($uid);
|
self::setUserId($uid);
|
||||||
self::setDisplayName($uid);
|
$setUidAsDisplayName = true;
|
||||||
|
if($backend instanceof \OCP\UserInterface
|
||||||
|
&& $backend->implementsActions(OC_User_Backend::GET_DISPLAYNAME)) {
|
||||||
|
|
||||||
|
$backendDisplayName = $backend->getDisplayName($uid);
|
||||||
|
if(is_string($backendDisplayName) && trim($backendDisplayName) !== '') {
|
||||||
|
$setUidAsDisplayName = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($setUidAsDisplayName) {
|
||||||
|
self::setDisplayName($uid);
|
||||||
|
}
|
||||||
self::getUserSession()->setLoginName($uid);
|
self::getUserSession()->setLoginName($uid);
|
||||||
$request = OC::$server->getRequest();
|
$request = OC::$server->getRequest();
|
||||||
self::getUserSession()->createSessionToken($request, $uid, $uid);
|
self::getUserSession()->createSessionToken($request, $uid, $uid);
|
||||||
|
|
Loading…
Reference in New Issue