boyska 5 anni fa
parent
commit
7e1a483db2
1 ha cambiato i file con 53 aggiunte e 0 eliminazioni
  1. 53 0
      plugins/auth_proxy/init.php

+ 53 - 0
plugins/auth_proxy/init.php

@@ -0,0 +1,53 @@
+<?php
+class Auth_Proxy extends Plugin implements IAuthModule {
+
+	private $host;
+	/* @var Auth_Base $base */
+	private $base;
+
+	function about() {
+		return array(1.0,
+			"Trust proxy X-Forwarded-User. May be dangerous, see doc",
+			"boyska",
+			true);
+	}
+
+	/* @var PluginHost $host */
+	function init($host ) {
+		$this->host = $host;
+		$this->base = new Auth_Base();
+
+		$host->add_hook($host::HOOK_AUTH_USER, $this);
+	}
+
+	/**
+	 * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+	 */
+	function authenticate($login, $password) {
+		// TODO: check source ip!
+		if(!array_key_exists("HTTP_X_FORWARDED_USER", $_SERVER)) {
+			return false;
+		}
+		$try_login = $_SERVER["HTTP_X_FORWARDED_USER"];
+
+		if ($try_login) {
+			$user_id = $this->base->auto_create_user($try_login, $password);
+
+			if ($user_id) {
+				$_SESSION["fake_login"] = $try_login;
+				$_SESSION["fake_password"] = "******";
+				$_SESSION["hide_hello"] = true;
+				$_SESSION["hide_logout"] = true;
+
+				return $user_id;
+			}
+		}
+
+		return false;
+	}
+
+	function api_version() {
+		return 2;
+	}
+
+}