Chain – Security and Access Control
Security in chain operations is not built on "hiding buttons in the UI" but on real rules directly in the database. Every time someone tries to read or modify data, the system runs a check – even if someone tries to bypass the app and talk directly to our API, they cannot see or modify data they don't have rights to.
Base principles
- Secure from the start: new features start locked down and only open up for the roles that should have access
- Rights inherited via chain membership: a chain admin automatically gets access to their member restaurants without extra configuration
- Chain data is separate from restaurant data: a chain owner sees chain-wide info in addition to the restaurants
- Multiple layers: the app, the API, and the database all verify permissions independently
Roles and what they see
| Role | Sees chain data? | Sees restaurant data? |
|---|---|---|
| Vendion support (internal) | Yes (when needed for support cases) | Yes |
| Chain owner / chain admin | Yes, the entire chain | Yes, all member restaurants |
| Chain member with specific role | Only what their role allows | Only what their role allows |
| Restaurant admin (local) | No | Yes, their own restaurant only |
| Restaurant staff | No | What their role allows |
| Guests (not logged in) | No | Only public info (menu, booking) |
Capability inheritance – inherited rights
When Alice is chain admin for "Burger Buffet Holding" (5 restaurants) and opens one of the units in admin:
- System checks: is Alice a direct member of the restaurant? No.
- Is she chain admin for the chain the restaurant belongs to? Yes.
- → Access granted automatically.
She never needs to be manually added to each unit. Saves time and reduces mistakes.
Chain gift cards – cross-unit access
A chain gift card is redeemable at all member restaurants. In practice:
- A restaurant member sees local cards and all cards redeemed at their place
- A chain member sees all chain-scoped cards in their chain
- Nobody outside the chain sees anything
Same principle applies to menu templates, brand settings, and intercompany transactions.
Data isolation between chains
Different chains can never see each other's data. Chain A's guest gift cards are invisible to Chain B's admin. The system automatically filters by chain membership in every relevant check.
We test this continuously with negative tests: "Try to read data from chain B when you're admin in A" → 0 rows returned.
When sharing flags are OFF
If you turn off central menu control in chain settings, the menu template page disappears from navigation for all chain admins. Existing published menus remain in each restaurant – frozen in place.
Same principle for brand lock, shared loyalty, and shared gift cards.
Traceability – audit log
All critical changes are logged for traceability:
| What's saved | Example |
|---|---|
| Who executed | Chain admin Alice |
| What happened | Changed sharing flag to OFF |
| Which chain/restaurant | Burger Buffet Holding |
| When | 2026-06-15 14:32 |
| From which device | Browser, IP |
The question "who turned off loyalty on June 15?" must always be answerable. Chain admins see their own chain's log; Vendion support sees the entire log.
Regional data residency
- Customer data stored within EU (eu-west-1 / eu-north-1)
- Data never leaves EU
- Vendion doesn't use US-based services for core data
- Compliant with GDPR and Swedish data protection requirements
Penetration testing and monitoring
Vendion runs:
- Internal pen-test before production
- Continuous monitoring via error reporting
- Annual external audit as customer volume grows
Security incident – flow
If an incident occurs:
- Detection (via monitoring, logs, or customer report)
- Immediately: isolate affected data
- Analysis: what happened?
- Patch: fix root cause
- Communication: inform affected chain owners within 72 hours (GDPR requirement)
- Report: document the incident
Summary
- Database level: permissions enforced per row, not just in the UI
- Inherited rights: chain admin automatically gets access to member restaurants
- Data isolation: chains can never see each other's data
- Audit log: all critical changes are traceable
- EU residency: data never leaves EU
- Multiple layers: app, API, and database all verify independently
This multi-layer model provides strong protection against both external attacks and internal mistakes.
Next step: For deeper bookkeeping aspects, read Chain Bookkeeping – Multiple Legal Entities (or equivalent in the Bookkeeping module).
This feature is part of Vendion Chain Operations.
Curious how it looks in practice? Read more about the product or book a short demo.
Was this article helpful?
