Ссылки-приглашения, сгенерированные с email, нельзя активировать

Я отправляю запрос к конечной точке API /invites.json со следующим JSON:

{
    "email": "new.member@example.com",
    "skip_email": true,
    "max_redemptions_allowed": 1,
    "expires_at": << текущая дата + 1 месяц >>
    "group_names": "example_group"
}

Это создает корректное приглашение, ссылку на которое я беру и предоставляю пользователю.

Однако, когда пользователь пытается активировать приглашение, процесс завершается ошибкой по адресу discourse/app/controllers/invites_controller.rb at main · discourse/discourse · GitHub с общим сообщением об ошибке invite.error_message из-за невозможности обновить базу данных по какой-то причине.

Я пытаюсь отследить код, но ничего очевидного не нахожу.

Вот пример записи из таблицы invites:

  id  |            invite_key            |            email             | invited_by_id | user_id | redeemed_at |         created_at         |         updated_at         | deleted_at | deleted_by_id |       invalidated_at       | moderator | custom_message | emailed_status | max_redemptions_allowed | redemption_count |       expires_at
 1587 | 4b4e........................2307 | example@gmail.com            |             1 |         |             | 2021-04-11 23:51:05.253528 | 2021-04-11 23:51:05.253528 |            |               |                            | f         |                |              0 |                       1 |                0 | 2021-05-11 11:51:05.193

Попробовали ли вы сделать это через интерфейс? Это работает? Если да, то в чём разница между запросом, который делает интерфейс, и тем, который сделали вы?

Есть ли что-то в /logs на сайте?

К сожалению, в логах ничего нет. Я не пробовал через интерфейс, займусь этим.

Кстати, есть ли где-нибудь пост, описывающий, как применить патч или запустить форк в продакшене? См. мой комментарий здесь: Install Discourse for development using Docker - #152 by jessicah.

@sam, похоже, это влияет только на некоторых пользователей, а не на всех, но я не смог определить, в чём разница :-/

Я бы запустил патч с добавлением дополнительного логирования, но, согласно ссылке в предыдущем сообщении, хотя я и могу запустить среду разработки, у меня не получается настроить её на рабочем экземпляре, поэтому я не совсем понимаю, как мне отлаживать проблему :frowning:

Не все пользователи имеют право приглашать. Уверены, что пользователь, выполняющий приглашения через API, обладает соответствующим разрешением?

invited_by_id равен 1, т.е. администратор, используется для всех приглашений.

1 лайк

Привет, Джессика,

Наш код приглашения значительно изменился с апреля. Интересно, сталкиваетесь ли вы всё ещё с какими-либо проблемами?

cc @dan

2 лайка