gillespieza
  • 0
Учитель

Регистрации с ограничениями или удаление возможности редактировать свой пароль/адрес электронной почты

  • 0

Я разрабатываю сайт WP, на котором перечислены дорогие объекты недвижимости (виллы, пентхаусы и т. д.) в аренду. У моего клиента есть соглашение с некоторыми школами о размещении дешевой недвижимости исключительно для их учеников, и ранее (на его жестко закодированном вручную HTML-сайте) было задано имя пользователя и пароль, которые он дает школам, чтобы дать своим студентам (доступ к разделу студенческой аренды контролируется через htaccess).

Для своего нового элегантного сайта WP они не хотят открытой/публичной регистрации, поскольку дешевая недвижимость предназначена для конкретных школьников, а не для широкой публики. Но они также не хотят модерировать каждую регистрацию. Кроме того, многие студенты будут использовать свои собственные личные учетные записи электронной почты (например, gmail), поэтому я не могу ограничить регистрацию доменным именем.

Удобным для пользователя было бы создать одного пользователя («демо-пользователь», если хотите) и дать это имя пользователя + пароль школам для их учеников — все ученики затем вошли бы под этим одним пользователем. профиль.

Тем не менее, достаточно одного злоумышленника, чтобы изменить пароль и адрес электронной почты профиля, чтобы открыть его для всех.

Короче говоря, мне нужен способ создать подкатегорию подписчиков, где они могут читать личные сообщения, но НЕ редактировать свой собственный профиль, и я не могу найти ничего более «атомарного», чем возможность «Чтение», которая кажется чтобы включить как «читать сообщения», так и «редактировать свой собственный профиль».

Теперь я могу придумать несколько способов сделать это в WP, но я не уверен, будут ли они работать (или вообще возможны), и какой из них будет «лучшей практикой».

1) Используйте плагин диспетчера возможностей — я не нашел такого, который дает возможность отключить «Редактировать свой профиль». Открыт для предложений.

2) Удалить меню администратора User SubPanel и перенаправить на внешний интерфейс после входа в систему.

3) Какой-то плагин «Demo User»?

4) Другая альтернатива — ограничить или иным образом защитить паролем регистрацию, но как сделать это эффективно, без особых хлопот со стороны модератора/администратора и без потери удобства использования со стороны конечного пользователя?

Сначала я думал включить «общедоступную регистрацию», но просто контролировать доступ к странице регистрации / входа с помощью имени пользователя и пароля для всего сайта, которые мы выдали бы, но (а) это будет раздражать, поскольку вам придется по существу «регистрировать in» дважды (один раз для apache и один раз для wordpress), и (b) я пытался использовать htaccess через плагин AskApache Password Protector, но не смог обойти проблему с постоянной ссылкой/404, несмотря на то, что следовал примеру и помещал ErrorDocument в htaccess файл и пустой файл error.html в моем корне.

Вот и все… мой l33t g00gl3 sk1llz подвел меня. Мой wordpress-фу не силен.

Share
  1. Это решение является чисто косметическим, поскольку оно просто скрывает с помощью jQuery поля на странице профиля пользователя, но это фактически лишает пользователя возможности изменить пароль (администратор по-прежнему будет видеть поля и может изменить их в любое время). Добавьте это в файл functions.php вашей темы, и все готово.

    add_action( 'edit_user_profile', 'hide_profile_options');
    add_action( 'show_user_profile', 'hide_profile_options');
    
    function hide_profile_options() {
        if( !current_user_can('install_themes') ) : ?>
        <script type="text/javascript">
        jQuery(document).ready(function(){
            jQuery("#your-profile h3:contains('Personal Options') + table").remove();
            jQuery("#your-profile h3:contains('Personal Options')").remove();
            jQuery("#your-profile h3:contains('About Yourself') + table").remove();
            jQuery("#your-profile h3:contains('About Yourself')").remove();
        });
        </script>
    <?php
        endif;
    }
    

    При желании можно скрыть и другие блоки… просто продублируйте строки и измените содержимое h3…

    Для того, что вы описываете, скрытие всей подпанели администрирования профиля пользователя также может работать, но это немного точнее.

    • 0
    • Мне очень нравится jQuery, но с точки зрения безопасности я не думаю, что это хорошая идея. Злоумышленник может изменить JavaScript, чтобы получить доступ и выполнить нежелательные команды.

      • 0
    • Это простое решение, и оно мне нравится. Однако это требует постоянных усилий со стороны администратора, которым в конечном счете буду не я, и требует знания mysql, которого нет у моего клиента… В этом случае я мог бы настроить регистрацию на модерацию и пусть администратор одобряет каждую регистрацию, чего не хочет клиент. Но спасибо за предложение.

      • 0
    • что вы можете сделать, это иметь 2 пользователей в mysql — один с привилегиями, другой без. также создайте 2 файла wp-config по одному для каждого пользователя — все, что нужно сделать моду, это переключить файлы — это требует навыков переименования 🙂

      • 0
  2. это была интересная функция с jQuery, и она работала… но проблема в том, что блоки кода все еще присутствуют, поэтому, когда вы «просматриваете исходный код», все био-таблицы все еще там… таким образом, это решение дало бы мне паузу на уровне безопасности на редактор DOM, такой как Firebug, который, вероятно, все еще может манипулировать полями, если они отображаются в источнике просмотра страницы..??..

    • 0
  3. если вы не хотите, чтобы пользователи редактировали свои профили — создайте их и измените разрешение на таблицу пользователей mysql.

    таким образом, вы будете единственным, кто сможет создавать пользователей и обновлять профиль.

    это довольно просто, не требует плагина

    надеюсь я отвечаю на ваш вопрос

    • 0
  4. Оказывается, самым простым решением в итоге было использование одного из плагинов «Код приглашения», чтобы зарегистрироваться могли только люди с указанным кодом приглашения. В итоге я использовал Pie Register.

    • 0

Оставить ответ

You must login to add an answer.