вторник, октября 21, 2014

Автоматическая авторизация пользователей Active Directory в Joomla 2.5

После настройки модуля LDAP-авторизации в Joomla пользователи Active Directory смогут авторизовываться в Joomla вводом своих учетных данных (логин@server.local | пароль или даже просто логин | пароль), в случае необходимости пропустить процесс постоянного ввода пароля, его можно автоматизировать средствами самой Joomla.
В версии 2.5 это делается правкой двух файлов конфигураций (ldap и модуля авторизации). Поехали.

В файле /JOOMLA_PATH/plugins/authentication/ldap/ldap.php закомментировать строки:
// LDAP does not like Blank passwords (tries to Anon Bind which is bad)
if (empty($credentials['password']))
{
$response->status = JAuthentication::STATUS_FAILURE;
$response->error_message = JText::_('JGLOBAL_AUTH_PASS_BLANK');
return false;
}

Теперь авторизация в Joomla будет осуществляться без ввода пароля, но только логина, что ессесно может привести к апопакалипсису.
Следующим шагом будет сокрытие от пользователя формы ввода логина и пароля и автоматической подстановки этих данных.
Редактировать файл /JOOMLA_PATH/modules/mod_login/tmpl/default.php - либо свой путь до файла шаблона модуля авторизации (если используется не стандартный шаблон Joomla).
Искать <fieldset class="userdata">  и заменить

 <input id="modlgn-username" type="text" name="username"  size="18" />
на
<input id="modlgn-username" type="hidden" name="username" class="inputbox" value="<?php $rem_user = explode('@',$_SERVER['REMOTE_USER']); echo $rem_user[0]; ?>"  size="18" />

затем

<input id="modlgn-passwd" type="password" name="password" size="18"  />
на
<input id="modlgn-passwd" type="hidden" name="password" class="inputbox" size="18"   />

далее

<input id="modlgn-remember" type="checkbox" name="remember" value="yes"/>
на
<input id="modlgn-remember" type="hidden" name="remember" value="yes"/>

и

<input type="submit" name="Submit" value="<?php echo JText::_('JLOGIN') ?>" />
на
<input type="hidden" name="Submit" value="<?php echo JText::_('JLOGIN') ?>" />

Все что в блоке <?php echo JHtml::_('form.token'); ?> заменить следующим содержанием:
<?php echo JHtml::_('form.token'); ?>
<script type="text/javascript">
document.forms["login-form"].submit();
</script>
    </fieldset>

    <?php if ($params->get('posttext')): ?>
        <div class="posttext">
        <p><?php echo $params->get('posttext'); ?></p>
        </div>
    <?php endif; ?>

Теперь авторизация пользователя будет проходить автоматически при обращении к странице Joomla! Надо помнить, что измененный код файлов CMS может быть заменен на стандартный после обновления Joomla.

1 коммент.:

Михаил комментирует...

Добрый день, подскажите, а как такое же сделать но на последней версии Joomla 3.9?