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


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

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

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

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

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

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

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

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

3) Какой-то плагин "Демо-пользователя"?

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

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

Итак, вот оно... мой l33t g00gl3 sk1llz подвел меня. Мой wordpress-фу не силен.

Author: gillespieza, 2010-10-15

4 answers

Это чисто косметическое решение, поскольку оно просто скрывает с помощью 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...

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

 1
Author: somatic, 2010-10-16 08:21:42

Это была интересная функция с jQuery и работала... но проблема в том, что блоки кода все еще присутствуют, поэтому, когда вы "просматриваете источник", все таблицы биографии все еще там... таким образом, это решение дало бы мне паузу на уровне безопасности для редактора DOM, такого как Firebug, который, вероятно, все еще мог бы манипулировать полями, учитывая, что они отображаются в источнике просмотра страницы..??..

 1
Author: , 2011-03-10 17:24:54

Если вы не хотите, чтобы пользователи редактировали свои профили - создайте их и измените разрешение в таблице пользователей mysql.

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

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

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

 0
Author: mireille raad, 2010-10-15 23:53:32

Оказывается, самым простым решением в конечном итоге было использовать один из плагинов "Код приглашения", чтобы зарегистрироваться могли только люди с указанным кодом приглашения. В итоге я использовал регистр пирогов.

 0
Author: gillespieza, 2010-10-18 22:26:50