|
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Docker Public / Build + push Public (test + latest) (push) Waiting to run
Docker Public / Deploy :test → test.food-market.kz (push) Blocked by required conditions
Docker Web / Build + push Web (push) Waiting to run
Docker Web / Deploy Web on stage (push) Blocked by required conditions
Координатор отротировал мастер-пароль стенда: теперь значение живёт в ~/.fm-watchdog/stage-shared-password на dev-vm (не коммитится) и в QUICK_LOGIN_MASTER_PASSWORD в stage-env на prod-vm. Старый дефолт '123456' на обоих сторонах убран — он мог вводить в заблуждение и был записан в бандл. Клиент-серверный контракт: - Server (AuthorizationController.IsMasterPassword) принимает ДВА пароля как мастер-ключ: (a) QuickLoginOptions.MasterPassword (константное сравнение, FixedTimeEquals); (b) публичный sentinel QuickLoginOptions.SentinelPassword = '__QUICK_LOGIN_PWLESS__'. Оба гейтованы EffectivelyEnabled — вне стенда отбиваются как любой чужой пароль. - SPA (LoginPage.handleQuickLogin) при клике карточки шлёт sentinel в поле password. Реальный пароль в JS-бандл больше не попадает; ротация секрета больше не требует rebuild'а веба. - Форму мы НЕ наполняем sentinel'ом — поле password остаётся пустым, чтобы ни одно значение не светилось в DOM. Default QuickLoginOptions.MasterPassword = "" (пустая строка не матчится в IsMasterPassword). deploy/docker-compose.yml дефолт QUICK_LOGIN_MASTER_PASSWORD тоже пустой. Тесты: - integration (3/3 ok) — добавлены sentinel-кейсы: пропускает активного при Enabled=true, отвергается при Enabled=false. Admin12345!-санити- логин в Disabled-тесте перенесён вперёд, чтобы снять lockout-счётчик от соседей по коллекции (Identity lockoutOnFailure=true). - e2e stage-quick-login (4/4 ok) — ql02 шлёт sentinel вместо '123456' (симулирует реальный SPA flow). docs/quick-login.md: - без упоминания реального пароля; хранилище — ~/.fm-watchdog/ stage-shared-password; ротация-рецепт через python читает файл в-процессе (не экспонирует значение в ps/логи). - раздел «Доступ к стенду» — host-nginx basic-auth для внешнего интернета, 192.168.1.x бьёт без неё. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Support | ||
| AbcReportTests.cs | ||
| AdvancedModeTests.cs | ||
| ConcurrencyTokenTests.cs | ||
| CustomerReturnTests.cs | ||
| DemandPostUnpostTests.cs | ||
| EnterPostUnpostTests.cs | ||
| FiscalMockFlowTests.cs | ||
| food-market.IntegrationTests.csproj | ||
| HangfireAccessTests.cs | ||
| HangfireDashboardTests.cs | ||
| ImportJobPersistenceTests.cs | ||
| InventoryPostUnpostTests.cs | ||
| LossPostUnpostTests.cs | ||
| LoyaltyFlowTests.cs | ||
| MetricsEndpointTests.cs | ||
| OrgAuditLogTests.cs | ||
| PermissionTests.cs | ||
| PosSyncTests.cs | ||
| ProfitReportTests.cs | ||
| PromotionFlowTests.cs | ||
| PruneQualityTestOrgsTests.cs | ||
| QuickLoginTests.cs | ||
| RetailOversellingTests.cs | ||
| SalesReportTests.cs | ||
| SessionRevokeTests.cs | ||
| SignalRNotificationsTests.cs | ||
| SignupFlowTests.cs | ||
| Sprint18To23FeaturesTests.cs | ||
| StockReportTests.cs | ||
| StorageAbstractionTests.cs | ||
| SupplierReturnTests.cs | ||
| SupplyPostUnpostTests.cs | ||
| TelegramOwnerSummaryTests.cs | ||
| TenantIsolationTests.cs | ||
| TransferPostUnpostTests.cs | ||
| TwoFactorTests.cs | ||