VulCode

Atrium

Wewnętrzne API, którym panel klienta VulCode prowadzi abonament hotelu w Atrium: odczyt stanu, ustawienie planu z datą końca opłaconego okresu i zawieszenie z podanym powodem. Klient nie zmieni planu sam, bo żadna jego trasa go nie zapisuje, a API chroni wspólny sekret w nagłówku X-Service-Token: bez skonfigurowanego sekretu odpowiada 503, zamiast działać bez uwierzytelnienia.

TypWewnętrzne API usługa-usługa
BackendExpress, TypeScript, Prisma
DostępWspólny sekret w nagłówku
WywołujePanel klienta VulCode
Atrium

Wprowadzenie

Atrium to panel do prowadzenia hotelu: makieta pięter z żywymi statusami pokoi, rezerwacje, housekeeping, usterki, restauracja, magazyn, grafik i raporty. Hotel płaci za niego w panelu klienta VulCode, więc to stamtąd musi przyjść informacja, na jakim planie jest hotel i czy nie został zawieszony.

Do tego służy wewnętrzne API: wąski kanał usługa-usługa, którego klient nie widzi i którego nie da się otworzyć przez pomyłkę.

Plany i to, czego klient nie zmieni

Hotel jest na planie free albo pro. Planu nie da się ustawić z panelu hotelu, bo żadna trasa dostępna dla klienta go nie zapisuje. Należy do panelu klienta VulCode i tylko stamtąd przychodzi.

Plany Atrium

freepro
Pokoje10bez limitu
Członkowie zespołu3bez limitu
Raportynietak

Trzy wywołania

Panel klienta VulCode prowadzi abonament hotelu trzema wywołaniami: odczytem stanu, ustawieniem planu i zawieszeniem.

internal-api · bash
GET  /api/internal/hotels/:id
POST /api/internal/hotels/:id/plan      { "plan": "pro", "validUntil": "<koniec opłaconego okresu>" }
POST /api/internal/hotels/:id/suspend   { "suspended": true, "reason": "<powód>" }

Płatny plan zawsze niesie datę końca opłaconego okresu, a ustawienie planu free ją czyści. Oba zapisy trafiają do dziennika działań hotelu pod nazwą VulCode, więc właściciel widzi, skąd przyszła zmiana planu.

Koniec okresu bez harmonogramu

Data końca opłaconego okresu wystarcza: gdy minie, hotel przy najbliższym zapytaniu jest obsługiwany jak na planie free. Wygasła subskrypcja nie potrzebuje żadnego zadania w tle, które mogłoby nie ruszyć.

Mniejszy plan niczego nie usuwa. Hotel, który ma więcej pokoi albo osób w zespole, niż pozwala jego plan, zachowuje wszystko, co ma, i tylko nie może dodać więcej.

Zawieszenie

Zawieszenie to decyzja operatora, zapisana osobno od wszystkiego, co kontroluje klient. Zawieszony hotel zostaje w pełni do odczytu, razem z eksportem danych, a każdy zapis dostaje odpowiedź 402. Hotel nie traci żadnych danych, a po opłaceniu wraca do pracy od razu.

Kanał, który nie otworzy się przez pomyłkę

API chroni wspólny sekret przekazywany w nagłówku X-Service-Token i porównywany z sekretem ustawionym na serwerze. Jeśli sekretu brak, całe API odpowiada 503, zamiast przyjmować wywołania bez uwierzytelnienia. Brak konfiguracji kończy się zamkniętymi drzwiami, a nie otwartymi.

Pytania o Atrium

Więcej projektów

Inne realizacje z tej samej kategorii - zobacz, jak podchodzimy do podobnych wyzwań.

Masz podobny projekt?

Napisz do nas - wycena jest bezpłatna i wraca w godzinę.