> For the complete documentation index, see [llms.txt](https://documentation.rcore.cz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.rcore.cz/paid-resources/rcore_housing/features/access-and-permissions.md).

# Access and Permissions

Every property has an access list that maps players to roles and granular permissions.

## 👥 Built-in Roles

| Role        | When applied                       | Default permissions                                        |
| ----------- | ---------------------------------- | ---------------------------------------------------------- |
| **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](/paid-resources/rcore_housing/configuration/keys.md) for the keychain, lock-replacement, and master-key flow.

## 🧩 Permission Categories

The property management UI groups permissions into:

| Category         | Examples                                               |
| ---------------- | ------------------------------------------------------ |
| **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`](/paid-resources/rcore_housing/api/server.md) export and the `PERMISSIONS` constant (e.g. `PERMISSIONS.PROPERTY_SECURITY_MANAGE` resolves to `property:security:manage`).

### Property permissions

| Constant                                        | Value                               |
| ----------------------------------------------- | ----------------------------------- |
| `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

| Constant                                             | Value                                     |
| ---------------------------------------------------- | ----------------------------------------- |
| `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.
