public function ldapSync($row)
 {
     $ldap_query = $this->ldap->getLDAPParam('eduid') . '=' . $row['ldap_id'];
     $userSync = $this->getLdapUserSync();
     $attributes = $userSync->getSyncAttributes($this->ldap);
     $time_start = microtime(true);
     $lri = false;
     foreach (split(';', $this->ldap->getLDAPParam('people_dn')) as $PeopleDn) {
         $lri = $this->ldap->search($PeopleDn, $ldap_query, LDAP::SCOPE_ONELEVEL, $attributes);
         if (count($lri) == 1 && $lri != false) {
             break;
         }
     }
     $time_end = microtime(true);
     $this->ldapTime += $time_end - $time_start;
     if ($this->ldap->getErrno() === LDAP::ERR_SUCCESS && $lri) {
         $user = new User($row);
         $modified = false;
         if (count($lri) == 1) {
             $lr = $lri->current();
             $modified = $userSync->sync($user, $lr);
             if ($row['ldap_uid'] != $lr->getLogin()) {
                 $this->getLdapUserManager()->updateLdapUid($user, $lr->getLogin());
             }
         } elseif (count($lri) == 0) {
             // User not found in LDAP directory
             $modified = true;
             $user->setStatus('S');
             $user->setUnixStatus('D');
         }
         if ($modified) {
             $this->getUserManager()->updateDb($user);
         }
     }
 }
示例#2
0
 /** @dataProvider bindingWithPasswordProvider */
 public function testThatBindingWithAddedSlashesFailsWorks($user, $password, $filter)
 {
     $newpassword = addslashes($password);
     $ldap = new LDAP('ldap://cn=Manager,dc=example,dc=com:insecure@127.0.0.1:3890/dc=example,dc=com');
     if ($newpassword === $password) {
         $this->assertTrue($ldap->authenticate($user, $password, $filter));
     } else {
         $this->assertFalse($ldap->authenticate($user, $newpassword, $filter));
     }
 }
示例#3
0
 /**
  * @static
  * @param $username
  * @param $password
  * @return bool
  */
 public static function checkPassword($username, $password)
 {
     $ldapHost = Configuration::get('ldap_host', false);
     $ldapVersion = Configuration::get('ldap_version', 2);
     $ldapRDNFormat = Configuration::get('ldap_rdn_format', false);
     $ldap = new LDAP();
     $ldap->setHost($ldapHost);
     $ldap->setVersion($ldapVersion);
     $ldap->setRDNFormat($ldapRDNFormat);
     return $ldap->checkPassword($username, $password);
 }
示例#4
0
 /**
  * Get an instance of the LDAP object
  *
  * @return LDAP
  */
 protected function getLdap()
 {
     $now = time();
     if ($this->connectionLastUsed && $this->ldap && $now - $this->connectionLastUsed > self::RESET_TIMEOUT) {
         $this->ldap->close();
         $this->ldap = null;
     }
     $this->connectionLastUsed = $now;
     if (!empty($this->ldap)) {
         return $this->ldap;
     }
     $this->ldap = new Ldap($this->ldapUrl);
     $this->ldap->setOption(Ldap::OPT_NETWORK_TIMEOUT, 10);
     $this->ldap->bind($this->ldapBindUser, $this->ldapBindPassword);
     return $this->ldap;
 }
示例#5
0
 function &getSingleton()
 {
     if (self::$instance == NULL) {
         self::$instance = new RBAC();
     }
     return self::$instance;
 }
 private function getMatchingUsers(Search_SearchQuery $query, $limit)
 {
     $users = array();
     $ldap_result_iterator = $this->ldap->searchUser($query->getWords());
     if ($ldap_result_iterator->count() > 0) {
         $ldap_result_iterator->count();
         $ldap_result_iterator->seek($query->getOffset());
         while ($ldap_result_iterator->valid() && $limit > 0) {
             $ldap_result = $ldap_result_iterator->current();
             $users[] = $this->getUserPresenter($ldap_result);
             $ldap_result_iterator->next();
             $limit--;
         }
     }
     return $users;
 }
 private function rename(PFUser $old_user, PFUser $new_user)
 {
     $new_dn = $this->getUserDN($new_user);
     $old_dn = $this->getUserDN($old_user);
     if ($new_dn != $old_dn) {
         $this->ldap->renameUser($old_dn, $this->getUserRDN($new_user));
         $this->updateUserLdapId($new_user);
     }
 }
