diff --git a/scripts/install b/scripts/install index c80a941..9be9341 100755 --- a/scripts/install +++ b/scripts/install @@ -155,12 +155,13 @@ fi #================================================= # Add dynamic logout URL to the config +url_base64="$(echo -n "https://$domain$path" | base64)" exec_occ config:system:get logout_url >/dev/null 2>&1 \ || echo " //-YunoHost- // set logout_url according to main domain \$main_domain = exec('cat /etc/yunohost/current_host'); -\$CONFIG['logout_url'] = 'https://'.\$main_domain.'/yunohost/sso/?action=logout'; +\$CONFIG['logout_url'] = 'https://'.\$main_domain.'/yunohost/sso/?action=logout&r=${url_base64}'; //-YunoHost- " >> "$install_dir/config/config.php" diff --git a/scripts/upgrade b/scripts/upgrade index a7f4515..9d11edf 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -260,14 +260,19 @@ then #================================================= # Add dynamic logout URL to the config - exec_occ config:system:get logout_url >/dev/null 2>&1 \ - || echo " + url_base64="$(echo -n "https://$domain$path" | base64)" + old_logout_url="https://$(cat /etc/yunohost/current_host)/yunohost/sso/?action=logout" + current_logout_url="$(exec_occ config:system:get logout_url 2> /dev/null)" + if [[ "$current_logout_url" == "${old_logout_url}" ]] || [[ "$current_logout_url" == "" ]] + then + echo " //-YunoHost- // set logout_url according to main domain - \$main_domain = exec('cat /etc/yunohost/current_host'); - \$CONFIG['logout_url'] = 'https://'.\$main_domain.'/yunohost/sso/?action=logout'; + \$main_domain = file_get_contents('/etc/yunohost/current_host'); + \$CONFIG['logout_url'] = 'https://'.\$main_domain.'/yunohost/sso/?action=logout&r=${url_base64}'; //-YunoHost- - " >> "$install_dir/config/config.php" + " >> "$install_dir/config/config.php" + fi #================================================= # CHANGE HOSTNAME FOR ACTIVITY NOTIFICATIONS diff --git a/sources/patches_last_version/app-00-add-logout_url-conf.patch b/sources/patches_last_version/app-00-add-logout_url-conf.patch index 2c81a65..03f7fc2 100644 --- a/sources/patches_last_version/app-00-add-logout_url-conf.patch +++ b/sources/patches_last_version/app-00-add-logout_url-conf.patch @@ -1,20 +1,31 @@ diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php -index 13aef8f67a..55d8dbf9d1 100644 +index aa6617c..eb47b80 100644 --- a/core/Controller/LoginController.php +++ b/core/Controller/LoginController.php -@@ -97,11 +97,12 @@ class LoginController extends Controller { +@@ -111,16 +111,20 @@ class LoginController extends Controller { + #[UseSession] + public function logout() { + $loginToken = $this->request->getCookie('nc_token'); ++ $uuidUser = $this->userSession->getUser()->getUID(); ++ $isLdapUser = $this->config->getUserValue($uuidUser, 'user_ldap', 'uid'); + if (!is_null($loginToken)) { +- $this->config->deleteUserValue($this->userSession->getUser()->getUID(), 'login_token', $loginToken); ++ $this->config->deleteUserValue($uuidUser, 'login_token', $loginToken); } $this->userSession->logout(); - +- - $response = new RedirectResponse($this->urlGenerator->linkToRouteAbsolute( - 'core.login.showLoginForm', - ['clear' => true] // this param the code in login.js may be removed when the "Clear-Site-Data" is working in the browsers -+ $redirectUrl = $this->config->getSystemValue('logout_url', -+ $this->urlGenerator->linkToRouteAbsolute( +- )); +- ++ $redirectUrl = $this->urlGenerator->linkToRouteAbsolute( + 'core.login.showLoginForm', + ['clear' => true] // this param the code in login.js may be removed when the "Clear-Site-Data" is working in the browsers) - )); -- ++ ); ++ if (!is_null($isLdapUser)) { ++ $redirectUrl = $this->config->getSystemValue('logout_url', $redirectUrl); ++ } + $response = new RedirectResponse($redirectUrl); $this->session->set('clearingExecutionContexts', '1'); $this->session->close();