summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-08-26 18:50:52 +0200
committerGitHub <noreply@github.com>2017-08-26 18:50:52 +0200
commit0b652648cc698d3b5c2979ccb7f1d1544057294d (patch)
tree43e49602aee82520f57690bb952510b99466782d /lib
parent2966b503ba9eac0ff1becdeb014cf8ecc0b3660a (diff)
parent2e4cd445564ba4882ab239bbfd82b6aa800436e3 (diff)
downloadnextcloud-server-0b652648cc698d3b5c2979ccb7f1d1544057294d.tar.gz
nextcloud-server-0b652648cc698d3b5c2979ccb7f1d1544057294d.zip
Merge pull request #6177 from nextcloud/properly-add-slo-url
Properly allow \OCP\Authentication\IApacheBackend to specify logout URL
Diffstat (limited to 'lib')
-rw-r--r--lib/private/NavigationManager.php24
-rw-r--r--lib/private/legacy/user.php15
-rw-r--r--lib/public/Authentication/IApacheBackend.php13
3 files changed, 25 insertions, 27 deletions
diff --git a/lib/private/NavigationManager.php b/lib/private/NavigationManager.php
index b854b44b340..5e484bea737 100644
--- a/lib/private/NavigationManager.php
+++ b/lib/private/NavigationManager.php
@@ -187,18 +187,18 @@ class NavigationManager implements INavigationManager {
'icon' => $this->urlGenerator->imagePath('settings', 'admin.svg'),
]);
- // Logout
- $this->add([
- 'type' => 'settings',
- 'id' => 'logout',
- 'order' => 99999,
- 'href' => $this->urlGenerator->linkToRouteAbsolute(
- 'core.login.logout',
- ['requesttoken' => \OCP\Util::callRegister()]
- ),
- 'name' => $l->t('Log out'),
- 'icon' => $this->urlGenerator->imagePath('core', 'actions/logout.svg'),
- ]);
+ $logoutUrl = \OC_User::getLogoutUrl($this->urlGenerator);
+ if($logoutUrl !== '') {
+ // Logout
+ $this->add([
+ 'type' => 'settings',
+ 'id' => 'logout',
+ 'order' => 99999,
+ 'href' => $logoutUrl,
+ 'name' => $l->t('Log out'),
+ 'icon' => $this->urlGenerator->imagePath('core', 'actions/logout.svg'),
+ ]);
+ }
if ($this->isSubadmin()) {
// User management
diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php
index 210e428a2e0..9e0ca4b9fee 100644
--- a/lib/private/legacy/user.php
+++ b/lib/private/legacy/user.php
@@ -281,26 +281,25 @@ class OC_User {
}
/**
- * Supplies an attribute to the logout hyperlink. The default behaviour
- * is to return an href with '?logout=true' appended. However, it can
- * supply any attribute(s) which are valid for <a>.
+ * Returns the current logout URL valid for the currently logged-in user
*
- * @return string with one or more HTML attributes.
+ * @param \OCP\IURLGenerator $urlGenerator
+ * @return string
*/
- public static function getLogoutAttribute() {
+ public static function getLogoutUrl(\OCP\IURLGenerator $urlGenerator) {
$backend = self::findFirstActiveUsedBackend();
if ($backend) {
- return $backend->getLogoutAttribute();
+ return $backend->getLogoutUrl();
}
- $logoutUrl = \OC::$server->getURLGenerator()->linkToRouteAbsolute(
+ $logoutUrl = $urlGenerator->linkToRouteAbsolute(
'core.login.logout',
[
'requesttoken' => \OCP\Util::callRegister(),
]
);
- return 'href="'.$logoutUrl.'"';
+ return $logoutUrl;
}
/**
diff --git a/lib/public/Authentication/IApacheBackend.php b/lib/public/Authentication/IApacheBackend.php
index 908bc5ace3d..7d43d438cbb 100644
--- a/lib/public/Authentication/IApacheBackend.php
+++ b/lib/public/Authentication/IApacheBackend.php
@@ -39,21 +39,20 @@ namespace OCP\Authentication;
interface IApacheBackend {
/**
- * In case the user has been authenticated by Apache true is returned.
+ * In case the user has been authenticated by a module true is returned.
*
- * @return boolean whether Apache reports a user as currently logged in.
+ * @return boolean whether the module reports a user as currently logged in.
* @since 6.0.0
*/
public function isSessionActive();
/**
- * Creates an attribute which is added to the logout hyperlink. It can
- * supply any attribute(s) which are valid for <a>.
+ * Gets the current logout URL
*
- * @return string with one or more HTML attributes.
- * @since 6.0.0
+ * @return string
+ * @since 12.0.3
*/
- public function getLogoutAttribute();
+ public function getLogoutUrl();
/**
* Return the id of the current user