food-market/src/food-market.application/Common
nns 6b959ac59d
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
feat(pos): быстрый вход кассира по PIN (grant_type=pin) + lockout
- Сервер: Employee.PinHash (PBKDF2, миграция Phase36); POST
  /api/organization/employees/{id}/pin — админ задаёт/снимает PIN (4–6 цифр,
  уникален среди активных сотрудников на пересекающихся точках). Кастомный
  OpenIddict-грант grant_type=pin (retail_point_id + pin): находит кассира,
  привязанного к точке, по PIN и выдаёт токены. Брутфорс-защита — in-memory по
  точке (5 неверных → блок 5 мин). Клиент-сидер досоздаёт gt:pin существующим
  клиентам (без пересоздания). Пароль остаётся запасным.
- Касса: PIN-пад на зарегистрированном устройстве (маскированный ввод, 0–9/⌫/
  Войти), переключение на вход по логину; AuthService.PinLoginAsync.
- Тесты: unit PinHasher (9), integration (3): вход по PIN выдаёт рабочий токен;
  5 неверных → блок; дубль PIN на точке → 409. + скриншот PIN-пада в галерее.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 09:38:36 +05:00
..
Email feat(email): HTML-шаблоны MailKit + invite/weekly/low-stock джобы (P1-22) 2026-05-28 16:37:32 +05:00
Fiscal feat(s11): ОФД-scaffolding — IFiscalProvider + 4 провайдера + UI/тесты 2026-06-07 02:27:17 +05:00
Tenancy feat(audit): per-tenant журнал мутаций OrgAuditLog (P1-18) 2026-05-28 16:26:36 +05:00
BusinessTime.cs fix(reports): «сегодня/за день» считать по Asia/Almaty (UTC+5), а не по UTC 2026-10-08 02:10:11 +05:00
PagedRequest.cs feat(tables): server-side sort by column header click 2026-04-24 12:24:05 +05:00
PhoneNormalization.cs fix(phone): серверная KZ-ФЛК на всех endpoint'ах принимающих phone 2026-05-08 01:05:48 +05:00
PinHasher.cs feat(pos): быстрый вход кассира по PIN (grant_type=pin) + lockout 2026-10-08 09:38:36 +05:00
RequiredGuid.cs fix(validation): обязательные FK-Guid проверяются на 400 + DbUpdateException → 400 2026-05-08 12:05:01 +05:00