示例#8
0
 public function index()
 {
     $this->id = "content";
     $this->template = "ldap/list.tpl";
     $this->layout = "common/layout";
     $request = Registry::get('request');
     $db = Registry::get('db');
     $lang = Registry::get('language');
     $ldap = new LDAP($this->request->post['ldap_host'], $this->request->post['ldap_bind_dn'], $this->request->post['ldap_bind_pw']);
     if ($ldap->is_bind_ok()) {
         print "<span class=\"text-success\">" . $lang->data['text_connection_ok'] . "</span> ";
         $query = $ldap->query($this->request->post['ldap_base_dn'], "(mail=*)", array());
         if ($query->num_rows < 1) {
             print "<span class=\"text-error\">" . $lang->data['text_not_found_any_email_address'] . "</span> ";
         }
     } else {
         print "<span class=\"text-error\">" . $lang->data['text_connection_failed'] . "</span> ";
     }
 }
示例#9
0
文件: ldap.php 项目: bencochran/yeti
 private static function get_connection()
 {
     if (empty(self::$connection)) {
         if (!(self::$connection = ldap_connect('your.ldap.server.com', 389))) {
             return false;
         }
         ldap_set_option(self::$connection, LDAP_OPT_PROTOCOL_VERSION, 3);
         if (!ldap_bind(self::$connection)) {
             return false;
         }
     }
     return self::$connection;
 }
示例#10
0
 /**
  * Format LDAP url for apache mod_ldap
  *
  * Combine ldap parameter 'sys_ldap_server' and 'sys_ldap_dn' to
  * generate an Apache mod_authnz_ldap compatible url
  *
  * @see http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html#authldapurl
  *
  * @return String
  */
 public function getLDAPServersUrl()
 {
     if ($this->ldapUrl === null) {
         $serverList = explode(',', $this->ldap->getLDAPParam('server'));
         $firstIsLdaps = false;
         foreach ($serverList as $k => $server) {
             $server = strtolower(trim($server));
             if ($k == 0 && strpos($server, 'ldaps://') === 0) {
                 $firstIsLdaps = true;
             }
             $server = str_replace('ldap://', '', $server);
             $server = str_replace('ldaps://', '', $server);
             $serverList[$k] = $server;
         }
         if ($firstIsLdaps) {
             $this->ldapUrl = 'ldaps://';
         } else {
             $this->ldapUrl = 'ldap://';
         }
         $this->ldapUrl .= implode(' ', $serverList) . '/' . $this->ldap->getLDAPParam('dn');
     }
     return $this->ldapUrl;
 }
