System

Tenants

Tenants management is available to superuser admins only. It provides full lifecycle management of tenant accounts — provisioning new tenants, editing plan details, switching context to manage a tenant's data, and performing controlled data resets.

'alt' => 'Dashboard overview', 'caption' => 'The default Kiwire dashboard layout', 'screenshot' => true, 'class' => '', ]) Drop images into: public/assets/img/docs/{page}/{filename} --}}
Image not uploaded yet public/assets/img/docs/tenants/overview.png
Tenants — superuser view of all tenant accounts with status, plan, and action controls.

What Is a Tenant?

Each tenant is a completely isolated organisation with its own dedicated database, admin users, WiFi users, network devices, portal templates, and configuration. Tenants share the Kiwire application server but never share data — the multi-tenant architecture enforces isolation at the database level.

Tenant Fields

FieldDescription
name Display name of the tenant organisation.
tenant_id Unique short identifier used throughout the system. Immutable after creation.
status Active or inactive. Inactive tenants block all admin logins for that tenant.
plan License plan type: Free, Starter, Professional, or Enterprise.
user_limit Maximum number of WiFi user accounts permitted for this tenant.
license_expiry The date on which the tenant's license expires. Expired tenants enter read-only mode.
created_at When the tenant was provisioned.

Actions

Create Tenant

The provisioning flow creates a fully functional tenant in several steps:

  1. Create the tenant record in the system database.
  2. Create and initialise the tenant's dedicated database.
  3. Run all schema migrations on the new database.
  4. Seed default roles, permissions, and the default access profile.
  5. Create the first admin account for the tenant.
  6. Provision the license (applies the selected plan limits).

The provisioning job runs in the background queue. A progress indicator is shown until completion.

Edit Tenant

Update the tenant's display name, plan type, user limit, and license expiry. Plan changes take effect on the next login to that tenant.

Switch to Tenant

Superuser admins can switch their session context to any tenant to manage that tenant's data directly — viewing users, configuring portals, running reports, etc. While switched, the header shows a banner indicating the active tenant context. Use Exit Tenant to return to the superuser view.

Reset Data

The Reset Data action wipes all operational data from a tenant's database while preserving admin accounts and role/permission tables. This is a destructive, irreversible operation.

Safety requirements before the reset executes:

  • The executing admin must be a superuser account.
  • The admin must enter their own current password.
  • The admin must type the target tenant_id in a confirmation field.

What is preserved: admin accounts and all role/permission tables.

What is wiped: all WiFi users, devices, zones, sessions, vouchers, portal configs, login methods, reports, and audit records.

After the wipe: roles/permissions, the default profile, and the free license are re-seeded — restoring the "freshly provisioned" state.

Cross-system cleanup: related configuration records in other parts of the system (e.g., device controller records, enterprise portal configs) are also removed.

File cleanup: uploaded files in portal, enterprise, certificate, and log storage directories for that tenant are deleted.

Reset Data is permanent. There is no undo. All WiFi users, sessions, and historical data are gone. The reset is logged to the audit trail and triggers a critical security alert email.

Deactivate Tenant

Setting a tenant's status to inactive immediately blocks all admin logins for that tenant. Existing sessions are terminated on their next request. WiFi users may still have network access depending on RADIUS session timeout.

Superuser Only

The entire Tenants module — the menu item, the grid, and all actions — is only visible to superuser admins. Regular tenant admins cannot see or access this module regardless of their role.

Required Permissions

Superuser access only. This module bypasses the standard RBAC permission system.