Как отключить интерфейс входа в систему в Joomla 3?
Как отключить интерфейс входа в систему в Joomla 3?
Мне удалось отключить регистрацию интерфейсного пользователя, запретив регистрацию, как показано ниже.
Но все же форма входа доступна через URL ниже
index.php?option=com_users&view=login
Как я могу отключить интерфейсный компонент входа без редактирования файлов ядра?
Учитывая, что я прошел ниже. Я не хочу использовать RewriteRule, чтобы сделать это. Я хочу показать пользователю сообщение, что оно отключено.
4 ответа
Попробуй это,
Joomla модуль входа по умолчанию защищен. Таким образом, вы не можете редактировать / отключать его со стороны администратора.
Просто проверь extensions-> extension manager -> Search for login
Затем этот модуль будет отображаться. но вы не можете отключить его. Таким образом, решение для переопределения этой функции, не затрагивая основные файлы, - переопределение шаблона.
Вы можете просто изменить это представление index.php?option=com_users&view=login
в вашем шаблоне.
Редактирование Защищенного расширения через таблицы БД
Расширения не могут быть отредактированы, но вы можете управлять им, включив его или выключив. Под защитой подразумевается, что этим расширением нельзя управлять, иначе оно нарушит структуру вашего сайта. Однако, если вы хотите перевести расширение в разблокированное состояние, вы можете получить доступ к своей БД (в моем случае MySQL, отредактированный phpMyAdmin), найти надежную таблицу структуры, найти нужную строку и изменить "Status" с "1" на "0"., Обычно ваш хост предоставляет вам некоторые инструменты администрирования БД.
Надеюсь, поможет..
Я написал для этого плагин. Он полностью отключает "Пользователи" во внешнем интерфейсе. Вы также можете отключить определенный вид только для них:
index.php?option=com_users&view=login
index.php?option=com_users&view=registration
index.php?option=com_users&view=profile&layout=edit
Это код для полного отключения пользователей во внешнем интерфейсе.
<?php defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Router\Route;
class PlgSystemCobizDisableLogin extends CMSPlugin
{
public function onAfterInitialise()
{
$this->disableLogin();
}
protected function disableLogin()
{
$app = Factory::getApplication();
if ($app->isClient('site') === false) return;
$disable_users = $this->params->get('disable_users', 1);
if (!$disable_users) return;
$option = $app->input->getCmd('option');
if ($option == 'com_users') {
$this->redirect();
}
}
protected function redirect()
{
$Itemid = $this->getHomePageItemid();
$app = Factory::getApplication();
$link = Route::_('index.php?Itemid=' . $Itemid);
Factory::getApplication()->enqueueMessage('Toegang gewijgerd', 'error');
$app->redirect($link);
}
protected function getHomePageItemid()
{
$tableName = '#__menu';
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select('id');
$query->from($db->quoteName($tableName));
$query->where($db->quoteName('published') . ' = ' . $db->quote(1));
$query->where($db->quoteName('home') . ' = ' . $db->quote(1));
$db->setQuery($query);
$data = $db->loadResult();
return $data;
}
}
Или я что-то здесь не замечаю? Я признаю, что это также отключает регистрацию для пользователей во внешнем интерфейсе. Но в большинстве случаев я тоже этого хочу! :-)
В Joomla 3.x простой способ, который я нашел, - это отредактировать /components/com-users/controller.php и пометить вид строки входа в систему таким образом. я получил ответ сервера 404, но это то, что я хотел. поскольку это не URL, а компонентное представление, его трудно перенаправить.
// Set the default view name and format from the Request.
// $vName = $this->input->getCmd('view', 'login');
$vFormat = $document->getType();
Если вы хотите избежать ответа сервера 404, после редактирования /components/com-users/controller.php, как указано в предыдущем комментарии, вы можете создать перенаправление для отправки со страницы входа в веб-интерфейс в любое место, например, на домашнюю страницу. Это действительно работает.