Не удалось создать ключ API уровня «Single User», он всегда устанавливается по умолчанию на «All Users»

Шаги для воспроизведения:

  1. Откройте https://yourdiscoursedomain.com/admin/api/keys
  2. Выберите «Новый ключ»
  3. В качестве уровня пользователя выберите «Один пользователь»
  4. Создайте ключ
  5. После создания откройте детали ключа
  6. Уровень пользователя будет указан как «Все пользователи»

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

(Я использую хостинговый сервис Discourse)

Вы также выбрали пользователя, для которого нужно создать ключ API?

В большинстве случаев вам нужен ключ API «для всех пользователей». В некоторых случаях, особенно при использовании discourse_theme, требуется ключ пользователя.

Что именно вы пытаетесь сделать с помощью API?

1 лайк

Я могу воспроизвести проблему, следуя указанным вами шагам. При создании API-ключа для одного пользователя Discourse ожидает, что в поле «Пользователь» формы будет указан логин:

Если в качестве уровня пользователя выбрано «Один пользователь», но в поле «Пользователь» не указан логин, создается API-ключ для всех пользователей. Я ожидал бы, что вместо этого будет отображено сообщение об ошибке. Аналогично тому, что происходит при отправке формы без описания.

3 лайка

Я хотел создать своего рода пользователя-«бота» для получения сообщений из определённых категорий. В этом экземпляре Discourse используется только аутентификация через GSuite, поэтому больше нет возможности создавать произвольных пользователей. Я надеялся, что при создании ключа «Один пользователь» мне позволят ввести новое имя пользователя, которое я хотел назначить боту, но теперь вижу, что имя пользователя должно существовать. Поле ввода имени пользователя не имеет валидации, поэтому было неясно, что нельзя ввести произвольное имя (как, например, при настройке входящих вебхуков Slack). Затем при отправке запроса происходит тихий сбой при поиске введённого имени пользователя, и вместо этого создаётся ключ «Все пользователи».

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

Ключ API для всех пользователей подойдёт, если только вы не хотите, чтобы «бот» не мог читать некоторые категории.

Это ваш компонент выбора имени пользователя @j.jaffeux?

Нет, это не компонент select-kit. Проблема в том, что мы проверяем только наличие описания, а не имени пользователя. Режим пользователя (single/all) — это значение только на стороне клиента, поэтому при валидации модели на сервере известно лишь то, что мы запросили ключ и предоставили пользователя или нет.

Это должно улучшить ситуацию, я попрошу Дэвида провести ревью:

7 лайков