Расширение кнопок заголовка

Привет — мы унаследовали хорошо зарекомендовавший себя форум Discourse. Я хотел бы изменить функциональность кнопки «Создать аккаунт» в заголовке.

Мне удалось установить плагин Ember для Chrome, который я использовал для инспекции кнопок — он показал путь:

/var/www/discourse/app/assets/javascripts/discourse/node_modules/.embroider/rewritten-app/components/header/auth-buttons.js

Не уверен, но, кажется, связанный JS-код находится здесь?

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/components/header/auth-buttons.gjs

У меня есть доступ к панели администратора форума, я могу зайти в раздел «Компоненты», но не вижу записи для этих кнопок. Я видел некоторые используемые «тестовые» компоненты, попробовал включить один из них и скопировать содержимое файла auth-buttons.gjs в общий раздел head, но при попытке сохранить получил ошибки.

Так что мой вопрос: как можно расширить и настроить функциональность этих кнопок?

Заранее спасибо.

Привет! Что вы пытаетесь сделать с этими кнопками?

Мы хотим, чтобы пользователи регистрировались через наш основной сайт — после этого учётная запись будет работать и для форума…

Вам действительно необходимо использовать SSO. Discourse автоматически адаптируется к вашему провайдеру SSO после его правильной настройки.

Мы уже используем SSO — форум аутентифицирует пользователей через того же провайдера, что и наш основной сайт. Однако, когда пользователь регистрирует учётную запись на форуме, мы просто хотим перенаправить его на основной сайт. Как лучше всего это сделать?

Вы уверены, что действительно хотите это сделать? С точки зрения пользователей это выглядит так, будто кто-то пытается их обмануть. Они интересовались форумом, а после регистрации оказываются в другом месте.

Отключите все остальные методы аутентификации (включая локальные входы), оставив только SSO в качестве варианта входа. Это автоматически перенаправит пользователей на вход на ваш основной сайт.

Если вы настроили это правильно, я полагаю, что после входа в систему вас перенаправит обратно?

Аутентификация работает — мы хотим настроить кнопку «Регистрация», чтобы она вела на основной сайт…

Вот что я предложил выше.

Могу подтвердить. При правильной настройке кнопки входа и регистрации «из коробки» будут вести на основной сайт. Вам не нужно вмешиваться в интерфейс по умолчанию.

Значит, где-то в панели администратора должна быть опция, где я могу указать внешний URL для процесса регистрации?

Нет, эти параметры предоставляются вашим провайдером SSO. Discourse будет отображать в заголовке только кнопку «Войти» и перенаправлять пользователя на конечную точку аутентификации, предоставленную провайдером SSO.

Большое «если»… Я слишком часто видел подобные решения. Их основная цель — навсегда вернуть пользователя на главный сайт, где происходит продажа. Но это вполне неплохо, если цель аналогична тому, что делает, например, Google: делается короткая остановка для авторизации, а затем пользователь возвращается на форум.

Привет :wave:

Вот компонент темы, с помощью которого вы можете добавить свою собственную кнопку «Регистрация». Я только что обновил его, чтобы он работал с новыми изменениями в ядре.

Значит, если локальные логины отключены, кнопка сразу перенаправит на аутентификацию через SSO?

Да. Именно так происходит, если SSO — единственный метод аутентификации.

Правильно, но если SSO касается только аутентификации, как это поможет в данном случае, когда мне нужно, чтобы кнопка «Создать аккаунт» вела на мой основной сайт?

После правильной настройки SSO кнопки регистрации не будет. Затем вы можете использовать компонент, на который ссылается @Don выше, чтобы добавить пользовательскую кнопку создания учетной записи.