summaryrefslogtreecommitdiff
path: root/src/web/helpers/auth.php
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2024-05-27 00:29:36 -0400
committerFreya Murphy <freya@freyacat.org>2024-05-27 00:29:36 -0400
commitcb9d1193c37b7567dcad5497330169d43ab1e8a2 (patch)
tree41fea58928d5d4cf87306458114f5465b6620711 /src/web/helpers/auth.php
downloadldap_forwardauth-cb9d1193c37b7567dcad5497330169d43ab1e8a2.tar.gz
ldap_forwardauth-cb9d1193c37b7567dcad5497330169d43ab1e8a2.tar.bz2
ldap_forwardauth-cb9d1193c37b7567dcad5497330169d43ab1e8a2.zip
initial
Diffstat (limited to 'src/web/helpers/auth.php')
-rw-r--r--src/web/helpers/auth.php59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/web/helpers/auth.php b/src/web/helpers/auth.php
new file mode 100644
index 0000000..7aa4aff
--- /dev/null
+++ b/src/web/helpers/auth.php
@@ -0,0 +1,59 @@
+<?php /* Copyright (c) 2024 Freya Murphy */
+
+$keys = array();
+
+function load_key($key) {
+ $file = "/tmp/$key";
+ if (!file_exists($file))
+ return FALSE;
+ $content = explode("\n", file_get_contents($file));
+ return array(
+ 'user' => $content[0],
+ 'time' => $content[1]
+ );
+}
+
+function store_key($key, $user) {
+ $file = "/tmp/$key";
+ $now = (string)time();
+ $content = "$user\n{$now}";
+ file_put_contents($file, $content, LOCK_EX);
+}
+
+function get_random($n)
+{
+ $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ $randomString = '';
+
+ for ($i = 0; $i < $n; $i++) {
+ $index = rand(0, strlen($characters) - 1);
+ $randomString .= $characters[$index];
+ }
+
+ return $randomString;
+}
+
+function key_auth() {
+ if (!isset($_SESSION['auth'])) {
+ return FALSE;
+ }
+ $key = $_SESSION['auth'];
+ $data = load_key($key);
+ if ($data === FALSE) {
+ return FALSE;
+ }
+ $user = $data['user'];
+ $time = $data['time'];
+ $now = time();
+ if ($time > $now || $now - $time > 60 * 60 * 24) {
+ return FALSE;
+ }
+ store_key($key, $user);
+ return $user;
+}
+
+function key_new($user) {
+ $key = get_random(128);
+ store_key($key, $user);
+ $_SESSION['auth'] = $key;
+}