diff options
author | Freya Murphy <freya@freyacat.org> | 2024-05-27 00:29:36 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-05-27 00:29:36 -0400 |
commit | cb9d1193c37b7567dcad5497330169d43ab1e8a2 (patch) | |
tree | 41fea58928d5d4cf87306458114f5465b6620711 /src/web/index.php | |
download | ldap_forwardauth-cb9d1193c37b7567dcad5497330169d43ab1e8a2.tar.gz ldap_forwardauth-cb9d1193c37b7567dcad5497330169d43ab1e8a2.tar.bz2 ldap_forwardauth-cb9d1193c37b7567dcad5497330169d43ab1e8a2.zip |
initial
Diffstat (limited to 'src/web/index.php')
-rw-r--r-- | src/web/index.php | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/web/index.php b/src/web/index.php new file mode 100644 index 0000000..ffd6b06 --- /dev/null +++ b/src/web/index.php @@ -0,0 +1,66 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ + +ini_set('html_errors', '1'); + +$webroot = dirname(__FILE__); +$publicroot = realpath(dirname(__FILE__) . '/../public'); + +// load stuff +require($webroot . '/helpers/ldap.php'); +require($webroot . '/helpers/auth.php'); + +// start session +session_set_cookie_params( + 60 * 60 * 24, // lifetime (seconds), + '/', // path + NULL, // domain, + TRUE, // secure, + TRUE // http only +); +session_start(); + +function page($file, $data = array()) { + extract($data); + $webroot = $GLOBALS['webroot']; + require($webroot . '/views/header.php'); + require($webroot . "/views/$file.php"); + require($webroot . '/views/footer.php'); +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + parse_str(file_get_contents('php://input'), $post); + $res = ldap_auth($post['username'], $post['password']); + $msg = ''; + $title = ''; + if ($res) { + $msg = 'Authenticated. You can now go back to your content'; + $title = 'Success'; + key_new($post['username']); + } else { + $msg = 'Invalid Credentials'; + $title = 'Error'; + } + page('message', array( + 'title' => $title, + 'msg' => $msg + )); +} else { + if (($user = key_auth())) { + http_response_code(200); + header("X-Webauth-User: $user"); + die(); + } + + $host = $_SERVER['HTTP_HOST']; + $env = getenv("HTTP_HOST"); + if ($host != $env) { + // we are being forwarded authed + // redirect + http_response_code(301); + header("Location: https://$env"); + } else { + page('login', array( + 'title' => 'Login' + )); + } +} |