API: область с доступом к /uploads

У меня есть робот, который публикует сообщения в темы. Иногда ему нужно сначала загрузить изображение, а затем включить его в пост.

Насколько я вижу, нет области API, предоставляющей доступ к /uploads, поэтому мне приходится давать ему доступ ко всему.

Было бы разумно: (а) определить стандартную область для этого или (б) разрешить пользовательскую область с доступом к конечным точкам, определяемым администратором?

3 лайка

Вы пробовали? Я бы подумал, что пользователь, который может публиковать, может и загружать.

2 лайка

Э-э, да, иначе бы я не написал? В данном случае нужен именно эндпоинт /uploads, а не /posts, поэтому возвращается ответ 403.

Это хоть как-то полезно?

1 лайк

Спасибо, но не совсем.

Загрузка файлов работает (через эндпоинт /uploads). Однако единственный способ предоставить необходимые разрешения API-ключом — выдать все права, что представляет собой очевидный риск для безопасности.

Я прошу добавить отдельную область доступа (scope) для API, включающую /uploads. Если бы она входила в состав «запись постов», меня бы это устроило, но могут быть причины выделить это в отдельную область. Если это невозможно (хотя в целом это хорошая идея), я хотел бы иметь возможность определять пользовательскую область доступа, включающую только те права, которые я хочу разрешить.

2 лайка

Идея предоставить область видимости для создания загрузок кажется мне хорошей, безусловно pr-welcome. Соответствующее изменение будет находиться примерно здесь:

А также новая строка перевода здесь.

Думаю, это имеет наибольший смысл в виде "uploads": "create"

@RogerBW, готовы ли вы и сможете ли вы создать PR по этому вопросу? Если да, пожалуйста, действуйте, а затем опубликуйте ссылку в этой теме.

5 лайков

Что ж, не все делают такие очевидные вещи перед публикацией. Извините за это! Похоже, что как минимум один другой человек (который, как я полагаю, знает об этом конкретном вопросе больше меня) ожидал, что область видимости, позволяющая создавать посты, также сможет создавать и соответствующие загрузки.

Разве не логично, что если API-ключ может создавать пост, то он должен также иметь возможность создавать и загрузку, точно так же, как пользователь, который может создать пост, может также создать и загрузку?

2 лайка

Существуют ли ситуации, когда загрузки полезны вне контекста поста? Насколько я понимаю, загрузки автоматически удаляются периодически, если они не связаны с постами, поэтому предоставление возможности ограничить область действия API-ключа только загрузками без создания или редактирования постов явно не кажется полезным.

Как отметил @pfaffman, было бы логичнее, если бы области действия topics:write и posts:edit предоставляли доступ к загрузкам, если у связанного пользователя есть разрешение на загрузку.

1 лайк

Да, я почти уверен, что аватары используют тот же маршрут загрузки, но не привязаны к сообщениям.

5 лайков

Вероятно, загрузка нового аватара — это функция, которую можно использовать с областью доступа users:update. (Что в настоящее время невозможно?)

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

1 лайк

Готово. Потребуется тестирование и прочее, но вот как минимум базовая версия.

Я использовал отдельную область видимости по причинам, описанным выше — я вполне понимаю, что могу захотеть разрешить публикации, но не загрузки файлов.

6 лайков

Спасибо! Я добавил ревью в GitHub.

5 лайков