├── .gitignore ├── ldap ├── module │ ├── user │ │ └── ext │ │ │ ├── config │ │ │ └── config.php │ │ │ └── model │ │ │ ├── updatePassword.php │ │ │ └── identify.php │ ├── group │ │ └── ext │ │ │ └── lang │ │ │ ├── en │ │ │ └── ldap-resource.php │ │ │ ├── zh-cn │ │ │ └── ldap-resource.php │ │ │ └── zh-tw │ │ │ └── ldap-resource.php │ ├── common │ │ └── ext │ │ │ └── lang │ │ │ └── zh-cn │ │ │ └── ldap-plugin.php │ └── ldap │ │ ├── js │ │ └── setting.js │ │ ├── lang │ │ ├── zh-tw.php │ │ ├── zh-cn.php │ │ └── en.php │ │ ├── model.php │ │ ├── view │ │ └── setting.html.php │ │ └── control.php └── doc │ ├── en.yaml │ └── zh-cn.yaml ├── CHANGELOG.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.zip 2 | .vscode 3 | .idea -------------------------------------------------------------------------------- /ldap/module/user/ext/config/config.php: -------------------------------------------------------------------------------- 1 | notMd5Pwd = true; 4 | -------------------------------------------------------------------------------- /ldap/module/group/ext/lang/en/ldap-resource.php: -------------------------------------------------------------------------------- 1 | resource->ldap = new stdclass(); 4 | $lang->resource->ldap->index = 'common'; 5 | $lang->resource->ldap->setting = 'setting'; -------------------------------------------------------------------------------- /ldap/module/group/ext/lang/zh-cn/ldap-resource.php: -------------------------------------------------------------------------------- 1 | resource->ldap = new stdclass(); 4 | $lang->resource->ldap->index = 'common'; 5 | $lang->resource->ldap->setting = 'setting'; -------------------------------------------------------------------------------- /ldap/module/group/ext/lang/zh-tw/ldap-resource.php: -------------------------------------------------------------------------------- 1 | resource->ldap = new stdclass(); 4 | $lang->resource->ldap->index = 'common'; 5 | $lang->resource->ldap->setting = 'setting'; -------------------------------------------------------------------------------- /ldap/module/user/ext/model/updatePassword.php: -------------------------------------------------------------------------------- 1 | app->user->fromldap == true ){ 5 | dao::$errors['originalPassword'][] = "ldap 用户不能修改密码"; 6 | return false; 7 | } 8 | return parent::updatePassword($userID); 9 | } 10 | -------------------------------------------------------------------------------- /ldap/module/common/ext/lang/zh-cn/ldap-plugin.php: -------------------------------------------------------------------------------- 1 | admin->menu->ldap = array('link' => 'LDAP|ldap|index', 'subModule' => 'ldap'); 3 | $lang->ldap = new stdclass(); 4 | $lang->ldap->menu = $lang->admin->menu; 5 | $lang->menugroup->ldap = 'admin'; 6 | $lang->admin->menuOrder[100] = 'ldap'; 7 | $lang->ldap->menuOrder = $lang->admin->menuOrder; -------------------------------------------------------------------------------- /ldap/module/ldap/js/setting.js: -------------------------------------------------------------------------------- 1 | function onClickTest() { 2 | $.post(createLink('ldap', 'test'),{ 3 | host: $('#ldapHost').val(), 4 | dn: $('#ldapBindDN').val(), 5 | pwd: $('#ldapPassword').val(), 6 | }, function(data) { 7 | $('#testRlt').html(data); 8 | }); 9 | } 10 | 11 | function sync() { 12 | $.get(createLink('ldap', 'sync'), function(ret){ 13 | alert("同步了"+ret+"位用户信息"); 14 | }); 15 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 1.3.1 2 | 3 | - FIX: 4 | - 没有保存 name 映射配置 5 | 6 | ### 1.3.0 7 | 8 | - CHANGE: 9 | - 禁止 ldap 用户修改账号密码 10 | 11 | ### 1.2.3 12 | 13 | - FIX: 14 | - 修复了需要登录两次,密码验证才能生效的问题 15 | - CHANGE: 16 | - 密码二次验证的时候不从数据库里取值即可完成验证,所以密码不再存放到数据库中,避免泄露 17 | 18 | ### 1.2.2 19 | 20 | - FIX: 21 | - 修复了二次密码验证失败的问题 22 | 23 | ### 1.2.1 24 | 25 | - FIX: 26 | - ldap 账号登录失败,原因是因为禅道现在默认对密码进行 MD5,所以需要禁用这个行为, 27 | 通过添加配置:`$config->notMd5Pwd = true;` 解决 28 | - ldap 测试账号服务器是否有效失败,发现是因为 js 中的 createLink 函数无法处理复杂的 GET 字符串引起的, 29 | 使用 POST 请求解决了这个问题 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ### 简介 3 | 4 | **注意: 有问题请开 issue , 请勿发送邮件要求我为你提供私人服务** 5 | 6 | 这个插件是在 “[禅道开源版LDAP插件](https://github.com/TigerLau1985/ZenTao_LDAP)” 上基础进行的修正,使其可以在 禅道开源版 12.3 上正常运行 7 | 8 | 测试的 zentao 版本 https://github.com/shynome/zentao-docker , 更新的版本可能不行, 如果有 pr 修复的话会接受的 9 | 10 | ### 配置示例 11 | 12 | | 选项 | 示例值 | 13 | | ---- | ---- | 14 | | LDAP服务器 | ldap://192.168.32.203:389 | 15 | | 协议版本 | 3 | 16 | | BindDN | cn=admin,dc=mylitboy,dc=com | 17 | | BindDN 密码 | ou=users,dc=mylitboy,dc=com | 18 | | Search filter | (objectClass=person) | 19 | | 账号字段 | uid | 20 | | EMail 字段 | mail | 21 | | 姓名字段 | cn | 22 | 23 | > 参考 https://blog.mylitboy.com/article/operation/zentao-config-ldap.html 24 | 25 | ### 从钉钉同步信息到ldap 26 | 27 | > 参考 https://github.com/anjia0532/virtual-ldap 28 | 29 | ### FAQ 30 | 31 | - 32 | - 问:开启这个插件后无法登录本地账户 33 | - 答:本地账户需要加上 `$` 前缀来登录 34 | - 35 | - 问: 连接是 ok 但是同步了 0 位用户 36 | - 答: 这种情况的话, 保存设置后再点击手动同步就可以正常同步(原来的版本就有的问题懒得改了) 37 | 注意: 所有的字段都是需要填写的 38 | -------------------------------------------------------------------------------- /ldap/module/ldap/lang/zh-tw.php: -------------------------------------------------------------------------------- 1 | 8 | * @package user 9 | * @version $Id: zh-tw.php 5053 2013-07-06 08:17:37Z wyd621@gmail.com $ 10 | * @link http://www.zentao.net 11 | */ 12 | $lang->ldap->common = "LDAP"; 13 | $lang->ldap->setting = "设置"; 14 | $lang->ldap->host = 'LDAP服务器: '; 15 | $lang->ldap->version = '协议版本: '; 16 | $lang->ldap->bindDN = 'BindDN: '; 17 | $lang->ldap->password = 'BindDN 密码: '; 18 | $lang->ldap->baseDN = 'BaseDN: '; 19 | $lang->ldap->filter = 'Search filter: '; 20 | $lang->ldap->attributes = '账号字段: '; 21 | $lang->ldap->sync = '手动同步'; 22 | $lang->ldap->save = '保存设置'; 23 | $lang->ldap->test = '测试连接'; 24 | $lang->ldap->mail = 'EMail 字段:'; 25 | $lang->ldap->name = '姓名字段:'; 26 | 27 | $lang->ldap->methodOrder[5] = 'index'; 28 | $lang->ldap->methodOrder[10] = 'setting'; -------------------------------------------------------------------------------- /ldap/module/ldap/lang/zh-cn.php: -------------------------------------------------------------------------------- 1 | 8 | * @package user 9 | * @version $Id: zh-cn.php 5053 2013-07-06 08:17:37Z wyd621@gmail.com $ 10 | * @link http://www.zentao.net 11 | */ 12 | 13 | $lang->ldap->common = "LDAP"; 14 | $lang->ldap->setting = "设置"; 15 | $lang->ldap->host = 'LDAP服务器: '; 16 | $lang->ldap->version = '协议版本: '; 17 | $lang->ldap->bindDN = 'BindDN: '; 18 | $lang->ldap->password = 'BindDN 密码: '; 19 | $lang->ldap->baseDN = 'BaseDN: '; 20 | $lang->ldap->filter = 'Search filter: '; 21 | $lang->ldap->attributes = '账号字段: '; 22 | $lang->ldap->sync = '手动同步'; 23 | $lang->ldap->save = '保存设置'; 24 | $lang->ldap->test = '测试连接'; 25 | $lang->ldap->mail = 'EMail 字段:'; 26 | $lang->ldap->name = '姓名字段:'; 27 | 28 | $lang->ldap->methodOrder[5] = 'index'; 29 | $lang->ldap->methodOrder[10] = 'setting'; -------------------------------------------------------------------------------- /ldap/module/ldap/lang/en.php: -------------------------------------------------------------------------------- 1 | 8 | * @package user 9 | * @version $Id: en.php 5053 2013-07-06 08:17:37Z wyd621@gmail.com $ 10 | * @link http://www.zentao.net 11 | */ 12 | $lang->ldap->common = "LDAP"; 13 | $lang->ldap->setting = "Setting"; 14 | $lang->ldap->host = 'LDAP Host: '; 15 | $lang->ldap->version = 'Protocol Version: '; 16 | $lang->ldap->bindDN = 'BindDN: '; 17 | $lang->ldap->password = 'BindDN Password: '; 18 | $lang->ldap->baseDN = 'BaseDN: '; 19 | $lang->ldap->filter = 'Search filter: '; 20 | $lang->ldap->attributes = 'Account Attribute: '; 21 | $lang->ldap->sync = 'Sync'; 22 | $lang->ldap->save = 'Save'; 23 | $lang->ldap->test = 'Connect Test'; 24 | $lang->ldap->mail = 'EMail:'; 25 | $lang->ldap->name = 'Name Attrubte:'; 26 | 27 | $lang->ldap->methodOrder[5] = 'index'; 28 | $lang->ldap->methodOrder[10] = 'setting'; -------------------------------------------------------------------------------- /ldap/module/user/ext/model/identify.php: -------------------------------------------------------------------------------- 1 | dao->select('*')->from(TABLE_USER) 9 | ->where('account')->eq($account) 10 | ->andWhere('deleted')->eq(0) 11 | ->fetch(); 12 | if ($record) { 13 | $ldap = $this->loadModel('ldap'); 14 | $dn = $ldap->getUserDn($this->config->ldap, $account); 15 | $pass = $ldap->identify($this->config->ldap->host, $dn, $password); 16 | if (0 == strcmp('Success', $pass)) { 17 | $user = $record; 18 | $ip = $this->server->remote_addr; 19 | $last = $this->server->request_time; 20 | // 禅道有多处地方需要二次验证密码, 所以需要保存密码的 MD5 在 session 中以供后续验证 21 | $user->password = md5($password); 22 | // 判断用户是否来自 ldap 23 | $user->fromldap = true; 24 | $this->dao->update(TABLE_USER)->set('visits = visits + 1')->set('ip')->eq($ip)->set('ip')->eq($ip)->set('last')->eq($last)->where('account')->eq($account)->exec(); 25 | $user->last = date(DT_DATETIME1, $user->last); 26 | 27 | /* Create cycle todo in login. */ 28 | $todoList = $this->dao->select('*')->from(TABLE_TODO)->where('cycle')->eq(1)->andWhere('account')->eq($user->account)->fetchAll('id'); 29 | $this->loadModel('todo')->createByCycle($todoList); 30 | } 31 | } 32 | return $user; 33 | } 34 | } -------------------------------------------------------------------------------- /ldap/doc/en.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: 禅道开源版 12.3 LDAP插件 3 | code: ldap 4 | type: extension 5 | site: https://github.com/shynome/zentao-ldap 6 | author: 'shynome' 7 | abstract: > 8 | 支持从LDAP服务器上同步用户信息(账号、真实姓名、邮箱),以及使用LDAP验证登录。 9 | desc: > 10 | 1.插件安装后,在后台页面会多出一个"LDAP"子页面,可在该页面配置LDAP服务器信息 11 | 2.在LDAP配置页面可以测试是否能够正常连接LDAP服务器 12 | 3.保存配置后,点击“手动同步”按钮,从LDAP服务器上同步用户信息 13 | 4.同步用户信息以后,可以使用LDAP用户登录禅道 14 | 5.本地用户,通过在账户名称前加“$”符号来登录禅道 15 | install: | 16 | 1. 通过禅道的插件管理来进行安装。 17 | 1.1 使用管理员身份登录禅道,访问插件管理。 18 | 1.2 打开获得插件页面,搜索找到本插件。 19 | 1.3 选择自动安装,按照页面提示即可。 20 | 2. 手工安装,将代码解压缩,然后将目录拷贝到禅道对应的目录,比如module拷贝到zentao的module。 21 | releases: 22 | 1.3.2 23 | zentao: 24 | compatible: 12.3.stable 25 | incompatible: 26 | charge: free 27 | date: 2020-08-10 28 | conflicts: null 29 | depends: null 30 | license: LGPL 31 | changelog: > 32 | 1. 支持12.3 33 | 1.3.1 34 | zentao: 35 | compatible: 11.5.stable 36 | incompatible: 37 | charge: free 38 | date: 2020-07-30 39 | conflicts: null 40 | depends: null 41 | license: LGPL 42 | changelog: > 43 | 1. 修复 name 映射配置未被保存的问题 44 | 1.3.0 45 | zentao: 46 | compatible: 11.5.stable 47 | incompatible: 48 | charge: free 49 | date: 2019-05-24 50 | conflicts: null 51 | depends: null 52 | license: LGPL 53 | changelog: > 54 | 1. 禁止 ldap 用户修改账号密码 55 | 1.2.3 56 | zentao: 57 | compatible: 11.5.stable 58 | incompatible: 59 | charge: free 60 | date: 2019-05-24 61 | conflicts: null 62 | depends: null 63 | license: LGPL 64 | changelog: > 65 | 1. 修复 11.5 版本 ldap 账号登录失败 66 | 2. 修复 11.5 版本 密码二次验证失败 67 | 3. 修复设置页面的测试服务器及账号是否可用 68 | 1.2: 69 | zentao: 70 | compatible: 7.0,7.1,7.2,7.2.4,7.2.5,7.3 71 | incompatible: 72 | charge: free 73 | date: 2015-10-16 74 | conflicts: null 75 | depends: null 76 | license: LGPL 77 | changelog: > 78 | 1.增加对繁体和英文的支持 79 | 2.增加对权限控制的支持 80 | -------------------------------------------------------------------------------- /ldap/doc/zh-cn.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: 禅道开源版 12.3 LDAP插件 3 | code: ldap 4 | type: extension 5 | site: https://github.com/shynome/zentao-ldap 6 | author: 'shynome' 7 | abstract: > 8 | 支持从LDAP服务器上同步用户信息(账号、真实姓名、邮箱),以及使用LDAP验证登录。 9 | desc: > 10 | 1.插件安装后,在后台页面会多出一个"LDAP"子页面,可在该页面配置LDAP服务器信息 11 | 2.在LDAP配置页面可以测试是否能够正常连接LDAP服务器 12 | 3.保存配置后,点击“手动同步”按钮,从LDAP服务器上同步用户信息 13 | 4.同步用户信息以后,可以使用LDAP用户登录禅道 14 | 5.本地用户,通过在账户名称前加“$”符号来登录禅道 15 | install: | 16 | 1. 通过禅道的插件管理来进行安装。 17 | 1.1 使用管理员身份登录禅道,访问插件管理。 18 | 1.2 打开获得插件页面,搜索找到本插件。 19 | 1.3 选择自动安装,按照页面提示即可。 20 | 2. 手工安装,将代码解压缩,然后将目录拷贝到禅道对应的目录,比如module拷贝到zentao的module。 21 | releases: 22 | 1.3.2 23 | zentao: 24 | compatible: 12.3.stable 25 | incompatible: 26 | charge: free 27 | date: 2020-08-10 28 | conflicts: null 29 | depends: null 30 | license: LGPL 31 | changelog: > 32 | 1. 支持12.3 33 | 1.3.1 34 | zentao: 35 | compatible: 11.5.stable 36 | incompatible: 37 | charge: free 38 | date: 2020-07-30 39 | conflicts: null 40 | depends: null 41 | license: LGPL 42 | changelog: > 43 | 1. 修复 name 映射配置未被保存的问题 44 | 1.3.0 45 | zentao: 46 | compatible: 11.5.stable 47 | incompatible: 48 | charge: free 49 | date: 2019-05-24 50 | conflicts: null 51 | depends: null 52 | license: LGPL 53 | changelog: > 54 | 1. 禁止 ldap 用户修改账号密码 55 | 1.2.3 56 | zentao: 57 | compatible: 11.5.stable 58 | incompatible: 59 | charge: free 60 | date: 2019-05-24 61 | conflicts: null 62 | depends: null 63 | license: LGPL 64 | changelog: > 65 | 1. 修复 11.5 版本 ldap 账号登录失败 66 | 2. 修复 11.5 版本 密码二次验证失败 67 | 3. 修复设置页面的测试服务器及账号是否可用 68 | 1.2: 69 | zentao: 70 | compatible: 7.0,7.1,7.2,7.2.4,7.2.5,7.3 71 | incompatible: 72 | charge: free 73 | date: 2015-10-16 74 | conflicts: null 75 | depends: null 76 | license: LGPL 77 | changelog: > 78 | 1.增加对繁体和英文的支持 79 | 2.增加对权限控制的支持 80 | -------------------------------------------------------------------------------- /ldap/module/ldap/model.php: -------------------------------------------------------------------------------- 1 | 11 | host); 33 | if ($ds) { 34 | ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3); 35 | ldap_bind($ds, $config->bindDN, $config->bindPWD); 36 | $filter = "($config->uid=$account)"; 37 | $rlt = ldap_search($ds, $config->baseDN, $filter); 38 | $count=ldap_count_entries($ds, $rlt); 39 | 40 | if($count > 0){ 41 | $data = ldap_get_entries($ds, $rlt); 42 | $ret = $data[0]['dn']; 43 | $str = serialize($data); 44 | } 45 | 46 | ldap_unbind($ds); 47 | ldap_close($ds); 48 | } 49 | return $ret; 50 | } 51 | public function getUsers($config) 52 | { 53 | $ds = ldap_connect($config->host); 54 | if ($ds) { 55 | ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3); 56 | ldap_bind($ds, $config->bindDN, $config->bindPWD); 57 | 58 | $attrs = [$config->uid, $config->mail, $config->name]; 59 | 60 | $rlt = ldap_search($ds, $config->baseDN, $config->searchFilter, $attrs); 61 | $data = ldap_get_entries($ds, $rlt); 62 | return $data; 63 | } 64 | 65 | return null; 66 | } 67 | 68 | public function sync2db($config) 69 | { 70 | $ldapUsers = $this->getUsers($config); 71 | $user = new stdclass(); 72 | $account = ''; 73 | $i=0; 74 | for (; $i < $ldapUsers['count']; $i++) { 75 | $user->account = $ldapUsers[$i][$config->uid][0]; 76 | $user->email = $ldapUsers[$i][$config->mail][0]; 77 | $user->realname = $ldapUsers[$i][$config->name][0]; 78 | 79 | $account = $this->dao->select('*')->from(TABLE_USER)->where('account')->eq($user->account)->fetch('account'); 80 | if ($account == $user->account) { 81 | $this->dao->update(TABLE_USER)->data($user)->where('account')->eq($user->account)->autoCheck()->exec(); 82 | } else { 83 | $this->dao->insert(TABLE_USER)->data($user)->autoCheck()->exec(); 84 | } 85 | 86 | if(dao::isError()) 87 | { 88 | echo js::error(dao::getError()); 89 | die(js::reload('parent')); 90 | } 91 | } 92 | 93 | return $i; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /ldap/module/ldap/view/setting.html.php: -------------------------------------------------------------------------------- 1 | 8 | * @package mail 9 | * @version $Id$ 10 | * @link http://www.zentao.net 11 | */ 12 | include '../../common/view/header.html.php'; 13 | ?> 14 | 15 | 16 | 17 | icons['mail']);?> 18 | ldap->common;?> 19 | ldap->setting;?> 20 | 21 | 22 | '> 23 | 24 | 25 | ldap->host; ?> 26 | ldap->host, "class='form-control'");?> 27 | 28 | 29 | ldap->version; ?> 30 | ldap->version, "class='form-control'");?> 31 | 32 | 33 | ldap->bindDN; ?> 34 | ldap->bindDN, "class='form-control'");?> 35 | 36 | 37 | ldap->password; ?> 38 | ldap->bindPWD, "class='form-control'");?> 39 | 40 | 41 | 42 | 43 | 44 | 测试连接 45 | 46 | 47 | 48 | ldap->baseDN; ?> 49 | ldap->baseDN, "class='form-control'");?> 50 | 51 | 52 | ldap->filter; ?> 53 | ldap->searchFilter, "class='form-control'");?> 54 | 55 | 56 | ldap->attributes; ?> 57 | ldap->uid, "class='form-control'");?> 58 | 59 | 60 | ldap->mail; ?> 61 | ldap->mail, "class='form-control'");?> 62 | 63 | 64 | ldap->name; ?> 65 | ldap->name, "class='form-control'");?> 66 | 67 | 68 | 69 | 70 | ldap->save); 72 | echo html::commonButton($lang->ldap->sync, 'onclick="javascript:sync()"'); 73 | ?> 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /ldap/module/ldap/control.php: -------------------------------------------------------------------------------- 1 | 8 | * @package user 9 | * @version $Id: control.php 5005 2013-07-03 08:39:11Z chencongzhi520@gmail.com $ 10 | * @link http://www.zentao.net 11 | */ 12 | class ldap extends control 13 | { 14 | public $referer; 15 | 16 | /** 17 | * Construct 18 | * 19 | * @access public 20 | * @return void 21 | */ 22 | public function __construct() 23 | { 24 | parent::__construct(); 25 | } 26 | 27 | public function index() 28 | { 29 | $this->locate(inlink('setting')); 30 | } 31 | 32 | public function setting() 33 | { 34 | $this->view->title = $this->lang->ldap->common . $this->lang->colon . $this->lang->ldap->setting; 35 | $this->view->position[] = html::a(inlink('index'), $this->lang->ldap->common); 36 | $this->view->position[] = $this->lang->ldap->setting; 37 | 38 | $this->display(); 39 | } 40 | 41 | public function save() 42 | { 43 | if (!empty($_POST)) { 44 | $this->config->ldap->host = $this->post->ldapHost; 45 | $this->config->ldap->version = $this->post->ldapVersion; 46 | $this->config->ldap->bindDN = $this->post->ldapBindDN; 47 | $this->config->ldap->bindPWD = $this->post->ldapPassword; 48 | $this->config->ldap->baseDN = $this->post->ldapBaseDN; 49 | $this->config->ldap->searchFilter = $this->post->ldapFilter; 50 | $this->config->ldap->uid = $this->post->ldapAttr; 51 | $this->config->ldap->mail = $this->post->ldapMail; 52 | $this->config->ldap->name = $this->post->ldapName; 53 | 54 | // 此处我们把配置写入配置文件 55 | $ldapConfig = "ldap = new stdclass();\n" 57 | ."\$config->ldap->host = '{$this->post->ldapHost}';\n" 58 | ."\$config->ldap->version = '{$this->post->ldapVersion}';\n" 59 | ."\$config->ldap->bindDN = '{$this->post->ldapBindDN}';\n" 60 | ."\$config->ldap->bindPWD = '{$this->post->ldapPassword}';\n" 61 | ."\$config->ldap->baseDN = '{$this->post->ldapBaseDN}';\n" 62 | ."\$config->ldap->searchFilter = '{$this->post->ldapFilter}';\n" 63 | ."\$config->ldap->uid = '{$this->post->ldapAttr}';\n" 64 | ."\$config->ldap->mail = '{$this->post->ldapMail}';\n" 65 | ."\$config->ldap->name = '{$this->post->ldapName}';\n"; 66 | 67 | $file = fopen("config.php", "w") or die("Unable to open file!"); 68 | fwrite($file, $ldapConfig); 69 | fclose($file); 70 | 71 | $this->locate(inlink('setting')); 72 | } 73 | } 74 | 75 | public function test() 76 | { 77 | echo $this->ldap->identify($this->post->host, $this->post->dn, $this->post->pwd); 78 | } 79 | 80 | public function sync() 81 | { 82 | $users = $this->ldap->sync2db($this->config->ldap); 83 | echo $users; 84 | } 85 | 86 | public function identify($user, $pwd) 87 | { 88 | $ret = false; 89 | $account = $this->config->ldap->uid.'='.$user.','.$this->config->ldap->baseDN; 90 | if (0 == strcmp('Success', $this->ldap->identify($this->config->ldap->host, $account, $pwd))) { 91 | $ret = true; 92 | } 93 | 94 | echo $ret; 95 | } 96 | } 97 | --------------------------------------------------------------------------------