mirror of
https://github.com/YunoHost-Apps/kanboard_ynh.git
synced 2024-09-03 19:36:17 +02:00
Restore auth plugin in sources
This commit is contained in:
parent
fa8c272ad0
commit
757fdac13a
6 changed files with 153 additions and 2 deletions
2
sources/plugins/.gitignore
vendored
2
sources/plugins/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
||||||
*
|
|
||||||
!/.gitignore
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kanboard\Plugin\ReverseProxyLdap\Auth;
|
||||||
|
|
||||||
|
use Kanboard\Auth\ReverseProxyAuth;
|
||||||
|
use Kanboard\Core\Ldap\Client as LdapClient;
|
||||||
|
use Kanboard\Core\Ldap\ClientException as LdapException;
|
||||||
|
use Kanboard\Core\Ldap\User as LdapUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse-Proxy Ldap Authentication Provider
|
||||||
|
*
|
||||||
|
* @package auth
|
||||||
|
* @author Frederic Guillot
|
||||||
|
*/
|
||||||
|
class ReverseProxyLdapAuth extends ReverseProxyAuth
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get authentication provider name
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return 'ReverseProxyLdap';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Authenticate the user
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function authenticate()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
|
||||||
|
$username = $this->request->getRemoteUser();
|
||||||
|
|
||||||
|
if (! empty($username)) {
|
||||||
|
|
||||||
|
$client = LdapClient::connect();
|
||||||
|
$user = LdapUser::getUser($client, $username);
|
||||||
|
|
||||||
|
if ($user === null) {
|
||||||
|
$this->logger->info('User not found in LDAP server');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->getUsername() === '') {
|
||||||
|
throw new LogicException('Username not found in LDAP profile, check the parameter LDAP_USER_ATTRIBUTE_USERNAME');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->userInfo = $user;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (LdapException $e) {
|
||||||
|
$this->logger->error($e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
21
sources/plugins/ReverseProxyLdap/LICENSE
Normal file
21
sources/plugins/ReverseProxyLdap/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Frédéric Guillot
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
3
sources/plugins/ReverseProxyLdap/Makefile
Normal file
3
sources/plugins/ReverseProxyLdap/Makefile
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
all:
|
||||||
|
@ echo "Build archive for plugin ${plugin} version=${version}"
|
||||||
|
@ git archive HEAD --prefix=${plugin}/ --format=zip -o ${plugin}-${version}.zip
|
40
sources/plugins/ReverseProxyLdap/Plugin.php
Normal file
40
sources/plugins/ReverseProxyLdap/Plugin.php
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kanboard\Plugin\ReverseProxyLdap;
|
||||||
|
|
||||||
|
use Kanboard\Core\Plugin\Base;
|
||||||
|
use Kanboard\Plugin\ReverseProxyLdap\Auth\ReverseProxyLdapAuth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse-Proxy Authentication with LDAP support
|
||||||
|
*
|
||||||
|
* @package reverseproxyldap
|
||||||
|
* @author Frederic Guillot
|
||||||
|
*/
|
||||||
|
class Plugin extends Base
|
||||||
|
{
|
||||||
|
public function initialize()
|
||||||
|
{
|
||||||
|
$this->authenticationManager->register(new ReverseProxyLdapAuth($this->container));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPluginDescription()
|
||||||
|
{
|
||||||
|
return 'Authenticate users with Reverse-Proxy method but populate user information from the LDAP directory';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPluginAuthor()
|
||||||
|
{
|
||||||
|
return 'Frédéric Guillot';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPluginVersion()
|
||||||
|
{
|
||||||
|
return '1.0.0';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPluginHomepage()
|
||||||
|
{
|
||||||
|
return 'https://github.com/kanboard/plugin-reverse-proxy-ldap';
|
||||||
|
}
|
||||||
|
}
|
23
sources/plugins/ReverseProxyLdap/README.md
Normal file
23
sources/plugins/ReverseProxyLdap/README.md
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
Reverse-Proxy Authentication plugin with LDAP support for Kanboard
|
||||||
|
==================================================================
|
||||||
|
|
||||||
|
Authenticate users with Reverse-Proxy method but populate user information from the LDAP directory.
|
||||||
|
|
||||||
|
Author
|
||||||
|
------
|
||||||
|
|
||||||
|
- Frédéric Guillot
|
||||||
|
- License MIT
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
- Create a folder **plugins/ReverseProxyLdap** or uncompress the latest archive in the folder **plugins**
|
||||||
|
- Copy all files under this directory
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- You must have LDAP configured in proxy mode in Kanboard
|
||||||
|
- Reverse-Proxy server configured correctly, the config parameter `REVERSE_PROXY_USER_HEADER` must be defined
|
||||||
|
- You **don't need** to set to `true` those constants: `LDAP_AUTH` and `REVERSE_PROXY_AUTH`
|
Loading…
Reference in a new issue