summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-12-06 13:20:18 +0300
committerAndrew Dolgov <[email protected]>2021-12-06 13:20:18 +0300
commit53061d150814cf5939d1d4dc165d8270ca764109 (patch)
tree5fd1b2c095dd54291d45cc9cb48037f021165c44 /classes
parent57b0413a3a8b8f73276382d51cf560c09ac6fbc6 (diff)
* add HOOK_POST_LOGOUT
* auth_remote: add config option AUTH_REMOTE_POST_LOGOUT_URL
Diffstat (limited to 'classes')
-rwxr-xr-xclasses/handler/public.php19
-rw-r--r--classes/plugin.php9
-rwxr-xr-xclasses/pluginhost.php3
3 files changed, 30 insertions, 1 deletions
diff --git a/classes/handler/public.php b/classes/handler/public.php
index d0776f03c..3fef4c2b9 100755
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -296,8 +296,25 @@ class Handler_Public extends Handler {
function logout(): void {
if (validate_csrf($_POST["csrf_token"])) {
+
+ $login = $_SESSION["name"];
+ $user_id = $_SESSION["uid"];
+
UserHelper::logout();
- header("Location: index.php");
+
+ $redirect_url = "";
+
+ PluginHost::getInstance()->run_hooks_callback(PluginHost::HOOK_POST_LOGOUT,
+ function ($result) use (&$redirect_url) {
+ if (!empty($result[0]))
+ $redirect_url = UrlHelper::validate($result[0]);
+ },
+ $login, $user_id);
+
+ if (!$redirect_url)
+ $redirect_url = get_self_url_prefix() . "/index.php";
+
+ header("Location: " . $redirect_url);
} else {
header("Content-Type: text/json");
print Errors::to_json(Errors::E_UNAUTHORIZED);
diff --git a/classes/plugin.php b/classes/plugin.php
index 0a7d8fa95..be8376925 100644
--- a/classes/plugin.php
+++ b/classes/plugin.php
@@ -670,4 +670,13 @@ abstract class Plugin {
return false;
}
+
+ /** Invoked after user logout, may override built-in behavior (redirect back to login page)
+ * @param string $login
+ * @param int $user_id
+ * @return array<mixed> - [0] - if set, url to redirect to
+ */
+ function hook_post_logout($login, $user_id) {
+ return [""];
+ }
}
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index f89cc5c32..a3a389def 100755
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -195,6 +195,9 @@ class PluginHost {
/** @see Plugin::hook_pre_subscribe() */
const HOOK_PRE_SUBSCRIBE = "hook_pre_subscribe";
+ /** @see Plugin::hook_post_logout() */
+ const HOOK_POST_LOGOUT = "hook_post_logout";
+
const KIND_ALL = 1;
const KIND_SYSTEM = 2;
const KIND_USER = 3;