示例#11
0
 /**
  * (non-PHPdoc)
  * @see IUserSourceInterface::getUser()
  * 获取用户信息 
  * @since 1.0.0
  */
 public function getUser($userInfo)
 {
     $userName = $userInfo['userName'];
     $password = $userInfo['password'];
     //扩展信息
     $host_str = 'ldap_host';
     $port_str = 'ldap_port';
     $baseCn_str = 'ldap_base_cn';
     $coding_str = 'ldap_coding';
     $department_str = 'ldap_sync_department';
     $syncDepartment = MiniOption::getInstance()->getOptionValue($department_str);
     $ldapHost = MiniOption::getInstance()->getOptionValue($host_str);
     if ($ldapHost === NULL) {
         $this->errorCode = self::LDAP_INIT_ERROR;
         return false;
     }
     $ldapPort = MiniOption::getInstance()->getOptionValue($port_str);
     if ($ldapPort === NULL) {
         $this->errorCode = self::LDAP_INIT_ERROR;
         return false;
     }
     $ldapBaseCn = MiniOption::getInstance()->getOptionValue($baseCn_str);
     if ($ldapBaseCn === NULL) {
         $this->errorCode = self::LDAP_INIT_ERROR;
         return false;
     }
     $ldapCoding = MiniOption::getInstance()->getOptionValue($coding_str);
     if ($ldapCoding === NULL) {
         $ldapCoding = "GB2312";
     }
     if (empty($ldapHost) || empty($ldapPort) || empty($ldapBaseCn)) {
         $this->errorCode = self::LDAP_INIT_ERROR;
         return false;
     }
     //链接LDAP服务器
     $ldap = new LDAP();
     $ldap->setHost($ldapHost);
     $ldap->setFilter($ldapBaseCn);
     $ldap->setCoding($ldapCoding);
     $ldap->setPort($ldapPort);
     $ldap->setSyncDepartment($syncDepartment);
     $result = $ldap->getMember($userName, $password);
     if (!$result) {
         $this->errorCode = MConst::ERROR_PASSWORD_INVALID;
         // 用户名不存在
         return false;
     }
     return $result;
 }
 /**
  * @return String
  */
 public function getProjectAuthentication($row)
 {
     $conf = parent::getProjectAuthentication($row);
     $server_list = $this->escapeStringForApacheConf($this->ldap->getLDAPParam('server'));
     $ldap_dn = $this->escapeStringForApacheConf($this->ldap->getLDAPParam('dn'));
     $ldap_uid = $this->escapeStringForApacheConf($this->ldap->getLDAPParam('uid'));
     $conf .= '    TuleapLdapServers "' . $server_list . '"' . PHP_EOL;
     $conf .= '    TuleapLdapDN "' . $ldap_dn . '"' . PHP_EOL;
     $conf .= '    TuleapLdapUid "' . $ldap_uid . '"' . PHP_EOL;
     if ($this->ldap->getLDAPParam('bind_dn')) {
         $ldap_bind_dn = $this->escapeStringForApacheConf($this->ldap->getLDAPParam('bind_dn'));
         $ldap_bind_passwd = $this->escapeStringForApacheConf($this->ldap->getLDAPParam('bind_dn'));
         $conf .= '    TuleapLdapBindDN "' . $ldap_bind_dn . '"' . PHP_EOL;
         $conf .= '    TuleapLdapBindPassword "' . $ldap_bind_passwd . '"' . PHP_EOL;
     }
     return $conf;
 }
 /**
  * @return boolean
  * @param string $user
  * @param string $password
  */
 private function _validateSMB4($user, $password, $onlyCheckIsExistsUser = false)
 {
     //Conexao com o servidor...
     $connection = $this->_ldap->connect(Config::factory()->getParam('extra.ldap.samba4.host'), Config::factory()->getParam('extra.ldap.samba4.port'), Config::factory()->getParam('extra.ldap.samba4.version'));
     //Autenticar o Administrador...
     $this->_ldap->bind($connection, Config::factory()->getParam('extra.ldap.samba4.user'), Config::factory()->getParam('extra.ldap.samba4.password'));
     //Recuperar DN do usuario para autenticacao...
     $user = $this->_ldap->search($connection, Config::factory()->getParam('extra.ldap.samba4.dn'), Config::factory()->getParam('extra.ldap.samba4.filter') . $user, array('dn'));
     //Verificar se o usuario existe...
     if (count($user) > 1) {
         if ($onlyCheckIsExistsUser) {
             return 4;
         }
     } else {
         return 5;
     }
     //Autenticar o Usuario...
     $status = $this->_ldap->bind($connection, $user[0]['dn'], $password);
     //Fechar Conexao...
     $this->_ldap->close($connection);
     return $status;
 }
示例#14
0
文件: admin.php 项目: bencochran/yeti
 public static function check_all_users($exclude_ids = array())
 {
     $query = "SELECT * FROM xbt_users WHERE is_activated = 1 AND admin = 0 AND email != '" . CONTACT_EMAIL . "'";
     if (!empty($excude_ids)) {
         $query .= " AND uid NOT IN ('" . implode("'. '", $exclude_ids) . "')";
     }
     if ($results = DB::query($query)) {
         $users = array();
         while ($result = mysql_fetch_array($results)) {
             $user = new User($result);
             array_push($users, $user);
         }
     } else {
         return false;
     }
     $invalid_users = array();
     foreach ($users as $user) {
         if (!LDAP::check_address($user->email)) {
             array_push($invalid_users, $user);
         }
     }
     return $invalid_users;
 }
