Version Notes
TLS not tested yet
Only test openLDAP server but should work fine with other LDAP server (see parameters)
Download this release
Release Info
Developer | DiVA-Cloud |
Extension | DivaCloud_Admin_LDAP_Auth |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- app/code/local/DivaCloud/Admin/Block/System/Config/Extension.php +26 -0
- app/code/local/DivaCloud/Admin/Block/System/Config/Info.php +26 -0
- app/code/local/DivaCloud/Admin/Helper/Data.php +19 -0
- app/code/local/DivaCloud/Admin/Model/Session.php +202 -0
- app/code/local/DivaCloud/Admin/etc/adminhtml.xml +27 -0
- app/code/local/DivaCloud/Admin/etc/config.xml +83 -0
- app/code/local/DivaCloud/Admin/etc/system.xml +166 -0
- app/etc/modules/DivaCloud_Admin.xml +9 -0
- package.xml +25 -0
app/code/local/DivaCloud/Admin/Block/System/Config/Extension.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class DivaCloud_Admin_Block_System_Config_Extension
|
3 |
+
extends Mage_Adminhtml_Block_Abstract
|
4 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
5 |
+
{
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Render fieldset html
|
9 |
+
*
|
10 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
11 |
+
* @return string
|
12 |
+
*/
|
13 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
14 |
+
{
|
15 |
+
$html = '<div style="background:#EAF0EE;border:1px solid #CCCCCC;margin-bottom:10px;padding:10px 5px 5px 10px;">
|
16 |
+
<h4>About</h4>
|
17 |
+
<p>Extension to login admin users from Ldap
|
18 |
+
</p>
|
19 |
+
<br />
|
20 |
+
<h4>Configuration</h4>
|
21 |
+
<p>Go to: System >> Configuration >> Admin</p>
|
22 |
+
</div>';
|
23 |
+
|
24 |
+
return $html;
|
25 |
+
}
|
26 |
+
}
|
app/code/local/DivaCloud/Admin/Block/System/Config/Info.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class DivaCloud_Admin_Block_System_Config_Info
|
3 |
+
extends Mage_Adminhtml_Block_Abstract
|
4 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
5 |
+
{
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Render fieldset html
|
9 |
+
*
|
10 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
11 |
+
* @return string
|
12 |
+
*/
|
13 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
14 |
+
{
|
15 |
+
$html = '<div style="background:url(\'https://www.diva-cloud.com/sites/all/themes/divatheme/images/DIVA_MANAGER.png\') no-repeat scroll 15px center #EAF0EE;border:1px solid #CCCCCC;margin-bottom:10px;padding:10px 5px 5px 200px;">
|
16 |
+
<h4>DiVA</h4>
|
17 |
+
<p>Ldap DiVA integration</p>
|
18 |
+
<p> </p>
|
19 |
+
<p> </p>
|
20 |
+
<p> </p>
|
21 |
+
<p> </p>
|
22 |
+
</div>';
|
23 |
+
|
24 |
+
return $html;
|
25 |
+
}
|
26 |
+
}
|
app/code/local/DivaCloud/Admin/Helper/Data.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class DivaCloud_Admin_Helper_Data extends Mage_Core_Helper_Abstract
|
3 |
+
{
|
4 |
+
public function getConfig($field, $default = null){
|
5 |
+
$value = Mage::getStoreConfig('localeselector/option/'.$field);
|
6 |
+
if(!isset($value) or trim($value) == ''){
|
7 |
+
return $default;
|
8 |
+
}else{
|
9 |
+
return $value;
|
10 |
+
}
|
11 |
+
}
|
12 |
+
|
13 |
+
public function log($data){
|
14 |
+
if(is_array($data) || is_object($data)){
|
15 |
+
$data = print_r($data, true);
|
16 |
+
}
|
17 |
+
Mage::log($data, null, 'divacloud-ldap.log');
|
18 |
+
}
|
19 |
+
}
|
app/code/local/DivaCloud/Admin/Model/Session.php
ADDED
@@ -0,0 +1,202 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class DivaCloud_Admin_Model_Session extends Mage_Admin_Model_Session
|
3 |
+
{
|
4 |
+
protected static $ldaplink = null;
|
5 |
+
public $host;
|
6 |
+
public $version;
|
7 |
+
public $rootDn;
|
8 |
+
public $rootPassword;
|
9 |
+
public $userDn;
|
10 |
+
public $filter;
|
11 |
+
public $cmpAttr;
|
12 |
+
public $pwdAttr;
|
13 |
+
public $attr;
|
14 |
+
public $tls;
|
15 |
+
public $roleId;
|
16 |
+
public $actived;
|
17 |
+
public $data = array();
|
18 |
+
/*
|
19 |
+
* Override admin login
|
20 |
+
*/
|
21 |
+
public function login($username, $password, $request = null)
|
22 |
+
{
|
23 |
+
if (empty($username) || empty($password)) {
|
24 |
+
Mage::getSingleton('core/session')->addSuccess('Vous devez spécifier un login/mdp définit.');
|
25 |
+
return false;
|
26 |
+
}
|
27 |
+
try {
|
28 |
+
$this->load_Parameters();
|
29 |
+
//IF DESACTIVED DO NORMAL AUTH
|
30 |
+
if (!$this->actived) //CHECK MAGENTO CONNECT
|
31 |
+
return parent::login($username, $password, $request);
|
32 |
+
$this->connect();
|
33 |
+
$ldap_user = $this->authentify($username, $password);
|
34 |
+
if (!is_a($ldap_user, 'DivaCloud_Admin_Model_Session')){
|
35 |
+
Mage::getSingleton('core/session')->addError('Utilisateur non autorisé.');
|
36 |
+
return false;
|
37 |
+
}else{
|
38 |
+
// Auth reussie
|
39 |
+
$user = Mage::getModel('admin/user');
|
40 |
+
$user->login($username, $password);
|
41 |
+
// Auth reussie on Magento (user & pass match)
|
42 |
+
if ($user->getId()) {// update user
|
43 |
+
$user->setUsername($username)
|
44 |
+
->setFirstname($ldap_user->data[0]['givenname'][0])
|
45 |
+
->setLastname($ldap_user->data[0]['sn'][0])
|
46 |
+
->setEmail($ldap_user->data[0]['mail'][0])
|
47 |
+
->setPassword($password)
|
48 |
+
->save();
|
49 |
+
Mage::getSingleton('core/session')->addSuccess('Utilisateur mis à jour.');
|
50 |
+
$this->renewSession();
|
51 |
+
if (Mage::getSingleton('adminhtml/url')->useSecretKey())
|
52 |
+
Mage::getSingleton('adminhtml/url')->renewSecretUrls();
|
53 |
+
$this->setIsFirstPageAfterLogin(true);
|
54 |
+
$this->setUser($user);
|
55 |
+
$this->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());
|
56 |
+
if ($requestUri = $this->_getRequestUri($request)) {
|
57 |
+
Mage::dispatchEvent('admin_session_user_login_success', array('user' => $user));
|
58 |
+
header('Location: ' . $requestUri);
|
59 |
+
exit;
|
60 |
+
}
|
61 |
+
}else{// N'existe pas dans magento, existe sur Ldap
|
62 |
+
try {
|
63 |
+
$exist = false;
|
64 |
+
//$admin->loadByEmail($email);
|
65 |
+
// test if a user already exists (check username)
|
66 |
+
$users = Mage::getModel('admin/user')->getCollection()->getData();
|
67 |
+
foreach($users as $userData=>$val){
|
68 |
+
if($val['username'] == $username)
|
69 |
+
$exist = true;
|
70 |
+
}
|
71 |
+
if ($exist){// update user
|
72 |
+
$user = Mage::getModel('admin/user')->load($val['user_id']);
|
73 |
+
$user->setUsername($username)
|
74 |
+
->setFirstname($ldap_user->data[0][$this->attr['firstname']][0])
|
75 |
+
->setLastname($ldap_user->data[0][$this->attr['lastname']][0])
|
76 |
+
->setEmail($ldap_user->data[0][$this->attr['mail']][0])
|
77 |
+
->setPassword($password)
|
78 |
+
->save();
|
79 |
+
Mage::getSingleton('core/session')->addSuccess('Mot de passe mis à jour, mauvais mot de passe Magento');
|
80 |
+
}else{
|
81 |
+
// create user
|
82 |
+
$user = Mage::getModel('admin/user')
|
83 |
+
->setData(array(
|
84 |
+
'username' => $username,
|
85 |
+
'firstname' => $ldap_user->data[0][$this->attr['firstname']][0],
|
86 |
+
'lastname' => $ldap_user->data[0][$this->attr['lastname']][0],
|
87 |
+
'email' => $ldap_user->data[0][$this->attr['mail']][0],
|
88 |
+
'password' => $password,
|
89 |
+
'is_active' => 1
|
90 |
+
))->save();
|
91 |
+
Mage::getSingleton('core/session')->addSuccess('Utilisateur crée sur Magento');
|
92 |
+
$user->setRoleIds(array($this->roleId))
|
93 |
+
->setRoleUserId($user->getUserId())
|
94 |
+
->saveRelations();
|
95 |
+
}
|
96 |
+
// alter session
|
97 |
+
$user->login($username, $password);
|
98 |
+
$this->renewSession();
|
99 |
+
if (Mage::getSingleton('adminhtml/url')->useSecretKey())
|
100 |
+
Mage::getSingleton('adminhtml/url')->renewSecretUrls();
|
101 |
+
$this->setIsFirstPageAfterLogin(true);
|
102 |
+
$this->setUser($user);
|
103 |
+
$this->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());
|
104 |
+
if ($requestUri = $this->_getRequestUri($request)) {
|
105 |
+
Mage::dispatchEvent('admin_session_user_login_success', array('user' => $user));
|
106 |
+
header('Location: ' . $requestUri);
|
107 |
+
exit;
|
108 |
+
}
|
109 |
+
} catch (Exception $e) {
|
110 |
+
echo $e->getMessage();
|
111 |
+
exit;
|
112 |
+
}
|
113 |
+
}
|
114 |
+
}
|
115 |
+
}catch (Mage_Core_Exception $e) {
|
116 |
+
Mage::dispatchEvent('admin_session_user_login_failed',
|
117 |
+
array('user_name' => $username, 'exception' => $e));
|
118 |
+
if ($request && !$request->getParam('messageSent')) {
|
119 |
+
Mage::getSingleton('adminhtml/session')->addError("DiVA".$e->getMessage());
|
120 |
+
$request->setParam('messageSent', true);
|
121 |
+
}
|
122 |
+
}
|
123 |
+
return $user;
|
124 |
+
}
|
125 |
+
private function load_Parameters(){
|
126 |
+
// 'cn=admin,dc=diva,dc=com';
|
127 |
+
$this->rootDn = trim(Mage::getStoreConfig('dcadmin/ldaplogin/rootdn'));
|
128 |
+
// '*******'
|
129 |
+
$this->rootPassword = Mage::getStoreConfig('dcadmin/ldaplogin/rootpassword');
|
130 |
+
//'ou=users,dc=diva,dc=com'
|
131 |
+
$this->userDn = trim(Mage::getStoreConfig('dcadmin/ldaplogin/userdn'));
|
132 |
+
// '(&(%s=%s)(groups=DiVA-magento-1))';
|
133 |
+
$this->filter = trim(Mage::getStoreConfig('dcadmin/ldaplogin/filter'));
|
134 |
+
// 'cn';
|
135 |
+
$this->cmpAttr = trim(Mage::getStoreConfig('dcadmin/ldaplogin/cmpattr'));
|
136 |
+
// 'ldap1'
|
137 |
+
$this->host = trim(Mage::getStoreConfig('dcadmin/ldaplogin/host'));
|
138 |
+
// '3'
|
139 |
+
$this->version = intval(trim(Mage::getStoreConfig('dcadmin/ldaplogin/version')));
|
140 |
+
// '389'
|
141 |
+
$this->port = intval(trim(Mage::getStoreConfig('dcadmin/ldaplogin/port')));
|
142 |
+
// false
|
143 |
+
$this->tls = intval(trim(Mage::getStoreConfig('dcadmin/ldaplogin/tls')));
|
144 |
+
// cn,givenname,mail,sn,displayname,userpassword
|
145 |
+
$this->attr = json_decode(trim(Mage::getStoreConfig('dcadmin/ldaplogin/attr')), true);
|
146 |
+
//default the role_id after each login 0 to disable
|
147 |
+
$this->roleId = intval(trim(Mage::getStoreConfig('dcadmin/ldaplogin/defaultroleid')));
|
148 |
+
//actived 1|0
|
149 |
+
$this->pwdAttr = trim(Mage::getStoreConfig('dcadmin/ldaplogin/passattr'));
|
150 |
+
//actived 1|0
|
151 |
+
$this->actived = trim(Mage::getStoreConfig('dcadmin/ldaplogin/activeldap'));
|
152 |
+
}
|
153 |
+
private function connect(){
|
154 |
+
$this->load_Parameters();
|
155 |
+
if (is_null(self::$ldaplink)){
|
156 |
+
if ($this->tls)
|
157 |
+
$url = 'ldaps://'.$this->host.'/';
|
158 |
+
else
|
159 |
+
$url = 'ldap://'.$this->host.'/';
|
160 |
+
self::$ldaplink = ldap_connect($url, $this->port);
|
161 |
+
}
|
162 |
+
if (!ldap_set_option(self::$ldaplink, LDAP_OPT_PROTOCOL_VERSION, $this->version))
|
163 |
+
die('AUTH_ADMIN ERROR : VERSION ERROR');
|
164 |
+
if (!ldap_bind(self::$ldaplink, $this->rootDn, $this->rootPassword))
|
165 |
+
die('AUTH_ADMIN ERROR : BIND ERROR');
|
166 |
+
}
|
167 |
+
public function get_Link(){
|
168 |
+
if(empty(self::$ldaplink))
|
169 |
+
$this->connect();
|
170 |
+
return self::$ldaplink;
|
171 |
+
}
|
172 |
+
public function is_Allowed($login){
|
173 |
+
$filter = sprintf($this->filter, $this->cmpAttr, $login);
|
174 |
+
$userDn = $this->cmpAttr.'='.$login.','.$this->userDn;
|
175 |
+
$data = ldap_search(self::$ldaplink, $userDn, $filter, array_values($this->attr));
|
176 |
+
if (!$data)
|
177 |
+
throw new Exception('AUTH_ADMIN ERROR : SEARCH ERROR');
|
178 |
+
$this->data = ldap_get_entries(self::$ldaplink, $data);
|
179 |
+
if ($this->data['count'] != 1)
|
180 |
+
return false;
|
181 |
+
return true;
|
182 |
+
}
|
183 |
+
public function authentify($login=null, $password=null){
|
184 |
+
if (is_null($login) || is_null($password))
|
185 |
+
return false;
|
186 |
+
try{
|
187 |
+
$userDn = $this->cmpAttr.'='.$login.','.$this->userDn;
|
188 |
+
if (ldap_compare($this->get_Link(), $userDn, $this->pwdAttr, $password)){
|
189 |
+
if ($this->is_Allowed($login))
|
190 |
+
return $this;
|
191 |
+
}
|
192 |
+
return false;
|
193 |
+
}catch(Exception $e){
|
194 |
+
return false;
|
195 |
+
}
|
196 |
+
}
|
197 |
+
public function get_Ldap_User_Attributs(){
|
198 |
+
foreach ($this->attr as $attr)
|
199 |
+
$ret[$attr] = $this->data[0][$attr][0];
|
200 |
+
return $ret;
|
201 |
+
}
|
202 |
+
}
|
app/code/local/DivaCloud/Admin/etc/adminhtml.xml
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<config>
|
3 |
+
<acl>
|
4 |
+
<resources>
|
5 |
+
<admin>
|
6 |
+
<children>
|
7 |
+
<system>
|
8 |
+
<children>
|
9 |
+
<config>
|
10 |
+
<children>
|
11 |
+
<dcadmin translate="title" module="dcadmin">
|
12 |
+
<title>Ldap configuration</title>
|
13 |
+
<sort_order>100</sort_order>
|
14 |
+
</dcadmin>
|
15 |
+
<divacloudinfo translate="title" module="dcadmin">
|
16 |
+
<title>Ldap infos</title>
|
17 |
+
<sort_order>100</sort_order>
|
18 |
+
</divacloudinfo>
|
19 |
+
</children>
|
20 |
+
</config>
|
21 |
+
</children>
|
22 |
+
</system>
|
23 |
+
</children>
|
24 |
+
</admin>
|
25 |
+
</resources>
|
26 |
+
</acl>
|
27 |
+
</config>
|
app/code/local/DivaCloud/Admin/etc/config.xml
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<DivaCloud_Admin>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</DivaCloud_Admin>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<blocks>
|
10 |
+
<dcadmin>
|
11 |
+
<class>DivaCloud_Admin_Block</class>
|
12 |
+
</dcadmin>
|
13 |
+
</blocks>
|
14 |
+
<models>
|
15 |
+
<admin>
|
16 |
+
<rewrite>
|
17 |
+
<session>DivaCloud_Admin_Model_Session</session>
|
18 |
+
</rewrite>
|
19 |
+
</admin>
|
20 |
+
</models>
|
21 |
+
<helpers>
|
22 |
+
<dcadmin>
|
23 |
+
<class>DivaCloud_Admin_Helper</class>
|
24 |
+
</dcadmin>
|
25 |
+
</helpers>
|
26 |
+
</global>
|
27 |
+
<!-- <frontend>
|
28 |
+
<routers />
|
29 |
+
<events />
|
30 |
+
<translate />
|
31 |
+
<layout />
|
32 |
+
</frontend>-->
|
33 |
+
<default>
|
34 |
+
<adminhtml>
|
35 |
+
<acl>
|
36 |
+
<resources>
|
37 |
+
<all>
|
38 |
+
<title>Allow Everything</title>
|
39 |
+
</all>
|
40 |
+
<admin>
|
41 |
+
<children>
|
42 |
+
<dcadmin module="dcadmin">
|
43 |
+
<title>Ldap login</title>
|
44 |
+
<sort_order>10</sort_order>
|
45 |
+
</dcadmin>
|
46 |
+
<system>
|
47 |
+
<children>
|
48 |
+
<config>
|
49 |
+
<children>
|
50 |
+
<divacloudinfo>
|
51 |
+
<title>DiVA</title>
|
52 |
+
</divacloudinfo>
|
53 |
+
<dcadmin>
|
54 |
+
<title>DiVA tab</title>
|
55 |
+
</dcadmin>
|
56 |
+
</children>
|
57 |
+
</config>
|
58 |
+
</children>
|
59 |
+
</system>
|
60 |
+
</children>
|
61 |
+
</admin>
|
62 |
+
</resources>
|
63 |
+
</acl>
|
64 |
+
</adminhtml>
|
65 |
+
<dcadmin>
|
66 |
+
<ldaplogin>
|
67 |
+
<activeldap><![CDATA[1]]></activeldap>
|
68 |
+
<host><![CDATA[ldap1]]></host>
|
69 |
+
<version><![CDATA[3]]></version>
|
70 |
+
<port><![CDATA[389]]></port>
|
71 |
+
<tls><![CDATA[0]]></tls>
|
72 |
+
<rootdn><![CDATA[cn=admin,dc=diva,dc=com]]></rootdn>
|
73 |
+
<rootpassword><![CDATA[diva]]></rootpassword>
|
74 |
+
<userdn><![CDATA[ou=users,dc=diva,dc=com]]></userdn>
|
75 |
+
<filter><![CDATA[(&(%s=%s)(groups=DiVA-magento-1))]]></filter>
|
76 |
+
<cmpattr><![CDATA[cn]]></cmpattr>
|
77 |
+
<passattr><![CDATA[userPassword]]></passattr>
|
78 |
+
<attr><![CDATA[{"login":"cn","firstname":"givenname","mail":"mail","lastname":"sn"}]]></attr>
|
79 |
+
<defaultroleid><![CDATA[20]]></defaultroleid>
|
80 |
+
</ldaplogin>
|
81 |
+
</dcadmin>
|
82 |
+
</default>
|
83 |
+
</config>
|
app/code/local/DivaCloud/Admin/etc/system.xml
ADDED
@@ -0,0 +1,166 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<divatab translate="label" module="dcadmin">
|
5 |
+
<label>DiVA-Cloud</label>
|
6 |
+
<sort_order>1</sort_order>
|
7 |
+
</divatab>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<divacloudinfo translate="label" module="dcadmin">
|
11 |
+
<label>Login infos</label>
|
12 |
+
<tab>divatab</tab>
|
13 |
+
<frontend_type>text</frontend_type>
|
14 |
+
<sort_order>300</sort_order>
|
15 |
+
<show_in_default>1</show_in_default>
|
16 |
+
<show_in_website>1</show_in_website>
|
17 |
+
<show_in_store>1</show_in_store>
|
18 |
+
<groups>
|
19 |
+
<info>
|
20 |
+
<frontend_model>dcadmin/system_config_info</frontend_model>
|
21 |
+
<sort_order>10</sort_order>
|
22 |
+
<show_in_default>1</show_in_default>
|
23 |
+
<show_in_website>1</show_in_website>
|
24 |
+
<show_in_store>1</show_in_store>
|
25 |
+
</info>
|
26 |
+
</groups>
|
27 |
+
</divacloudinfo>
|
28 |
+
<dcadmin module="dcadmin">
|
29 |
+
<label>Module Ldap Configuration</label>
|
30 |
+
<tab>divatab</tab>
|
31 |
+
<frontend_type>text</frontend_type>
|
32 |
+
<sort_order>340</sort_order>
|
33 |
+
<show_in_default>1</show_in_default>
|
34 |
+
<show_in_website>1</show_in_website>
|
35 |
+
<show_in_store>1</show_in_store>
|
36 |
+
<groups>
|
37 |
+
<ldaplogin translate="label">
|
38 |
+
<label>Ldap Login Configuration</label>
|
39 |
+
<frontend_type>text</frontend_type>
|
40 |
+
<sort_order>10</sort_order>
|
41 |
+
<show_in_default>1</show_in_default>
|
42 |
+
<show_in_website>1</show_in_website>
|
43 |
+
<show_in_store>1</show_in_store>
|
44 |
+
<fields>
|
45 |
+
<activeldap translate="label">
|
46 |
+
<label>Enable Ldap login</label>
|
47 |
+
<frontend_type>select</frontend_type>
|
48 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
49 |
+
<sort_order>10</sort_order>
|
50 |
+
<show_in_default>1</show_in_default>
|
51 |
+
<show_in_website>1</show_in_website>
|
52 |
+
<show_in_store>1</show_in_store>
|
53 |
+
</activeldap>
|
54 |
+
<host translate="label">
|
55 |
+
<label>Host</label>
|
56 |
+
<frontend_type>text</frontend_type>
|
57 |
+
<sort_order>11</sort_order>
|
58 |
+
<show_in_default>1</show_in_default>
|
59 |
+
<show_in_website>1</show_in_website>
|
60 |
+
<show_in_store>1</show_in_store>
|
61 |
+
<comment><![CDATA[<b>Ex: </b> ldap.example.com ]]></comment>
|
62 |
+
</host>
|
63 |
+
<version translate="label">
|
64 |
+
<label>Protocol version</label>
|
65 |
+
<frontend_type>text</frontend_type>
|
66 |
+
<sort_order>12</sort_order>
|
67 |
+
<show_in_default>1</show_in_default>
|
68 |
+
<show_in_website>1</show_in_website>
|
69 |
+
<show_in_store>1</show_in_store>
|
70 |
+
<comment><![CDATA[<b>Ex: </b> 3 ]]></comment>
|
71 |
+
</version>
|
72 |
+
<port translate="label">
|
73 |
+
<label>Port</label>
|
74 |
+
<frontend_type>text</frontend_type>
|
75 |
+
<sort_order>13</sort_order>
|
76 |
+
<show_in_default>1</show_in_default>
|
77 |
+
<show_in_website>1</show_in_website>
|
78 |
+
<show_in_store>1</show_in_store>
|
79 |
+
<comment><![CDATA[<b>Ex: </b> 389 ]]></comment>
|
80 |
+
</port>
|
81 |
+
<tls translate="label">
|
82 |
+
<label>Enable TLS</label>
|
83 |
+
<frontend_type>select</frontend_type>
|
84 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
85 |
+
<sort_order>14</sort_order>
|
86 |
+
<show_in_default>1</show_in_default>
|
87 |
+
<show_in_website>1</show_in_website>
|
88 |
+
</tls>
|
89 |
+
<rootdn translate="label">
|
90 |
+
<label>rootDn</label>
|
91 |
+
<frontend_type>text</frontend_type>
|
92 |
+
<sort_order>15</sort_order>
|
93 |
+
<show_in_default>1</show_in_default>
|
94 |
+
<show_in_website>1</show_in_website>
|
95 |
+
<show_in_store>1</show_in_store>
|
96 |
+
<comment><![CDATA[<b>Ex: </b> cn=admin,dc=diva,dc=com ]]></comment>
|
97 |
+
</rootdn>
|
98 |
+
<rootpassword translate="label">
|
99 |
+
<label>rootPassword</label>
|
100 |
+
<frontend_type>text</frontend_type>
|
101 |
+
<sort_order>16</sort_order>
|
102 |
+
<show_in_default>1</show_in_default>
|
103 |
+
<show_in_website>1</show_in_website>
|
104 |
+
<show_in_store>1</show_in_store>
|
105 |
+
<comment><![CDATA[<b>Ex: </b> YourP455w0Rd ]]></comment>
|
106 |
+
</rootpassword>
|
107 |
+
<userdn translate="label">
|
108 |
+
<label>userDn</label>
|
109 |
+
<frontend_type>text</frontend_type>
|
110 |
+
<sort_order>17</sort_order>
|
111 |
+
<show_in_default>1</show_in_default>
|
112 |
+
<show_in_website>1</show_in_website>
|
113 |
+
<show_in_store>1</show_in_store>
|
114 |
+
<comment><![CDATA[<b>Ex: </b> ou=users,dc=diva,dc=com ]]></comment>
|
115 |
+
</userdn>
|
116 |
+
<filter translate="label">
|
117 |
+
<label>Filter</label>
|
118 |
+
<frontend_type>text</frontend_type>
|
119 |
+
<sort_order>18</sort_order>
|
120 |
+
<show_in_default>1</show_in_default>
|
121 |
+
<show_in_website>1</show_in_website>
|
122 |
+
<show_in_store>1</show_in_store>
|
123 |
+
<comment><![CDATA[<b>Ex: </b> (&(%s=%s)(groups=DiVA-magento-1)) ]]></comment>
|
124 |
+
</filter>
|
125 |
+
<cmpattr translate="label">
|
126 |
+
<label>Login attribute</label>
|
127 |
+
<frontend_type>text</frontend_type>
|
128 |
+
<sort_order>19</sort_order>
|
129 |
+
<show_in_default>1</show_in_default>
|
130 |
+
<show_in_website>1</show_in_website>
|
131 |
+
<show_in_store>1</show_in_store>
|
132 |
+
<comment><![CDATA[<b>Ex: </b> cn ]]></comment>
|
133 |
+
</cmpattr>
|
134 |
+
<passattr translate="label">
|
135 |
+
<label>Password attribute</label>
|
136 |
+
<frontend_type>text</frontend_type>
|
137 |
+
<sort_order>20</sort_order>
|
138 |
+
<show_in_default>1</show_in_default>
|
139 |
+
<show_in_website>1</show_in_website>
|
140 |
+
<show_in_store>1</show_in_store>
|
141 |
+
<comment><![CDATA[<b>Ex: </b> userPassword ]]></comment>
|
142 |
+
</passattr>
|
143 |
+
<attr translate="label">
|
144 |
+
<label>Compliant attributes</label>
|
145 |
+
<frontend_type>text</frontend_type>
|
146 |
+
<sort_order>21</sort_order>
|
147 |
+
<show_in_default>1</show_in_default>
|
148 |
+
<show_in_website>1</show_in_website>
|
149 |
+
<show_in_store>1</show_in_store>
|
150 |
+
<comment><![CDATA[<b>Ex: </b> cn,givenname,mail,sn,displayname,userpassword ]]></comment>
|
151 |
+
</attr>
|
152 |
+
<defaultroleid translate="label">
|
153 |
+
<label>Default role_id</label>
|
154 |
+
<frontend_type>text</frontend_type>
|
155 |
+
<sort_order>22</sort_order>
|
156 |
+
<show_in_default>1</show_in_default>
|
157 |
+
<show_in_website>1</show_in_website>
|
158 |
+
<show_in_store>1</show_in_store>
|
159 |
+
<comment><![CDATA[<b>Ex: </b> 20 ]]></comment>
|
160 |
+
</defaultroleid>
|
161 |
+
</fields>
|
162 |
+
</ldaplogin>
|
163 |
+
</groups>
|
164 |
+
</dcadmin>
|
165 |
+
</sections>
|
166 |
+
</config>
|
app/etc/modules/DivaCloud_Admin.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<DivaCloud_Admin>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>local</codePool>
|
7 |
+
</DivaCloud_Admin>
|
8 |
+
</modules>
|
9 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>DivaCloud_Admin_LDAP_Auth</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license>GPL</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>This plug-in allows you to authenticate your backend user via an LDAP server.</summary>
|
10 |
+
<description>Features: 
|
11 |
+
- Create user which not in Magento but have LDAP authorization
|
12 |
+
- Update user properties with LDAP infos
|
13 |
+
- Flexible Filter field
|
14 |
+
- TLS support
|
15 |
+
</description>
|
16 |
+
<notes>TLS not tested yet
|
17 |
+

