Домой Wp-Recall WP-Recall: Проблемы и решения из-за плагина Recall "авторы" не могут зайти в админку.
7ответ(ов) в теме
3000gt
не в сети 10 лет
На сайте с 29.12.2013
Участник
Сообщения 1
1
23:35

Привет. Хороший плагин, пользуюсь давно им и очень доволен. Но такая проблема, что пользователи под правами "автора" не могут зайти в админку для опубликования постов. Отключив плагин, пользователь может зайти. Можно ли как то решить эту проблему? У меня версия Рекола 5.1.4 .Я знаю, что есть обновленные версии, но можно ли имено чтото сделать в этой?убрать или добавить что то в коде. Спасибо!

0
Андрей CS
не в сети 13 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
2
23:43

Плагин запрещает доступ в админку все ролям ниже роли редактора. Чтобы отключить эту функцию вам надо удалить ее код в файле functions.php в папке плагина. Функция должна быть подписана комментарием, поэтому найти ее труда не составит. Называется wp_admin_success()

0
dan9
не в сети 10 лет
На сайте с 08.01.2014
Участник
Сообщения 17
3
12:46

Ну зачем же удалять?
if ( $user_info->user_level user_level < 2 )

Вот и всё, теперь все пользователи с уровнем доступа Авторов будут иметь доступ в админку а подписчики и учасники будут перенаправлены на главную.

0
dan9
не в сети 10 лет
На сайте с 08.01.2014
Участник
Сообщения 17
4
16:00

Андрей Plechev сказал(а)

Плагин запрещает доступ в админку все ролям ниже роли редактора. Чтобы отключить эту функцию вам надо удалить ее код в файле functions.php в папке плагина. Функция должна быть подписана комментарием, поэтому найти ее труда не составит. Называется wp_admin_success()

К стати, в wp не рационально делать запрет в админку по level.

У меня полностью готовый плагин и допиленный под мои нужды.

Дам лишь самое главное Идею:
Создаем файл, к примеру access.php, в него вписывем следующие строки:

<?php
 if (current_user_can('level_2','level_3','level_4','level_5','level_6','level_7','level_8','level_9','level_10')) : // Админы, редакторы, авторы ?>
<?php
global $user_ID;
$user_key = $user_ID."]".md5(AUTH_KEY.$user_ID);
header('Content-Type: text/html; charset=utf-8');
$user_agent = $_SERVER["HTTP_USER_AGENT"];
if (strpos($user_agent, "$user_key") == false || substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) !== "ru" && substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) !== "ru-ru" && substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) !== "uk")
die('Доступ закрыт');
<?php elseif (current_user_can('level_0','level_1')) : // Подписчики, журналисты, можжно не указывать ?>
<?php else : ?>
<?php endif; ?>

// К стати в коде выше я добавил ещё и проверку языка браузера Русский или Украинский
Далее открываем /wp-config.php
и инклюдим ниже
require_once(ABSPATH . 'wp-settings.php');
наш файл
include (TEMPLATEPATH . '/access.php'); который должен лежать в папке с активным стилем.

Ну а дальше пишем плагин под ваш браузер в котором можно указать ваш ключ доступа в поле юзер агента. К счастью такой плагин уже написан под все популярные браузеры. Я использую переделанный и локализованный мною плагин UA под Gecko FF. В котором указывается ключ для нужного сайта. Для каждого сайта свой ключ, или если не указали ключ просто выводить ваш стандартный юзер-агент.

Плюсы очевидны:
Доступ под админ , редактором ... на весь сайт в целом будет закрыт, если авторизация прошла без подтверждения ключа.
Код универсальный и будет работать на всех версиях WP.
Не нужно иметь белый ip

Как узнать свой ключь?
Создаем секретный файл key.php при обращении к которому пользователь увидит именно свой ключ с генерированный на базе его id+соль.
И добавим туда следующие строки:

<?php require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php'); ?>
<?php if ( is_user_logged_in()) : ?>
<?php
global $user_ID;
$user_key = $user_ID."]".md5(AUTH_KEY.$user_ID);
echo $user_key;
?>
<?php else : ?>
<?php header('Location:'.$_SERVER['DOCUMENT_ROOT'].'/wp-login.php'); ?>
<?php endif; ?>

Ключ вы должны посмотреть до того как админ переведет вас в группу выше автора.
У меня это сделано так: Пользователь дает запрос повысить права на сайте, админ подтверждая отправляет на мыло пользователю ключ и ссылку на страницу закачки плагина для браузера пользователя.

Эксклюзивно для сайта

Вы не можете просматривать опубликованные ссылки

Wink

0
Андрей CS
не в сети 13 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
5
18:11

Спасибо, конечно, но не очень понял, чем ваш код лучше пары строк проверки по level? И проще и работает нормально. Почему же это нецелесообразно?
Неужели проще генерить какие то ключи, файлы и размещать столько кода в разных местах?
Ну не знаю)

0
dan9
не в сети 10 лет
На сайте с 08.01.2014
Участник
Сообщения 17
6
18:33

Если закрыть доступ по левел, то навредить сайту может любой, кто узнает пароль админа. Угнать пароль админа проще чем догадаться что на сайте независимая проверка по ключу. И узнать этот ключь гараздо сложнее чем узнать тот самый заветный пароль. Я бы предложил доступ по IP, но и этот вариант не самый безопасный.

Пара строк кода запретит доступ на сайт или к отдельным её частям только по левел, хотя добавив ещё немного кода и можно полностью защитить главные группы от взлома. Даже если предполагаемый хакер будет знать все пароли пользователей главных группWink

0
Андрей CS
не в сети 13 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
7
18:39

ну так вы пытаетесь решить совсем другую проблему, связанную с защитой сайта, а как ее решать каждый думает сам.
Я бы не стал говорить, что увести пароль так уж просто, а в вопросах защиты всегда можно перейти черту паранойи.
Нун гуд, может кому и пригодится.

0
Тема закрыта. Публикация новых сообщений запрещена.