Skip to content

07 Guest Access

Mikhail Deynekin edited this page Oct 9, 2026 · 1 revision

07 · Гостевой доступ

← Home

Гость (курьер, такси, родственник) открывает шлагбаум сам — по ссылке с QR-кодом, короткому коду или PIN — без звонка жителю и без регистрации. По умолчанию пропуск живёт 12 часов; всё логируется.

Как это выглядит

Житель (кабинет) или админ            Гость (телефон, без аккаунта)
─────────────────────────            ─────────────────────────────
Создать пропуск:                      Получает ссылку (мессенджер/SMS):
 срок 12 ч, имя «Курьер»                https://gate.example.com/guest/<token>
      │                                       │
      ▼                                       ▼
Ссылка + QR + код 7K4M-Q2XD           Страница: адрес ЖК, срок, кнопка
 + PIN 554145                          «Открыть шлагбаум» (большая)
                                              │
                                              ▼
                                       Шлагбаум открыт, событие в журнале:
                                       «Иванов И.И. (гость Курьер)», guest

Три способа открыть (для гостя)

  1. Ссылка/QR — /guest/<token>: подписанная HMAC-ссылка (токен не подбирается), страница с большой кнопкой; QR ведёт на неё же. Работает без сессии и CSRF — защиту обеспечивает подпись + rate-limit.
  2. Короткий код — 7K4M-Q2XD на странице /guest («открыть по коду»): продиктовать по телефону, ввести на планшете охраны. Алфавит кода не содержит неоднозначных символов (0/O, 1/I/L).
  3. PIN — 6 цифр для клавиатуры панели BAS-IP (pin_fallback).

Создание

  • Житель: кабинет → «Гостевой доступ» (если карточке разрешено allow_guest_pass). Поля: срок (пресеты 1, 2, 4, 8, 12, 24, 48, 72 ч), имя гостя, телефон, госномер, цель. Обязательность полей — в настройках.
  • Админ/оператор: /admin/guest → «Создать» от имени любого жителя.
  • API: POST /api/v1/guest/passes (scope guest.create) — для интеграций (домофон, бот, CRM курьеров).
  • CLI: bin/bas-ip guest:create --resident=5 --hours=12 --name="Курьер".

Ограничения и безопасность

Механизм Значение по умолчанию
Срок по умолчанию / максимум 12 ч / 72 ч
Открытий в пределах срока без лимита (max_uses=0) или N
Активных пропусков на жителя / на дом 5 / 200
Созданий в сутки на жителя 10
Rate-limit страницы и открытия guest_open: 20/мин на IP + cooldown 3 с
Подпись ссылки HMAC ключом приложения (signed_link)
Автоистечение cron schedule:run гасит истёкшие

Гостевое открытие не требует авторизации, поэтому защищено комплексно: подпись + одноразовость токена по сроку + rate-limit + журнал. Попытки открытия с истёкшим/отозванным кодом дают понятную страницу и пишутся в журнал как denied.

Журналирование

Каждое событие: кто (житель-владелец пропуска + имя гостя), когда, тип доступа guest, квартира, устройство, результат, источник (web/код/ API), счётчик использований пропуска. Видно в:

  • /admin/gate (журнал ворот, фильтр «гостевые»),
  • карточке пропуска (/admin/guest) — сколько раз и когда открыли,
  • кабинете жителя (/cabinet/log),
  • bin/bas-ip gate:log --access=guest,
  • лог-канале gate (storage/logs/gate-*.log).

Уведомления (настраивается): жителю при создании (guest_created), при использовании (guest_used), гостю — приглашение (guest_invite).

Управление пропусками

  • Отозвать — в кабинете жителя, в /admin/guest, guest:revoke <код>; причина пишется в журнал.
  • Истёкшие — гасятся автоматически (auto_revoke_expired).
  • Экспорт — /admin/guest/export.

Настройка

config.guest и Админка → Настройки → Гостевой доступ: сроки, пресеты, лимиты, обязательные поля, PIN, синхронизация госномера с whitelist панели (car_sync, driver-specific), уведомления.


Дальше: 08 · Биллинг

Clone this wiki locally