|
18 |
+
Only test openLDAP server but should work fine with other LDAP server (see parameters)</notes>
|
19 |
+
<authors><author><name>DiVA-Cloud</name><user>kant1</user><email>support@diva-cloud.com</email></author></authors>
|
20 |
+
<date>2012-04-17</date>
|
21 |
+
<time>16:06:49</time>
|
22 |
+
<contents><target name="magelocal"><dir name="DivaCloud"><dir name="Admin"><dir name="Block"><dir name="System"><dir name="Config"><file name="Extension.php" hash="5292c752c00a536b24977893baccb60d"/><file name="Info.php" hash="87526d5165eada3d49fdd72d27c11e97"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="d052390a88d052fc86cf0d2673ef8ed2"/></dir><dir name="Model"><file name="Session.php" hash="bab6bf66875a6421e03f47e50b2bae89"/></dir><dir name="etc"><file name="adminhtml.xml" hash="32df770fe97c56fc35ae1f00e3d344bf"/><file name="config.xml" hash="ee882669766f65706de0cb2a27ba3af7"/><file name="system.xml" hash="76aadb14e6303697a94aa94f26477bd6"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="DivaCloud_Admin.xml" hash="eca4d83c50f7242bf54d55e1b6f0cefc"/></dir></target></contents>
|
23 |
+
<compatible/>
|
24 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>ldap</name><min>0.0.1</min><max>12.0.0</max></extension></required></dependencies>
|
25 |
+
</package>
|