Помощь с БД в Active Directory

evgeniyjunior

Новичок
БД хранится в АД. Есть php файл который к ней прикручен, внутри все данные получаются с помощью queries. Надо чтобы бралась часть получаемой информации и выводилась соотвественно на сайт. Желательно прикрутка к wordpress через плагин. Потому что информация с БД на сайте будет в разных местах выводится и каждый раз разная. (например дни рождения и отпуска сотрудников в календарь, а имя и фотография нового сотрудника в личном сообщении или сайтбаре).
Если таковой плагин уже имеется, дайте знать.
PS: идеально было бы drag and drop как-то закидывать выборучную инфу из БД на сайт.
Любые идеи привествуются :)

Обновление 22 февраля 2016:
Нвстроил доступ к AD, через плагин из Wordpress.

Дамп (ADI test in Wordpress plagin) выводит это при тесте (все поля изменены на фейковые):
https://gist.github.com/djrnz/07b28c156af730bda1e4

Дорожка меня ведет к ООП и такой вещице как наследование классов... Штудирую ООП пока...
Вот пока только наброски... Думаю создать класс человека и вписывать все что беру из АД. И потом как-то выводить то что мне нужно уже на страницу... Пока не знаю как... Кучу туториалов смотрю на ютубе :)))

class Person {
const VERSION = 1.00;

public $newhire = "boolean YES/NO";

public $name = "";

public $lastname = "";

public $birhday = "";

public $dayofhire = "";

public $department = "";

public $dayoff = "";

public $vacation = "";


public function __construct() {

}
}

*поля оставил пустыми, т.к. думаю что это еще 100000 раз все изменится... и наверняка не стринг будет, может фунцкия (т.е. метод в ООП... :/).

Вот думаю через GET получать, но ведь это же не то, т.к. пользователь ничего вводит, ведь все идет потоком из AD. Короче сижу думаю... :/

Есть идеи? :)
 
Последнее редактирование:

DIG

Новичок
Партнер клуба
Идея первая: сформулировать вопрос более внятно.
Например так:
1. Хочу что бы данные из базы данных отображались на сайте.
2. Данные хранятся в базе данных <тут надо указать модель (mysq,mssq,oracle, итд)>
3. У меня на сайте wordpress и нужно написать к нему плагин для отображения данных из базы
4...
... Ну примерно в таком духе.

То, что БД у вас в АДу - это хорошо, видимо там ей и место.
php файл у вас, извините, к чему прикручен?
 

DIG

