Access and Permissions
Every property has an access list that maps players to roles and granular permissions.
👥 Built-in Roles
Owner
Player who purchased the property.
All - including ownership transfer.
Tenant
Player renting the property.
Same as Owner for everyday actions, no ownership transfer.
Manager
Owner-appointed delegate.
All except ownership and tenancy.
Member
Roommate with regular access.
Doors, storage, wardrobe, garage, furniture editor.
Guest
One-off visitor.
Doors only.
Each role is a preset over the full permission map - owners can clone a preset and tweak individual permissions per member.
🔑 Keys
When Config.Keys.UseKeysOnItem = true, members and tenants additionally need a physical key item to use doors. See keys configuration for the keychain, lock-replacement, and master-key flow.
🧩 Permission Categories
The property management UI groups permissions into:
Dashboard
View property dashboard, view financial summary.
Cameras
View live feed, manage placement.
Lights
Toggle interior lights.
Keys
Generate, revoke, hand out keys.
Access
Add or remove members, change roles.
Upgrades
Buy upgrades, install or uninstall them.
Doors
Lock and unlock interior doors.
Interactions
Use storage, wardrobe, fridge, safe, sink.
Bills
Pay rent and utilities, view ledger.
Furniture
Open /peditor, place new furniture, sell from stock.
Ownership
Transfer ownership, sell or list the property.
A member's role determines which categories are checked by default; the owner can override individual toggles from /housing → property → Access.
📜 Permission Keys
Every permission is identified by a key string of the form category:resource:action. These are the keys used by the HasPermission export and the PERMISSIONS constant (e.g. PERMISSIONS.PROPERTY_SECURITY_MANAGE resolves to property:security:manage).
Property permissions
PERMISSIONS.PROPERTY_DASHBOARD_VIEW
property:dashboard:view
PERMISSIONS.PROPERTY_CAMERAS_VIEW
property:cameras:view
PERMISSIONS.PROPERTY_CAMERAS_MANAGE
property:cameras:manage
PERMISSIONS.PROPERTY_CAMERAS_DELETE
property:cameras:delete
PERMISSIONS.PROPERTY_LIGHTS_VIEW
property:lights:view
PERMISSIONS.PROPERTY_LIGHTS_MANAGE
property:lights:manage
PERMISSIONS.PROPERTY_KEYS_VIEW
property:keys:view
PERMISSIONS.PROPERTY_KEYS_MANAGE
property:keys:manage
PERMISSIONS.PROPERTY_ACCESS_VIEW
property:access:view
PERMISSIONS.PROPERTY_ACCESS_MANAGE
property:access:manage
PERMISSIONS.PROPERTY_UPGRADES_VIEW
property:upgrades:view
PERMISSIONS.PROPERTY_UPGRADES_BUY
property:upgrades:buy
PERMISSIONS.PROPERTY_DOORS_VIEW
property:doors:view
PERMISSIONS.PROPERTY_DOORS_MANAGE
property:doors:manage
PERMISSIONS.PROPERTY_INTERACTIONS_VIEW
property:interactions:view
PERMISSIONS.PROPERTY_INTERACTIONS_MANAGE
property:interactions:manage
PERMISSIONS.PROPERTY_BILLS_VIEW
property:bills:view
PERMISSIONS.PROPERTY_BILLS_PAY
property:bills:pay
PERMISSIONS.PROPERTY_FURNITURE_STORAGE_VIEW
property:furniture_storage:view
PERMISSIONS.PROPERTY_FURNITURE_STORAGE_MANAGE
property:furniture_storage:manage
PERMISSIONS.PROPERTY_FURNITURE_EDITOR_VIEW
property:furniture_editor:view
PERMISSIONS.PROPERTY_FURNITURE_EDITOR_USE
property:furniture_editor:use
PERMISSIONS.PROPERTY_FURNITURE_ORDER_VIEW
property:furniture_order:view
PERMISSIONS.PROPERTY_FURNITURE_ORDER_CREATE
property:furniture_order:create
PERMISSIONS.PROPERTY_OWNERSHIP_RENT
property:ownership:rent
PERMISSIONS.PROPERTY_OWNERSHIP_SELL
property:ownership:sell
PERMISSIONS.PROPERTY_OWNERSHIP_TRANSFER
property:ownership:transfer
PERMISSIONS.PROPERTY_SECURITY_VIEW
property:security:view
PERMISSIONS.PROPERTY_SECURITY_MANAGE
property:security:manage
Zone permissions
PERMISSIONS.ZONE_STORAGE_ACCESS
zones:storage:access
PERMISSIONS.ZONE_WARDROBE_ACCESS
zones:wardrobe:access
PERMISSIONS.ZONE_GARAGE_ACCESS
zones:garage:access
PERMISSIONS.ZONE_MANAGEMENT_ACCESS
zones:management:access
PERMISSIONS.ZONE_FURNITURE_DELIVERY_INSIDE_ACCESS
zones:furniture_delivery_inside:access
PERMISSIONS.ZONE_FURNITURE_DELIVERY_OUTSIDE_ACCESS
zones:furniture_delivery_outside:access
🚪 Zone-level Permissions
Each interaction zone (STORAGE, WARDROBE, GARAGE, MANAGEMENT, DELIVERY) checks the relevant permission category before opening. A guest with Doors only cannot open the property stash, for example.
🔁 Tenant Lifecycle
When rent ends:
The tenant's role is removed automatically.
Their keys are removed from inventory if
Config.Keys.RemoveOnRentEnd = true.They lose access on next zone check.
When ownership transfers, the old owner is fully removed from the access list and the new owner inherits a clean slate.
Last updated