|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|