Новичок
Партнер клуба
@michelle, вы телепат? Вроде ТС ни слова о авторизации не сказал. Или я совсем разучился читать между строк :(
 

michelle

Новичок
Лдап это не только авторизация, но и база для АД. С данными оттуда можно работать также как с любой базой.

У нас скрипт берет данные из АД по почтовым эккаунтам для экзима - и где здесь авторизация?
 

AnrDaemon

Продвинутый новичок
LDAP это вообще ТОЛЬКО БД. То, что она повсеместно используется как бэк для авторизации, в частности в AD, это… ну, просто она была для этого предназначена - предоставлять быстрый доступ к связной информации.
С приоритизацией чтения перед записью.
 

evgeniyjunior

Новичок
Настроил доступ к AD, через плагин из Wordpress, который просил плагин LDAP, его тоже подключил.
Теперь другая проблема. Как зацепить все из дампа?

Дамп (ADI test in Wordpress plagin) выводит это при тесте (все поля изменены на фейковые):

AD Integration Logon Test
openLDAP installed
[INFO] method authenticate() called
[INFO] ------------------------------------------
PHP version: 5.5.12
WP version: 4.4.2
ADI version: 1.1.8
OS Info : Windows NT
Web Server : apache2handler
adLDAP ver.: 3.3.2 EXTENDED ()
------------------------------------------
[INFO] LDAP paging: enabled
[NOTICE] username: *user1*
[NOTICE] password: **not shown**
[INFO] Options for adLDAP connection:
- account_suffix: @test.com
- base_dn: DC=test,DC=com
- domain_controllers: ***
- ad_port: ***
- use_tls: *
- network timeout: 5
[INFO] Checking domain controller ports:
[INFO] - **** - OK
[NOTICE] adLDAP object created.
[INFO] max_login_attempts: 0
[NOTICE] trying account suffix "@test.com"
[NOTICE] Authentication successfull for "[email protected]"
[NOTICE] cleaning up failed logins for user "user1"
[DEBUG] ATTRIBUTES TO LOAD: Array
(
[0] => cn
[1] => givenname
[2] => sn
[3] => displayname
[4] => description
[5] => mail
[6] => samaccountname
[7] => userprincipalname
[8] => useraccountcontrol
[9] => telephonenumber
)
[DEBUG] USERINFO[0]:
Array
(
[cn] => Array
(
[count] => 1
[0] => First Last Name
)
[0] => cn
[sn] => Array
(
[count] => 1
[0] => Last Name
)
[1] => sn
[telephonenumber] => Array
(
[count] => 1
[0] => 888-888-888
)
[2] => telephonenumber
[givenname] => Array
(
[count] => 1
[0] => First Name
)
[3] => givenname
[displayname] => Array
(
[count] => 1
[0] => First & Last Name
)
[4] => displayname
[useraccountcontrol] => Array
(
[count] => 1
[0] => some
)
[5] => useraccountcontrol
[objectsid] => Array
(
[count] => 1
[0] => 007
)
[6] => objectsid
[samaccountname] => Array
(
[count] => 1
[0] => user1
)
[7] => samaccountname
[userprincipalname] => Array
(
[count] => 1
[0] => [email protected]
)
[8] => userprincipalname
[mail] => Array
(
[count] => 1
[0] => [email protected]
)
[9] => mail
[count] => 10
[dn] => CN=First & Last Name,OU=Some text,OU=Some text,DC=test,DC=com
)
[ERROR] This user exists in Active Directory, but has not been granted access to this installation of WordPress.
User logged on.

Ресурс размещен на:
https://gist.github.com/djrnz/07b28c156af730bda1e4



PS:
Дорожка меня ведет к ООП и такой вещице как наследование классов... Штудирую ООП пока...
Вот пока только наброски... Думаю создать класс человека и вписывать все что беру из АД. И потом как-то выводить то что мне нужно уже на страницу... Пока не знаю как... Кучу туториалов смотрю на ютубе :)))

class Person {
const VERSION = 1.00;

public $newhire = "boolean YES/NO";

public $name = "";

public $lastname = "";

public $birhday = "";

public $dayofhire = "";

public $department = "";

public $dayoff = "";

public $vacation = "";


public function __construct() {

}
}
PS: PS:
*поля оставил пустыми, т.к. думаю что это еще 100000 раз все изменится... и наверняка не стринг будет, может фунцкия (т.е. метод в ООП... :/).
Вот думаю через GET получать, но ведь это же не то, т.к. пользователь ничего вводит, ведь все идет потоком из AD. Короче сижу думаю... :/
 

AnrDaemon

Продвинутый новичок
Начните с того, что выучите PHP.
Тогда перестанете задавать такие вопросы.
 

AnrDaemon

Продвинутый новичок
Это даже не библиотека, о наличии которой можно не знать.
Работа с массивами - это часть ядра PHP.
Учите язык.
 

evgeniyjunior

Новичок
Это даже не библиотека, о наличии которой можно не знать.
Работа с массивами - это часть ядра PHP.
Учите язык.
Здесь не массив, а надо под каждого юзера объект подогнать, да еще через наследование... И все это надо в ООП. Если бы все так было просто - загнать все в массив... Хотя можно в многомерный массив, у которого будет еще 20 массивов... :) Но кажется мне, что через ооп будет легче :)
Спасибо еще раз за совет - учить язык, я все сижу тут и гадаю, оказывается надо просто выучить язык. :) Вот спросит меня кто-то, как можно денег заработать и где, а я ему - заработай :) Помог? В принципе да :) Ну правда ведь? :) Найден способ излечающий рак! - Ура! Какой? - Надо изучать биологию, химию и найдется :)
 
