(3)Возникала проблема что в случае успешного Первого логина пользователя учетка создавалась.
Но его выкидывало на страницу регистрации и тока при последующих логинах было всё ок. Поэтому повторно загружаем данные о пользователе после его создания.
if ( $this->allow_create )
{
$this->create_local_member( $username, $password );
Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.
Вопрос
alexlist
ВНИМАНИЕ
Советую перед началом, обязательно обзавестись любым LDAP BROWSER-ом
Я вооружился http://www.iit.edu/~gawojar/ldap] http://www.iit.edu/~gawojar/ldap[/url] (написан на джава)
Можно другим. Не принципиально важно
ПРЕАМБУЛА
ЛДАП каталогов масса. И настроены они могут быть как угодно.
Так что как показала практика не все так просто в привязке данного форума
В моём случае это LDAP каталог на основе почтовика EXCHANGE
Ещё в моей сети есть Новеловский каталог. Но в нём нет данных о почтовых адресах
Поэтому было отдано предпочтение первому.
Для мало просвещенных скажу что ЛДАП каталог может быть настроен так чтобы требовать авторизацию а может и пускать анонимно.
В моём случае с авторизацией.
Так вот сначала в LDAP BROWSERе пытаетесь подсоединится к Вашему каталогу.
До тех пор пока не увидите полную ветку вашего домена со всеми пользователями и группами. (Пока этого не будет дальше идти бессмысленно.)
Затем уже переносите все настройки от туда в файл "ldap\conf.php"
В моём случае получилось
Если возникнут затруднения советую поиграться с DN путем (у меня вопреки всем стандартам не пускало при указании полного base_dn)
Если всё ок. Идем дальше в админку форума (Закладка «НАСТРОЙКИ»)
Слева в меню->Системы авторизации->Управление->LDAP Авторизация->Изменить детали
Выставляем галки как ниже.
Заменить HTML формой выше? (Нет)
Включить метод? (Да)
Разрешить создание пользователя? (Да)
Так как я уже говорил мой ЛДАП каталог работает вопреки всем стандартам (Микрософт как ни как)
Пришлось помудрить в самом модуле лдапа.
файл "ldap\auth.php"
(1)Удаляем uid_field при поиске (Уже не помню зачем)
меняем на
(2) парсим и укорочиваем DN (при полном пути я даже через лдап браузер не мог законектится)
После кода добавляем
(3)Возникала проблема что в случае успешного Первого логина пользователя учетка создавалась.
Но его выкидывало на страницу регистрации и тока при последующих логинах было всё ок. Поэтому повторно загружаем данные о пользователе после его создания.
if ( $this->allow_create ) { $this->create_local_member( $username, $password );После кода добавляем
$this->_load_member( $username ); if ( $this->member['id'] ) { $this->return_code = 'SUCCESS'; }файл "loginauth\login_core.php"
(1)Парсим результаты запросса к лдап каталогу. И берем для будущего пользователя всё что нам нужно.
Если возникают проблемы, распечатаейте массив "$this->fields". И посмотрите что именно вы получаете в качестве параметров и получаете ли вообще.
Меняем на
$member = array( 'name' => $username, 'members_display_name' => (iconv('utf-8','windows-1251',$this->fields["cn"][0])), 'members_created_remote' => 0, 'email' => strtolower($this->fields["mail"][0]),(2)Эта строчка отправляла логиневшегося человека на дорегистрацию(Ввод имени и мыла).
Мы уже всё взяли из ЛДАПА. поэтому нет смысла
Удаляем этот кусок кода
ШАБЛОНЫ
Когда всё работает можно и с шаблонами немного поигратся.
Так как в моей организации каждый сидит за своим компом. И пользователем может быть только доменный юзер.
То нет надобности в таких кнопочках как "Регистрация", "Вход", "Выход"
Их можно удалить
Первоночально в админке форума я запретил саму страницу "Регистрации"
В файле шаблона "skin_global.php"
<p class="pcen"><b>{$this->ipsclass->lang['guest_stuff']}</b> ( <a href="{$this->ipsclass->base_url}act=Login&CODE=00">{$this->ipsclass->lang['log_in']}</a> | <a href="{$this->ipsclass->base_url}act=Reg&CODE=00">{$this->ipsclass->lang['register']}</a> )Меняем на
<p class="pcen"><b>{$this->ipsclass->lang['guest_stuff']}</b>----------------------------------------------------
<p class="home"><b>{$this->ipsclass->lang['logged_in_as']} <a href="{$this->ipsclass->base_url}showuser={$this->ipsclass->member['id']}">{$this->ipsclass->member['members_display_name']}</a></b> ( <a href="{$this->ipsclass->base_url}act=Login&CODE=03&k={$this->ipsclass->md5_check}">{$this->ipsclass->lang['log_out']}</a> )</p>Меняем на
<p class="home"><b>{$this->ipsclass->lang['logged_in_as']} <a href="{$this->ipsclass->base_url}showuser={$this->ipsclass->member['id']}">{$this->ipsclass->member['members_display_name']}</a></b></p>В файле шаблона "skin_login.php"
Излишние предупреждения о регистрациях тока напрягают пользователей. ТАк что можно их почикать
<div class="errorwrap"> <h4>{$this->ipsclass->lang['form_title_attention']}</h4> <p>{$this->ipsclass->lang['login_text']}</p> <p><b>{$this->ipsclass->lang['forgot_pass']} <a href="{$this->ipsclass->vars['board_url']}/index.{$this->ipsclass->vars['php_ext']}?act=Reg&CODE=10">{$this->ipsclass->lang['pass_link']}</a></b></p> </div>Удаляем кусок кода
---------------------------------------------------
Это если мы хотим всегда запоминать польльзователя
<tr> <td width="10%"><input type="checkbox" name="CookieDate" value="1" checked="checked" /></td> <td width="90%"><b>{$this->ipsclass->lang['rememberme']}</b><br /><span class="desc">{$this->ipsclass->lang['notrecommended']}</span></td> </tr>Заменяем на
Ссылка на комментарий
Поделиться на других сайтах
6 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.