aboutsummaryrefslogtreecommitdiff
path: root/pkgs/icingaweb2/sproxy.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/icingaweb2/sproxy.patch')
-rw-r--r--pkgs/icingaweb2/sproxy.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/pkgs/icingaweb2/sproxy.patch b/pkgs/icingaweb2/sproxy.patch
new file mode 100644
index 0000000..d1b074d
--- /dev/null
+++ b/pkgs/icingaweb2/sproxy.patch
@@ -0,0 +1,78 @@
+commit 04eb7cffa84387070f48f5649a1d5a5a7843fc9c
+Author: Igor Pashev <pashev.igor@gmail.com>
+Date: Fri Jan 1 11:05:48 2016 +0300
+
+ Added Sproxy backend
+
+ See https://github.com/zalora/sproxy
+
+diff --git a/library/Icinga/Authentication/User/SproxyBackend.php b/library/Icinga/Authentication/User/SproxyBackend.php
+new file mode 100644
+index 0000000..4b15b0e
+--- /dev/null
++++ b/library/Icinga/Authentication/User/SproxyBackend.php
+@@ -0,0 +1,40 @@
++<?php
++/* 2016 Zalora South East Asia Pte. Ltd | GPLv2+ */
++
++namespace Icinga\Authentication\User;
++
++use Icinga\Data\ConfigObject;
++use Icinga\User;
++
++/**
++ * Login with Sproxy authentication mechanism:
++ * https://github.com/zalora/sproxy
++ */
++class SproxyBackend extends ExternalBackend
++{
++ /**
++ * {@inheritdoc}
++ */
++ public function authenticate(User $user, $password = null)
++ {
++ if (! empty($_SERVER['HTTP_FROM'])) {
++ $email = $_SERVER['HTTP_FROM'];
++ $user->setUsername($email);
++ $user->setEmail($email);
++ $user->setExternalUserInformation($email, 'HTTP_FROM');
++
++ if (! empty($_SERVER['HTTP_X_GIVEN_NAME'])) {
++ $user->setFirstname($_SERVER['HTTP_X_GIVEN_NAME']);
++ }
++ if (! empty($_SERVER['HTTP_X_GROUPS'])) {
++ $user->setGroups(explode(',', $_SERVER['HTTP_X_GROUPS']));
++ }
++ if (! empty($_SERVER['HTTP_X_FAMILY_NAME'])) {
++ $user->setLastname($_SERVER['HTTP_X_FAMILY_NAME']);
++ }
++
++ return true;
++ }
++ return false;
++ }
++}
+diff --git a/library/Icinga/Authentication/User/UserBackend.php b/library/Icinga/Authentication/User/UserBackend.php
+index 3b8e210..d264365 100644
+--- a/library/Icinga/Authentication/User/UserBackend.php
++++ b/library/Icinga/Authentication/User/UserBackend.php
+@@ -22,6 +22,7 @@ class UserBackend implements ConfigAwareFactory
+ * @var array
+ */
+ protected static $defaultBackends = array(
++ 'sproxy',
+ 'external',
+ 'db',
+ 'ldap',
+@@ -176,6 +177,11 @@ class UserBackend implements ConfigAwareFactory
+ $backend->setName($name);
+ return $backend;
+ }
++ if ($backendType === 'sproxy') {
++ $backend = new SproxyBackend($backendConfig);
++ $backend->setName($name);
++ return $backend;
++ }
+ if (in_array($backendType, static::$defaultBackends)) {
+ // The default backend check is the first one because of performance reasons:
+ // Do not attempt to load a custom user backend unless it's actually required