fix(invites): картинки оформления отдаются без сессии для страницы приглашения

- GET /files/{id} без сессии отдаёт только оформление сервера и картинку
  приглашения (guild_icon, guild_banner, guild_splash, invite_background):
  их показывают до входа (AGENT.md 7.9), остальное по-прежнему требует сессии
- optionalUser резолвит сессию без ответа об ошибке; путь файла проверяется на
  принадлежность каталогу данных (AGENT.md 9.2)
- аватар пригласившего показывается только вошедшим
- тесты: Go (splash анонимно, вложение закрыто) и правки живого скрипта
This commit is contained in:
2026-09-21 19:30:25 +03:00
parent 566e1cf981
commit 72537e9ff9
4 changed files with 185 additions and 17 deletions
+10 -6
View File
@@ -144,12 +144,16 @@ export default function InvitePage() {
{guild.inviter === undefined ? null : (
<div className="mt-4 flex items-center gap-2" data-testid="invite-inviter">
<Avatar
name={inviterName}
seed={guild.inviter.id}
fileId={guild.inviter.avatar_file_id}
size="sm"
/>
{/* Аватар человека показываем только вошедшим: файлы профилей
анонимно не отдаются. */}
{guest ? null : (
<Avatar
name={inviterName}
seed={guild.inviter.id}
fileId={guild.inviter.avatar_file_id}
size="sm"
/>
)}
<span className="text-sm text-fg-muted">
{t('invites.inviter', { name: inviterName })}
</span>