From 5173f32b0f9165340c4b11f68d8d59ab5527171d Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 22 May 2026 13:41:50 +0300 Subject: [PATCH] =?UTF-8?q?H-3657:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B2=20how-to=20=D1=83=D0=BF=D0=BE=D0=BC=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20isValidForDisplay-=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit При тестировании наткнулся на 401 «Login Required» с валидным live-токеном, потому что у юзера-владельца стоял is_hidden=true. findIdentityByAccessToken после поиска токена ещё прогоняет User::isValidForDisplay() — это надо явно упоминать в how-to, иначе интегратор не поймёт почему не работает. Co-Authored-By: Claude Opus 4.7 (1M context) --- v2/swagger.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/v2/swagger.yaml b/v2/swagger.yaml index 33bae1d..537ba02 100644 --- a/v2/swagger.yaml +++ b/v2/swagger.yaml @@ -87,6 +87,20 @@ info: - Если у токена выставлен `expires_at` — после этой даты он перестаёт работать сам (статус `EXPIRED`). + ## Когда валидный токен всё равно даёт 401 + + `User::findIdentityByAccessToken` дополнительно вызывает + `User::isValidForDisplay()`, поэтому даже корректный live-токен + отдаёт `401 Login Required`, если у владельца: + + - `is_hidden = true` (юзер скрыт администратором), либо + - `reg_status_id` **не входит** в `RegStatus::validForDisplay()` + (например `INVITED`, `BLOCKED` и пр.). + + Для системного юзера-интегратора убедитесь, что он `is_hidden=false` + и в активном reg-статусе, иначе токен не пройдёт ни на одном + `/api/v2/*` эндпоинте. + ## Управление токенами под Bearer запрещено Management-эндпоинты (`/user-api-token*`, `/admin/user-api-token*`)