diff options
author | Freya Murphy <freya@freyacat.org> | 2024-11-26 12:41:10 -0500 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-11-26 12:41:10 -0500 |
commit | 8041ff0cec445f20ff6e61e9aafa0dfe057e67b5 (patch) | |
tree | ddd2d9ee9164d1f63640ce5fac18eff8d7ed83d7 /src/web/router.php | |
parent | fix 404 (diff) | |
download | ldap_forwardauth-8041ff0cec445f20ff6e61e9aafa0dfe057e67b5.tar.gz ldap_forwardauth-8041ff0cec445f20ff6e61e9aafa0dfe057e67b5.tar.bz2 ldap_forwardauth-8041ff0cec445f20ff6e61e9aafa0dfe057e67b5.zip |
fix redirect
Diffstat (limited to '')
-rw-r--r-- | src/web/router.php | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/web/router.php b/src/web/router.php index 56f4156..55f17c3 100644 --- a/src/web/router.php +++ b/src/web/router.php @@ -82,6 +82,15 @@ class Router { return $values; } + private function get_redirect(): string { + $redirect = $_GET['redirect'] ?? $this->get_post_info('redirect') ?? ''; + if (is_array($redirect)) { + $redirect = $redirect['redirect']; + } + $redirect = maybe_base64_decode($redirect); + return $redirect; + } + private function handle_login(): void { $info = $this->get_post_info('username', 'password'); if ($info == NULL) { @@ -90,12 +99,7 @@ class Router { return; } - $redirect = $this->get_post_info('redirect') ?? ''; - if (is_array($redirect)) { - $redirect = $redirect['redirect']; - $redirect = base64_decode($redirect); - } - + $redirect = $this->get_redirect(); $user = $this->ldap->search($info['username']); if ($user == NULL || !count($user)) { http_response_code(400); @@ -155,7 +159,8 @@ class Router { if ($session == NULL) { // redirect them to login http_response_code(303); - header("Location: http://{$this->domain}/login"); + $redirect = maybe_base64_encode($this->get_redirect()); + header("Location: http://{$this->domain}/login?redirect={$redirect}"); } else { // update session expiry $session->reset_expiry(); |