У меня есть мобильное приложение. Discourse используется как источник аутентификации. Для входа в мобильное приложение пользователю необходимо ввести своё имя пользователя и пароль. Затем я выполняю API-запрос входа в Discourse для аутентификации пользователя.
Теперь в мобильном приложении есть ссылки на форум Discourse. Я хочу, чтобы пользователи автоматически входили на форум при нажатии на эти ссылки. Сейчас это создаёт очень плохой пользовательский опыт: пользователям приходится вводить пароль дважды — сначала при входе в приложение, а затем при входе на форум.
Поскольку вход без пароля по ссылке, отправленной на электронную почту пользователя, возможен, я полагаю, что и этот сценарий также реализуем. Возможно, с помощью простого плагина.
Когда это должно быть выполнено?
1 неделя.
Какой ваш бюджет в долларах США, который вы готовы предложить за эту задачу?
300$
На самом деле это немного сложнее, чем может показаться.
Механизм входа по электронной почте работает следующим образом: когда вы нажимаете кнопку «По электронной почте» в модальном окне входа, для конкретного пользователя генерируется токен, который сохраняется в email_tokens. Этот токен можно увидеть в ссылке (строка из цифр и букв):
Вам нужно генерировать такой токен для ссылок в вашем приложении каждый раз, когда пользователь входит в систему. Насколько я понимаю (?), эта функциональность пока не доступна через API, поэтому сначала вам нужно будет создать соответствующий эндпоинт.
Этот эндпоинт должен быть защищён аутентификацией. Вам потребуется способ обработки этого в вашем приложении. Возможно, у вас это уже реализовано?
Затем нужно будет учесть такие моменты, как срок действия токена. Как долго токен должен оставаться валидным? Как получить новый и обновить ссылки после истечения срока действия?
Кажется, что для решения этой задачи должен существовать более подходящий подход, чем адаптация этой функции постфактум.
Да. Я как раз сам об этом думал. И раз вход по электронной почте уже реализован, это тоже должно быть возможно. Не знаю, как именно это будет реализовано. Возможно, это стоит сделать через плагин. Если вы сможете это сделать, дайте знать.
Да, аутентификация осуществляется через API входа в Discourse. И с этим проблем нет.
У ссылки «Вход по электронной почте» есть значение срока действия? Мы можем использовать то же самое или что-то подобное.
Другие вещи, такие как получение нового токена, будут обрабатываться самим приложением.
Да, срок действия токена электронной почты определяется настройкой сайта «Время жизни токена электронной почты в часах».
Таким образом, по сути, вам нужен плагин, который добавляет конечную точку для создания и возврата токена электронной почты для пользователя, и вы будете вызывать его регулярно по истечении срока действия токенов?
Также, поскольку я хочу перенаправлять пользователя на конкретную тему, было бы идеально, если бы можно было добавить ID темы или ссылку, и после входа пользователь автоматически перенаправлялся бы туда.
Не лучше ли было бы сделать так, чтобы ссылки в приложении указывали на ваш собственный бэкенд. При клике на ссылку в этот момент создается соответствующая ссылка, и клиент перенаправляется каким-то образом в нужное место.
Это означало бы, что вам не нужно генерировать ссылки для аутентификации до того, как пользователь на них нажмет.