Что я упускаю? Только что пользователь впервые вошел через WordPress SSO. Я настроил систему так, что требуется одобрение. Разве эта опция не должна отображаться здесь? Я понятия не имею, как одобрить этого пользователя
У меня есть уведомление в меню администратора о том, что есть пользователь, ожидающий одобрения.
Я могу воспроизвести эту проблему, если включу и SSO, и настройку сайта «Необходимо одобрить пользователей». Чтобы одобрить пользователя, нажмите на его имя в элементе проверки:
Круто. Проблема решена, спасибо. Так и задумано? Я не совсем понимаю, как здесь вписывается концепция активации. Нужно ли каждый раз и активировать, и одобрять?
Я думаю, что одновременное включение SSO и опции «обязательно утверждать пользователей» — это довольно редкий случай. Не уверен, как это должно работать. В идеале, при включении SSO утверждение пользователей должно осуществляться на стороне провайдера SSO (WordPress). К сожалению, это требует некоторого кастомного кода. См. How to prevent some WP users from being able to login to Discourse для подробностей о настройке этого.
Я изучу, как должно работать утверждение пользователей, когда включены и «обязательно утверждать пользователей», и SSO. Если найду что-то стоящее упоминания, сообщу здесь.
Спасибо за отличный ответ, @simon. Я не упоминал об этом ранее, поскольку это было основано лишь на воспоминании (которое в моем случае всегда вызывает сомнения). Но…
Только что зарегистрировался новый пользователь, и у меня сразу появилась опция одобрения, то есть не нужно было сначала проходить этап активации.
Так что это по-прежнему вызывает у меня сильную путаницу. Я не вносил никаких изменений в конфигурацию, которые могли бы объяснить разницу в процессе для двух последних новых пользователей. В царит замешательство…
Мне казалось, что это не разрешено. Хост SSO отвечает за управление пользователями. Насколько я понимаю, если вам нужно, чтобы некоторые пользователи с учётными записями в SSO не имели доступа к Discourse, то это следует контролировать через группы или каким-либо образом запрещать вход в Discourse.
Хотя у нас есть странность, заключающаяся в необходимости как активировать, так и утверждать некоторых пользователей после их попытки входа, система, похоже, работает. При наших настройках администратор должен утверждать запросы после каждой первой попытки входа пользователя. Это приемлемо (в некоторой степени — см. ниже), поэтому две настройки (использовать SSO и утверждать пользователей) кажутся корректными.
Тем не менее, невозможность заранее утвердить определённый набор пользователей до их первой попытки входа — это досадно и создаёт серьёзные проблемы. Это означает, что пользователю приходится ждать возможности входа, даже хотя мы (администраторы) заранее точно знаем, кто они.
Я полагаю, что @simon прав, считая это пограничным случаем с точки зрения Discourse. Однако для сайтов на WooCommerce, продающих как обычные товары, так и подписки, это довольно типичная ситуация. Я как раз нахожусь в таком положении, и это распространённый сценарий. Таким образом, моих пользователей можно разделить на две (пересекающиеся) логические группы — клиенты и участники. Я хочу иметь возможность заранее утвердить список участников, чтобы им не приходилось ждать утверждения. Возможно, позже я займусь автоматизацией этого процесса, но это будет возможно только после запуска форума 1 сентября, что очень жаль.
Ага! Вы хотите настроить WooCommerce так, чтобы он управлял этими группами в Discourse, а не вручную работать с пользователями в самом Discourse. Есть несколько тем на эту тему. Это требует немного кастомного кода, и примеры уже доступны. Для ориентира: я обычно беру за такую работу от 1000 до 1500 долларов.
Спасибо, @pfaffman. С течением времени я, вероятно, смогу сделать это самостоятельно и уже занимаюсь исследованием. Для запуска я установлю ожидание, что потребуется одобрение, и просто постараюсь быстро решать эти вопросы. После запуска я посмотрю, можно ли как-то автоматизировать этот процесс.
Одно уточнение касательно моих надежд на полностью автоматизированное решение.
Я хочу избежать решения, при котором не-члены могут фактически войти в систему, но затем будут заблокированы от выполнения любых действий (возможно, потому что они не входят в какую-то группу, связанную с членами). Вместо этого, если они не являются членами, я хочу, чтобы их фактический вход в систему не удался, желательно с возможностью перенаправления на страницу, где я смогу объяснить причину.
Иными словами, блокировка входа, если пользователь не является членом, предпочтительнее, чем разрешение входа с последующей блокировкой доступа к ресурсам.
@simon Я потратил несколько минут на исследование возможных решений этой проблемы и наткнулся на вас на этой странице WP Discourse – WordPress plugin | WordPress.org. У меня есть более конкретный вопрос к вам по поводу этого плагина.
Мой бизнес связан с WordPress и WooCommerce, и все мои интеграции, где это возможно, используют теги для управления пользователями. WP Fusion выступает связующим звеном, объединяющим всё это, но суть в том, что у всех пользователей есть теги (независимо от того, являются ли они клиентами, участниками и т. д.).
С учётом этого контекста, я бы хотел иметь возможность написать собственную функцию на стороне WordPress, которая реализует определённую логику (в моём случае это так же просто, как проверка наличия тега у пользователя) и отклоняет вход, если это условие не выполняется.
Подскажите, пожалуйста, существует ли какой-то хук, который я могу использовать для реализации такой логики? Это было бы отличным решением и позволило бы оставить управление входом в полной мере в руках WordPress.
Да, эта тема описывает, как сделать то, что вы ищете: How to prevent some WP users from being able to login to Discourse. Во втором сообщении темы приведены два примера функций, которые вы можете использовать. Вам нужно будет предоставить код, чтобы заменить комментарий /* Some condition that returns true if the user doesn't meet the membership requirement */ в примере кода.
Отлично!! Мне кажется, я неправильно понял эту тему, когда просматривал её ранее, но теперь вижу, что это именно то, что мне нужно. В ожидании реализации и тестирования (знаменитые последние слова!) я думаю, что всё готово!
Верно. Прошу прощения, что упустил это, @pfaffman, и спасибо за помощь. Я перехожу к настройке зеркального VPS с Discourse для связи с моим зеркальным веб-сайтом и, при удачном стечении обстоятельств, надеюсь запустить всё в ближайшее время.