fix(server): инстанс-админ видит все серверы инстанса в READY
Чек-лист §11.5 требует, чтобы READY и список серверов инстанс-админа содержали все серверы инстанса, включая чужие и приватные. Фактически список строился из членства (`ListGuildsForUser`), поэтому в интерфейсе админа чужого сервера не было ни в рейке, ни в подстраховочном `GET /users/@me/guilds` — войти в него без инвайта было нельзя, хотя права на чужом сервере у него максимальные (AGENT.md 7.18, 7.19). - `Snapshot.userGuilds`: админу — `ListAllGuilds`, остальным — членство; - `GET /users/@me/guilds` отдаёт админу тот же список, иначе REST-ответ выкидывал бы чужой сервер из рейки при перечитывании сводки; - Go-тест `TestReadyListsAllGuildsForInstanceAdmin`: READY и REST содержат чужой приватный сервер с полными правами, у обычного пользователя его нет.
This commit is contained in:
@@ -251,8 +251,8 @@ func TestReadyGivesInstanceAdminAllPermissions(t *testing.T) {
|
||||
f := newFixture(t)
|
||||
ctx := context.Background()
|
||||
token := registerUser(t, f, "admin_user", "admin@example.com")
|
||||
// Инстанс-админ — участник главного сервера: список серверов берётся из
|
||||
// членства, а права на них максимальные.
|
||||
// В инстансе всего один сервер (главный): снапшот админа несёт все серверы
|
||||
// инстанса, а права на них максимальные.
|
||||
joinMainGuildForTest(t, f, token)
|
||||
user, _, err := f.auth.ResolveSession(ctx, token)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user