Последнее редактирование:

evgeniyjunior

Новичок
Это даже не библиотека, о наличии которой можно не знать.
Работа с массивами - это часть ядра PHP.
Учите язык.
Хотя... Вы даже мне помогли, с массивами :) Навели на мысль, так сказать! В свойства объекта можно запихнуть получаемый массив! И тогда не надо прописывать все в каждый объект. Пролучается примерно так: new Person ([и тут массивы]), только вот как сделать чтобы каждый объект создавался автоматом и как в бд уже MySQLi передавать, ведь это будет висеть на сайте, стало быть в в бд загонять... Нельзя же одной сессией через логин в AD выводить... :/
 

AnrDaemon

Продвинутый новичок
Ну вот я на вашей портянке чётко вижу массив. Который вам надо либо как-то разобрать, либо что-то ещё с ним сделать. Смотря по задачам.
Кстати, заверните уже портянку в блок, а то задолбало скролить страницу.
 

evgeniyjunior

Новичок
Ну вот я на вашей портянке чётко вижу массив. Который вам надо либо как-то разобрать, либо что-то ещё с ним сделать. Смотря по задачам.
Кстати, заверните уже портянку в блок, а то задолбало скролить страницу.
если кажется, то точно не легче
я на форумах новичек, так что сорри за флуд
Да, выводится массив. Он и получается, вернее даже многомерный :) Но тут фишка не в этом.
Сам плагин, вернее класс в AD плагине, расширять надо...
Если бы было все так просто с одним только массивом, я бы его давно бы вывел :)
Вот что-то нашел:
PHP:
// in functions.php
class ADIntegrationPluginGetGroups extends ADIntegrationPlugin {
    public function get_user_groups($username) {
        $ad_pass = $this->_decrypt($this->_syncback_global_pwd);
        $this->_adldap = @new adLDAP(
            array(
                "base_dn" => $this->_base_dn,
                "domain_controllers" => explode(';', $this->_domain_controllers),
                "ad_username" => $this->_syncback_global_user.$this->_account_suffix,
                "ad_password" => $ad_pass,
                "ad_port" => $this->_port,
                "use_tls" => $this->_use_tls,
                "network_timeout" => $this->_network_timeout
            )
        );
        return $this->_adldap->user_groups($username);
    }
}
// in template
$ADI = new ADIntegrationPluginGetGroups();
$groups = $ADI->get_user_groups('LOGIN');
//You should have "Global Sync User"
 

evgeniyjunior

Новичок
Расширять чем и зачем?…
чем? примерно так:
PHP:
<?php
class A {
        // здесь уже существующий код для AD. Здесь мноооого кода.
}

class B extends A {
        // а сюда я добаляю, что хочу не одного юзера выводить,  а всех.
}
// Ну собственно вся проблема :)
зачем?
Дело в том, что мне надо сделать так, чтобы из АД выводилось все в wordpress на экран. Чтобы редактировалось и добавлялось все в одном месте - в АД.
А wordpress только бы выводил все. (это немного упрощает задачу конечно).
Пока только все работает так: я ввожу логин и пароль и вылетает массив из АД под этим логином. Есть т.н. суперюзер, который имеет доступ ко всей АД, но если я ввожу его, то массив дальше второй ступени не копает. Следовательно надо либо в самом плагине добавить, либо его расширить :)
 

AnrDaemon

Продвинутый новичок
RTFM не.
Код:
(memberOf:1.2.840.113556.1.4.1941:=cn=TestGroup,ou=Groups,dc=example,dc=org)
 

AnrDaemon

Продвинутый новичок
Прости, что может быть проще, чем взять данные напрямую из базы сразу в нужном виде?
 
Сверху