open-webui/backend/open_webui/routers
Classic298 cd68a66fba
Gate the channel webhook profile image endpoint on channel access (#29703)
Any authenticated user could fetch a channel webhook's avatar, or be redirected to its external profile image URL, without belonging to the channel or holding any read access to it. This was the only webhook route with neither a channel check nor the channels feature gate.

The route now applies the same read gate every other route in this router uses: active membership for group and direct message channels, admin or a channel read grant otherwise, answering with 403 on denial and 404 when the webhook's channel row no longer exists. It also runs the channels feature and permission gate, so with channels disabled, or the permission withdrawn from regular users, the endpoint now refuses where it previously served the image.

Avatars keep rendering for channel members, and a denied request shows the default logo rather than a broken image, because the avatar component already falls back on an image error.
2026-09-06 16:58:50 -04:00
..
analytics.py refac 2026-06-29 01:38:41 -05:00
audio.py refac 2026-09-06 16:48:30 -04:00
auths.py refac 2026-09-04 19:12:41 -04:00
automations.py refac 2026-08-13 17:26:38 -06:00
calendar.py refac 2026-06-29 13:03:14 -05:00
channels.py Gate the channel webhook profile image endpoint on channel access (#29703) 2026-09-06 16:58:50 -04:00
chats.py refac 2026-08-25 13:18:38 -04:00
configs.py refac 2026-09-04 17:39:34 -04:00
evaluations.py refac 2026-09-06 16:48:30 -04:00
files.py fix: don't hold a database connection for the lifetime of an SSE stream (#28183) 2026-08-17 01:46:54 -06:00
folders.py fix: keep folder parent references acyclic (#28748) 2026-08-24 17:06:19 -04:00
functions.py refac 2026-08-17 01:21:58 -07:00
groups.py refac 2026-06-29 05:47:21 -05:00
images.py refac 2026-08-31 10:47:49 -04:00
knowledge.py refac 2026-08-31 00:39:16 -04:00
memories.py refac 2026-08-11 17:35:05 -06:00
models.py Gate the model profile image endpoint on model read access (#29700) 2026-09-06 16:20:13 -04:00
notes.py refac 2026-08-25 13:18:38 -04:00
notifications.py refac 2026-07-27 19:39:36 -04:00
ollama.py refac 2026-08-31 00:53:55 -04:00
openai.py refac 2026-08-31 00:53:55 -04:00
pipelines.py perf: skip pipeline filter session setup when no filters exist (#29146) 2026-08-28 12:22:23 -04:00
prompts.py refac 2026-08-31 00:39:16 -04:00
retrieval.py refac 2026-09-06 16:48:30 -04:00
scim.py refac 2026-08-23 13:49:50 -04:00
skills.py perf: stop scanning every skill on each listing and chat turn (#28798) 2026-08-19 11:07:33 -07:00
tasks.py refac 2026-08-11 01:15:05 -06:00
terminals.py refac 2026-09-04 22:56:00 -04:00
tools.py chore: format 2026-08-25 16:53:53 -04:00
users.py refac: drop the redundant .keys() from two dict membership tests (#28859) 2026-08-23 16:02:09 -04:00
utils.py refac 2026-06-17 02:52:35 +02:00