Documentation Index
Fetch the complete documentation index at: https://docs.laportenard.com/llms.txt
Use this file to discover all available pages before exploring further.
User roles
| Role | Odoo group | Access level |
|---|---|---|
| Manager | group_pos_manager | Full access, price overrides, void authority |
| Cashier | group_pos_user | Standard POS, payments, split checks |
| Waiter | (fallback) | Order-taking only |
Permission resolution
Permissions resolve through three layers, in order:Factory defaults
Defined in
permission_registry.py (PERMISSION_DEFAULTS) and mirrored in permissions.ts on the frontend.Per-config role overrides
The
nu.pos.permission.config model allows overriding defaults per POS configuration and role.permissions: Record<string, boolean> map per user.
Frontend permission check
canPerformAction() function bridges the legacy FeatureGuards system to the new permission system via an ACTION_TO_PERMISSION mapping.
Adding a new permission
Add the backend default
Add the key and default value to
PERMISSION_DEFAULTS in nu_restaurant_pos/models/permission_registry.py.Mirror on the frontend
Add the same key and default to
PERMISSION_DEFAULTS in src/domain/users/permissions.ts.Security notes
- Permission configuration models are writable only by
base.group_system(admin) — managers cannot self-grant privileges - Role resolution uses
user.has_group(), neverconfig.read()group ID extraction (theread()output format is fragile) - The frontend rejects non-string role values to guard against Python
False→ JSONfalsepropagation