示例#15
0
文件: Exception.php 项目: rkeplin/zf2
 /**
  * @deprecated not necessary any more - will be removed
  * @param \Zend\Ldap\Ldap $ldap A \Zend\Ldap\Ldap object
  * @return int The current error code for the resource
  */
 public static function getLDAPCode(LDAP $ldap = null)
 {
     if ($ldap !== null) {
         return $ldap->getLastErrorCode();
     }
     return 0;
 }
                                     $validate->addError('Your registration process is complete. Please wait/ask for approval from any authority.');
                                 }
                             }
                         }
                     }
                 }
             }
         }
     } else {
         // Not valid login
         Session::destroy();
         $validate->addError('Wrong Username or Password');
     }
 } else {
     $email = Input::get('a') . '@student.nits.ac.in';
     $ldap = new LDAP();
     if ($ldap->Auth($email, Input::get('b')) && Token::check(Input::get('token'))) {
         // verify using LDAP and check token!!
         if (Session::get('type') === 'faculty') {
             //check who logged in, differentiating between student and faculty members' login!
             //case for teacher's or other staff's login
             $validate->addError("Please <a href='http://mis.nits.ac.in'>CLICK HERE</a> for faculty login area.");
             Session::destroy();
         } else {
             if (Session::get('type') === 'student') {
                 // case for students' login!!
                 $student = new Student();
                 $v = $student->validateLogin();
                 if ($v == 1) {
                     $cookiename = 'sisnootp' . $student->getMobile();
                     if (1) {
示例#17
0
文件: login.php 项目: jotttt/auth
 */
//$pattern = '/^[a-zA-Z]{1,25}$/';
$authok = false;
// default
$p = new stdClass();
$p->uname = vp('uname', 32);
$p->secret = $_POST['secret'];
// Roman'i juhtum
//$p->lang = vp('lang', 2);
if (!(strlen($p->uname) >= 5 && strlen($p->secret) >= PASSWORD_MIN_LEN)) {
    // FS#69
    // $t->errors[ERROR][] = 'L001 ' . $l->txt_err_credientials;
    $t->errors[ERROR][] = 'L001 ' . $l->txt_err_authentication;
    // show_login_page($t, $o);
}
$ad = new LDAP();
// AD objekt
$ad->debug = $w->debug;
if (!$ad->connect()) {
    $t->errors[ERROR][] = 'L002 ' . $l->txt_err_ldap_connect;
}
if (!$ad->bind($p->uname, $p->secret)) {
    // create a syslog entry
    syslog(LOG_NOTICE, sprintf("AD bind failed. user: %s remote_addr: %s method: %s token: %s", $p->uname, $w->remote_addr, $auth_method, $o->token));
    // AD bind failis. Nüüd proovime lokaalse kasutajaga.
    require INC_DIR . '/local.php';
    if ($w->allow_local) {
        if (!isset($d)) {
            $d = new DATABASE();
            // lokaalsed kasutajad paiknevad DB's. Siiani pole DB'd vaja läinud.
            $d->debug = $w->debug;
示例#18
0
 public function import_from_filter($filter_)
 {
     $filter = LDAP::join_filters(array($this->preferences['filter'], $filter_), '&');
     $configLDAP = $this->get_usergroup_ldap_config();
     $ldap = new LDAP($configLDAP);
     $sr = $ldap->search($filter, array_values($this->preferences['match']));
     if ($sr === false) {
         Logger::error('main', 'UserGroupDB::ldap::import_from_filter search failed');
         return NULL;
     }
     $result = array();
     $infos = $ldap->get_entries($sr);
     if (!is_array($infos)) {
         return $result;
     }
     foreach ($infos as $dn => $info) {
         $g = $this->generateUsersGroupFromRow($info, $dn, $this->preferences['match']);
         if (!is_object($g)) {
             continue;
         }
         $result[$dn] = $g;
     }
     return $result;
 }
示例#19
0
<?php

require_once 'config.php';
require_once 'php/LDAP.class.php';
$LDAP = new LDAP($ldap_url);
$usercn = $_GET['cn'];
$LDAP->connect($pw_user, base64_decode($pw_pass))->addGraceLogins($usercn)->disconnect();
示例#20
0
 public function get_accounts_in_domain($domain = '')
 {
     $ldap_type = '';
     $ldap_host = LDAP_HOST;
     $ldap_base_dn = LDAP_BASE_DN;
     $ldap_helper_dn = LDAP_HELPER_DN;
     $ldap_helper_password = LDAP_HELPER_PASSWORD;
     if (ENABLE_SAAS == 1) {
         $a = $this->model_saas_ldap->get_ldap_params_by_email("aaa@" . $domain);
         if (count($a) >= 5) {
             $ldap_type = $a[0];
             $ldap_host = $a[1];
             $ldap_base_dn = $a[2];
             $ldap_helper_dn = $a[3];
             $ldap_helper_password = $a[4];
         }
     }
     list($ldap_mail_attr, $ldap_account_objectclass, $ldap_distributionlist_attr, $ldap_distributionlist_objectclass) = get_ldap_attribute_names($ldap_type);
     if ($ldap_host == '' || $ldap_helper_password == '') {
         return array();
     }
     $ldap = new LDAP($ldap_host, $ldap_helper_dn, $ldap_helper_password);
     if ($ldap->is_bind_ok()) {
         $query = $ldap->query($ldap_base_dn, "(&(objectClass={$ldap_account_objectclass})({$ldap_mail_attr}=*@{$domain}))", array($ldap_mail_attr));
         if ($query->num_rows > 0) {
             asort($query->rows);
             return $query->rows;
         }
     }
     return array();
 }
 protected function getCleanUpManager()
 {
     return new LDAP_CleanUpManager($this->ldap->getLDAPParam('daily_sync_retention_period'));
 }
示例#22
0
if ($Access) {
    //********************************************************************************************************************************************************
    echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "?menu_marker=si_staffedit\" >";
    //-------------------------------------------------------------------------------------------------
    @($Name = $_POST['name'] ? $_POST['name'] : ($_GET['name'] ? $_GET['name'] : $SEARCH_DEFAULT_VALUE));
    $BadSymbols = array("[", "]", "{", "}", "<", ">", "(", ")", ".", ",", ";", ":", "!", "?", "&", "#", "@", "%", "^", "+", "|", "\\", "/", "~", "\$");
    $Name = str_replace($BadSymbols, "", $Name);
    @($dn = $_GET['dn'] ? $_GET['dn'] : $_POST['dn']);
    @($_GET['sortcolumn'] = $_GET['sortcolumn'] ? $_GET['sortcolumn'] : "ФИО");
    @($_GET['sorttype'] = $_GET['sorttype'] ? $_GET['sorttype'] : "ASC");
    //-------------------------------------------------------------------------------------------------
    //Обработка формы
    //-------------------------------------------------------------------------------------------------
    if (@$_GET['FormSend']) {
        $ldap = new LDAP($LDAPServer, $LDAP_WRITE_USER, $LDAP_WRITE_PASSWORD);
        if ($RE_MAIL && !preg_match("/" . $RE_MAIL . "/", $_POST[$LDAP_MAIL_FIELD])) {
            $Errors[$LDAP_MAIL_FIELD] = $_POST[$LDAP_MAIL_FIELD];
        } else {
            $info[$LDAP_MAIL_FIELD] = $_POST[$LDAP_MAIL_FIELD];
        }
        if ($RE_OTHER_TELEPHONE && !preg_match("/" . $RE_OTHER_TELEPHONE . "/", $_POST[$LDAP_INTERNAL_PHONE_FIELD])) {
            $Errors[$LDAP_INTERNAL_PHONE_FIELD] = $_POST[$LDAP_INTERNAL_PHONE_FIELD];
        } else {
            $info[$LDAP_INTERNAL_PHONE_FIELD] = $_POST[$LDAP_INTERNAL_PHONE_FIELD];
        }
        if ($RE_TELEPHONE_NUMBER && !preg_match("/" . $RE_TELEPHONE_NUMBER . "/", $_POST[$LDAP_CITY_PHONE_FIELD])) {
            $Errors[$LDAP_CITY_PHONE_FIELD] = $_POST[$LDAP_CITY_PHONE_FIELD];
        } else {
            $info[$LDAP_CITY_PHONE_FIELD] = $_POST[$LDAP_CITY_PHONE_FIELD];
        }
示例#23
0
         $ldap_password = $_POST["ldap_password"];
     } else {
         print "<p class=\"error\"><strong>Error:</strong> There's no LDAP password input.</p>\n";
         HTMLFooter();
         die;
     }
     if (isset($_POST["ldap_base"]) && $_POST["ldap_base"] != "") {
         $ldap_base = $_POST["ldap_base"];
     } else {
         print "<p class=\"error\"><strong>Error:</strong> There's no distinguished name input for LDAP.</p>\n";
         HTMLFooter();
         die;
     }
     // check LDAP connection
     require_once PMF_ROOT_DIR . "/inc/ldap.php";
     $ldap = new LDAP($ldap_server, $ldap_port, $ldap_user, $ldap_base);
     if (!$ldap) {
         print "<p class=\"error\"><strong>LDAP Error:</strong> " . $ldap->error() . "</p>\n";
         HTMLFooter();
         die;
     }
 }
 // check user entries
 if (isset($_POST["password"]) && $_POST["password"] != "") {
     $password = $_POST["password"];
 } else {
     print "<p class=\"error\"><strong>Error:</strong> There's no password for the administrator's account. Please set your password.</p>\n";
     HTMLFooter();
     die;
 }
 if (isset($_POST["password_retyped"]) && $_POST["password_retyped"] != "") {
示例#24
0
 public function count_emails($s = '')
 {
     $count = 0;
     if (strlen($s) < 1) {
         return $count;
     }
     if (ENABLE_LDAP_AUTH == 1) {
         $ldap = new LDAP(LDAP_HOST, LDAP_HELPER_DN, LDAP_HELPER_PASSWORD);
         if ($ldap->is_bind_ok()) {
             $query = $ldap->query(LDAP_BASE_DN, "(&(objectClass=" . LDAP_ACCOUNT_OBJECTCLASS . ")(" . LDAP_MAIL_ATTR . "=" . $s . "*))", array());
             if (isset($query->rows)) {
                 $count = $query->num_rows;
             }
         }
     }
     $query = $this->db->query("SELECT COUNT(*) AS num FROM `" . TABLE_EMAIL . "` WHERE email LIKE ?", array($s . "%"));
     $count += $query->row['num'];
     return $count;
 }
 public static function loadElements($type_, $group_)
 {
     Logger::debug('main', "Abstract_Liaison_activedirectory::loadElements ({$type_},{$group_})");
     $userGroupDB = UserGroupDB::getInstance();
     $userGroupDB_activedirectory = new UserGroupDB_activedirectory();
     $use_child_group = false;
     $userGroupDB_activedirectory_preferences = $userGroupDB_activedirectory->preferences;
     if (array_key_exists('use_child_group', $userGroupDB_activedirectory_preferences)) {
         if ($userGroupDB_activedirectory_preferences['use_child_group'] == 1 || $userGroupDB_activedirectory_preferences['use_child_group'] == '1') {
             $use_child_group = true;
         }
     }
     $group = $userGroupDB->import($group_);
     if (!is_object($group)) {
         Logger::error('main', "Abstract_Liaison_activedirectory::loadElements load group ({$group_}) failed");
         return NULL;
     }
     if ($group->type != 'static') {
         return NULL;
     }
     $elements = array();
     $id_ = $group->id;
     $userDBAD2 = new UserDB_activedirectory();
     $userDBAD = UserDB::getInstance();
     if (get_class($userDBAD) == get_class($userDBAD2)) {
         $userDBAD = $userDBAD2;
         // for cache
     }
     $config_ldap = $userDBAD->makeLDAPconfig();
     if (isset($group->extras) && is_array($group->extras) && isset($group->extras['member'])) {
         $buf = $group->extras;
     } else {
         $config_ldap['match'] = array('description' => 'description', 'name' => 'name', 'member' => 'member');
         if (str_endswith(strtolower($id_), strtolower($config_ldap['suffix'])) === true) {
             $id2 = substr($id_, 0, -1 * strlen($config_ldap['suffix']) - 1);
         } else {
             $id2 = $id_;
         }
         $expl = explode(',', $id2, 2);
         if (count($expl) < 2) {
             Logger::error('main', "Abstract_Liaison_activedirectory::loadElements({$type_},{$group_}) count(expl) != 2 (count=" . count($expl) . ")(id2=" . $id2 . ")");
             return NULL;
         }
         $config_ldap['userbranch'] = $expl[1];
         $buf = array();
         $buf['id'] = $id_;
         $ldap = new LDAP($config_ldap);
         $sr = $ldap->search($expl[0], array_keys($config_ldap['match']));
         if ($sr === false) {
             Logger::error('main', "Abstract_Liaison_activedirectory::loadElements search failed for ({$id_})");
             return NULL;
         }
         $infos = $ldap->get_entries($sr);
         $keys = array_keys($infos);
         $dn = $keys[0];
         $info = $infos[$dn];
         foreach ($config_ldap['match'] as $attribut => $match_ldap) {
             if (isset($info[$match_ldap])) {
                 unset($info[$match_ldap]['count']);
                 $buf[$attribut] = $info[$match_ldap];
             }
         }
     }
     if (isset($buf['member']) && is_array($buf['member'])) {
         foreach ($buf['member'] as $member) {
             $u = $userDBAD->importFromDN($member);
             if (is_object($u)) {
                 if ($u->hasAttribute('objectclass')) {
                     if (in_array('user', $u->getAttribute('objectclass'))) {
                         $l = new Liaison($u->getAttribute('login'), $group_);
                         $elements[$l->element] = $l;
                     } else {
                         if (in_array('group', $u->getAttribute('objectclass')) && $use_child_group == true) {
                             $ret1 = self::loadElements($type_, 'static_' . $member);
                             if (is_array($ret1)) {
                                 foreach ($ret1 as $element1 => $liaison1) {
                                     $elements[$element1] = $liaison1;
                                 }
                             }
                         }
                     }
                 } else {
                     $l = new Liaison($u->getAttribute('login'), $group_);
                     $elements[$l->element] = $l;
                 }
             }
         }
     }
     return $elements;
 }
示例#26
0
文件: staff.php 项目: smale3/eight
	public static function getCompanyNameLdapFilter()
		{
			$bookmark_name=LDAP::escapeFilterValue($GLOBALS['BOOKMARK_NAME']);
			$bookmark_attr=$GLOBALS['bookmark_attr'];

			if(($bookmark_name=="*") || ( (@$_POST['form_sent']) && (@!$GLOBALS['only_bookmark']) ) )
				{

				foreach($GLOBALS['BOOKMARK_NAMES'] AS $key=>$value)
					{		
					$bookmark_names=LDAP::escapeFilterValue(array_keys($value));		

					if($GLOBALS['BOOKMARK_NAME_EXACT_FIT'][$bookmark_attr])
						$filters[]="|(".$key."=".implode(")(".$key."=", $bookmark_names).")";
					else
						{
						$filter="|(".$key."=*".implode("*)(".$key."=*", $bookmark_names)."*)";
						$filters[]=str_replace("***", "*", $filter);
						}
					}
				$filter="(&(".implode(")(", $filters)."))";
				}
			else
				{
				if($GLOBALS['BOOKMARK_NAME_EXACT_FIT'][$bookmark_attr])
					$filter="(".$bookmark_attr."=".$bookmark_name.")";
				else
					$filter="(".$bookmark_attr."=*".$bookmark_name."*)";
				}

		//echo $filter;
		return $filter;
		}
示例#27
0
<?php

require_once '../libs/MPDF60/mpdf.php';
require_once '../config.php';
require_once "../libs/forms.php";
require_once "../libs/staff.php";
require_once "../libs/phones.php";
require_once "../libs/pdf.php";
if ($ENABLE_PDF_EXPORT) {
    Application::makeLdapConfigAttrLowercase();
    $menu_marker = "si_export_pdf_alphabet";
    @($BOOKMARK_NAME = $_POST['bookmark_name'] ? $_POST['bookmark_name'] : ($_GET['bookmark_name'] ? $_GET['bookmark_name'] : current(array_keys($BOOKMARK_NAMES[current(array_keys($BOOKMARK_NAMES))]))));
    @($bookmark_attr = $_POST['bookmark_attr'] ? $_POST['bookmark_attr'] : ($_GET['bookmark_attr'] ? $_GET['bookmark_attr'] : current(array_keys($BOOKMARK_NAMES))));
    $html .= PDF::get_pdf_head();
    $html .= "\n\t<table cellpadding='0' border='0' cellspacing='0' class='staff'>\n\t";
    $ldap = new LDAP($LDAPServer, $LDAPUser, $LDAPPassword);
    $CompanyNameLdapFilter = Application::getCompanyNameLdapFilter();
    if ($USE_DISPLAY_NAME) {
        $DisplayName = $DISPLAY_NAME_FIELD;
    } else {
        $DisplayName = $LDAP_NAME_FIELD;
    }
    $Staff = $ldap->getArray($OU, "(&" . $CompanyNameLdapFilter . "(" . $LDAP_CN_FIELD . "=*)" . $DIS_USERS_COND . ")", array($DisplayName, $LDAP_MAIL_FIELD, $LDAP_INTERNAL_PHONE_FIELD, $LDAP_CITY_PHONE_FIELD, $LDAP_BIRTH_FIELD, $LDAP_TITLE_FIELD, $LDAP_DEPARTMENT_FIELD, $LDAP_CELL_PHONE_FIELD), array($DisplayName, array('ad_def_full_name')));
    if (is_array($Staff)) {
        $sizeof = sizeof($Staff[$DisplayName]);
        for ($i = 0; $i < $sizeof; $i++) {
            if (!($PDF_HIDE_STAFF_WITHOUT_PHONES && !$Staff[$LDAP_INTERNAL_PHONE_FIELD][$i] && !$Staff[$HIDE_CITY_PHONE_FIELD][$i] && !$Staff[$LDAP_CELL_PHONE_FIELD][$i])) {
                $FIO = explode(" ", $Staff[$DisplayName][$i]);
                $Surname = $Staff[$DisplayName][$i];
                $Name = "";
                $Patronymic = "";
示例#28
0
 public static function prefsIsValid($prefs_, &$log = array())
 {
     $config_AD = $prefs_->get('UserDB', 'activedirectory');
     $minimum_keys = array('hosts', 'domain', 'login', 'password', 'domain');
     foreach ($minimum_keys as $m_key) {
         if (!isset($config_AD[$m_key])) {
             $log['config_AD has key ' . $m_key] = false;
             return false;
         }
         // 			else {
         // 				$log['config_AD has key '.$m_key] = true;
         // 			}
     }
     $ldap_suffix = domain2suffix($config_AD['domain']);
     if (!$ldap_suffix) {
         $log['domain2suffix for \'' . $config_AD['domain'] . '\''] = false;
         return false;
     }
     $log['domain2suffix for \'' . $config_AD['domain'] . '\''] = true;
     if (!UserDB_ldap::isValidDN($ldap_suffix)) {
         $log['isValidDN for \'' . $ldap_suffix . '\''] = false;
         return false;
     }
     $log['isValidDN for \'' . $ldap_suffix . '\''] = true;
     $config_ldap = self::makeLDAPconfig($config_AD);
     $LDAP2 = new LDAP($config_ldap);
     $ret = $LDAP2->connect($log);
     if ($ret === false) {
         // 			$log['LDAP connect to \''.$config_ldap['host'].'\''] = false;
         return false;
     }
     // 		$log['Connect to AD'] = true;
     $LDAP2->disconnect();
     return true;
 }
示例#29
0
<?php

require_once dirname(__FILE__) . '/../../model/Ldap.php';
session_start();
header('content-type: application/json');
$uid = $_SESSION['login'];
$dado = $_REQUEST['dado'];
$tipo = $_REQUEST['tipo'];
$ldap = new LDAP();
if ($tipo == 0) {
    $ldap->modificar("apelido", "uid={$uid},ou=teste,ou=usuarios,dc=ufvjm,dc=edu,dc=br", $dado);
} else {
    if ($tipo == 1) {
        $ldap->modificar("email_alternativo", "uid={$uid},ou=teste,ou=usuarios,dc=ufvjm,dc=edu,dc=br", $dado);
    } else {
        if ($tipo == 2) {
            $ldap->modificar("telefone", "uid={$uid},ou=teste,ou=usuarios,dc=ufvjm,dc=edu,dc=br", $dado);
        } else {
            if ($tipo == 3) {
                $ldap->modificar("senha", "uid={$uid},ou=teste,ou=usuarios,dc=ufvjm,dc=edu,dc=br", $dado);
            } else {
                echo json_encode(false);
            }
        }
    }
}
echo json_encode(true);
示例#30
0
<?php 
$ldap = new LDAP($LDAPServer, $LDAPUser, $LDAPPassword);
//Соединяемся с сервером
// Определяем какой атрибут будем использовать в качестве формирования ФИО сотрудника
//-------------------------------------------------------------------------------------------------------------
if ($USE_DISPLAY_NAME) {
    $DisplayName = $DISPLAY_NAME_FIELD;
} else {
    $DisplayName = $LDAP_NAME_FIELD;
}
//-------------------------------------------------------------------------------------------------------------
// Делаем фильтр для выборки сотрудников нужных компаний
//-------------------------------------------------------------------------------------------------------------
$CompanyNameLdapFilter = Application::getCompanyNameLdapFilter();
//-------------------------------------------------------------------------------------------------------------
$LdapListAttrs = array($LDAP_DISTINGUISHEDNAME_FIELD, $DisplayName, $LDAP_MAIL_FIELD, $LDAP_INTERNAL_PHONE_FIELD, $LDAP_CITY_PHONE_FIELD, $LDAP_ST_DATE_VACATION_FIELD, $LDAP_END_DATE_VACATION_FIELD, $LDAP_TITLE_FIELD, $LDAP_DEPARTMENT_FIELD, $LDAP_CELL_PHONE_FIELD, $LDAP_MANAGER_FIELD, $LDAP_COMPUTER_FIELD, $LDAP_DEPUTY_FIELD, $LDAP_GUID_FIELD, $LDAP_CREATED_DATE_FIELD, $LDAP_USERPRINCIPALNAME_FIELD);
//Получаем правильно отсортированных сотрудников с необходимыми атрибутами LDAP
$Staff = $ldap->getArray($OU, "(&" . $CompanyNameLdapFilter . "(" . $LDAP_CREATED_DATE_FIELD . ">=" . date('Ymd', time() - $NEW_USERS_NUM_DAYS * 24 * 60 * 60) . "000000.0Z)(" . $LDAP_CN_FIELD . "=*)" . $DIS_USERS_COND . ")", $LdapListAttrs, array($LDAP_CREATED_DATE_FIELD), 'DESC');
if (is_array($Staff)) {
    // Шапка таблицы
    //-------------------------------------------------------------------------------------------------------------
    echo "\n\t\t<table class=\"sqltable\" cellpadding=\"4\">\n\t\t<th><div>ФИО</div></th>\n\t\t<th><div>Должность</div></th>\n\t\t<th><div>E-mail</div></th>\n\t\t<th><div>" . $L->l('intrenal_phone') . "</div></th>\n\t\t";
    if (!$HIDE_CITY_PHONE_FIELD) {
        echo "<th><div>" . $L->l('city_phone') . "</div></th>";
    }
    if (!$HIDE_CELL_PHONE_FIELD) {
        echo "<th><div>" . $L->l('cell_phone') . "</div></th>";
    }
    if (Staff::showComputerName($Login)) {
        //Если сотрудник является администратором справочника