From 32d9c31f4a7eb26acc9797ab7ae940b817fd805d Mon Sep 17 00:00:00 2001 From: MpakobecEx Date: Wed, 21 Oct 2026 16:43:55 +0500 Subject: [PATCH] Allow dev HTTP in the Unity client settings --- .../Vanguard/Runtime/Auth/AuthService.cs | 20 +++++++++++++------ client/ProjectSettings/ProjectSettings.asset | 2 +- client/README.md | 17 ++++++++++++++++ docs/HANDOFF.md | 6 +++++- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/client/Assets/Vanguard/Runtime/Auth/AuthService.cs b/client/Assets/Vanguard/Runtime/Auth/AuthService.cs index c4fa320..b588051 100644 --- a/client/Assets/Vanguard/Runtime/Auth/AuthService.cs +++ b/client/Assets/Vanguard/Runtime/Auth/AuthService.cs @@ -78,13 +78,21 @@ namespace Vanguard.Auth if (!_tokens.HasRefreshToken) throw new ApiException(401, "auth.no-refresh", "Нет refresh-токена."); - var response = await _api.PostAsync( - "/api/auth/refresh", - new RefreshRequest { RefreshToken = _tokens.RefreshToken }, - authenticated: false); + try + { + var response = await _api.PostAsync( + "/api/auth/refresh", + new RefreshRequest { RefreshToken = _tokens.RefreshToken }, + authenticated: false); - SaveSession(response); - return response; + SaveSession(response); + return response; + } + catch (ApiException exception) when (exception.StatusCode == 401) + { + ClearSession(); + throw; + } } public async Task RefreshMeAsync() diff --git a/client/ProjectSettings/ProjectSettings.asset b/client/ProjectSettings/ProjectSettings.asset index 3cdca18..3485da0 100644 --- a/client/ProjectSettings/ProjectSettings.asset +++ b/client/ProjectSettings/ProjectSettings.asset @@ -907,7 +907,7 @@ PlayerSettings: hmiLoadingImage: {fileID: 0} platformRequiresReadableAssets: 0 virtualTexturingSupportEnabled: 0 - insecureHttpOption: 0 + insecureHttpOption: 2 androidVulkanDenyFilterList: [] androidVulkanAllowFilterList: [] androidVulkanDeviceFilterListAsset: {fileID: 0} diff --git a/client/README.md b/client/README.md index 7c313f4..3f18498 100644 --- a/client/README.md +++ b/client/README.md @@ -67,9 +67,26 @@ MessagePack-сериализатор и юнион-кадры. ## Ограничения каркаса +- Для dev-стенда включён HTTP: Project Settings → Player → **Allow downloads + over HTTP = Always** (`insecureHttpOption: 2`). Для релиза нужен HTTPS и + это значение вернуть в «Not allowed». - Токены лежат в `PlayerPrefs` — только для разработки; для релиза нужно защищённое хранилище. - UI собран кодом на uGUI; префабы/UI Toolkit подключим, когда появятся макеты. DOTween пока не добавлен, чтобы не тянуть Asset Store-зависимость в первый коммит. - Мета-экраны — заглушки: сеть и авторизация настоящие, разделы следующие. + +## Проверки + +EditMode: + +```powershell +& 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' ` + -batchmode -nographics -projectPath client ` + -runTests -testPlatform EditMode ` + -testResults client\TestResults.xml +``` + +PlayMode — то же с `-testPlatform PlayMode`. Тесты не ходят в сеть: +проверяются composition root, создание Canvas и обоих экранов. diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index a5c41c0..3a186b0 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -521,7 +521,8 @@ CI подключён и проходит; серверный блок закр заглушками разделов; - `Vanguard.Shared.dll` (netstandard2.1) и MessagePack 3.1.12 подключены как плагины; `client/README.md` описывает запуск и ограничения; -- EditMode smoke-тест `Vanguard.Tests.Editor` собирает оба экрана. +- EditMode и PlayMode smoke-тесты `Vanguard.Tests.Editor` / + `Vanguard.Tests.PlayMode` собирают оба экрана и проверяют запуск приложения. Дальше по клиенту: @@ -576,6 +577,9 @@ CI подключён и проходит; серверный блок закр ## 9. Подводные камни +- **Клиент: HTTP.** В Unity по умолчанию запрещены незащищённые соединения: + для dev-стенда в `client/ProjectSettings/ProjectSettings.asset` стоит + `insecureHttpOption: 2` (Always). Для релиза — HTTPS и вернуть запрет. - **Кодировка.** Не использовать PowerShell `Get-Content`/`Set-Content` для UTF-8 файлов с русским текстом: однажды это уже испортило комментарии. Правки — только через `edit`/`write`, либо Python с `encoding="utf-8"`.