Administration & Controls
Everything an administrator tunes: settings, who can do what, the automatic housekeeping job, verification, the audit trail, and rollback.
Settings
ID Studio → Settings holds three groups (stored as regular ERPat settings):
| Group | Controls |
|---|---|
| Numbering | ID format (live preview + collision check), company code, sequence start, sequence reset (never/yearly/monthly). |
| Generation defaults | Default validity (days; blank = never expires), active-tag policy, default template, require photo/department, auto-allocate missing IDs. |
| Verification & retention | Enable QR verification, audit-retention years, artifact-retention years (drives the cleanup job). |
Permission matrix
| Permission | Screen / action it gates |
|---|---|
staff_view_company_tag | Dashboard, Company Tags list, Registry viewing (module enable toggle). |
idstudio_settings | Settings (numbering, defaults, verification/retention). |
idstudio_allocate | Allocate IDs. |
company_tag_template | Template library + visual builder (create / edit / publish / duplicate / archive). |
idstudio_tags_generate | Generate IDs. |
idstudio_tags_view | Registry + CSV export + tag detail + download. |
idstudio_tags_manage | Mark printed / issue / revoke / replace. |
can_export_card | Legacy per-employee card export. |
The menu
The Company Tag left-menu group holds every ID Studio screen — ID Studio (dashboard), Company Tags, Allocate IDs, ID Templates, Generate IDs, Registry and ID Studio Settings. Each item appears only if you hold its permission, and the group opens on the dashboard. (There is no in-page navigation bar — the sidebar is the single source of navigation.)
Housekeeping cron
A daily job, expire_idstudio_tags (00:30), runs per tenant and:
- marks any active card past its validity date as expired;
- deletes the rendered PNG/PDF files of long-inactive cards older than the artifact-retention setting (safely — only files inside the card storage folder).
It self-skips when the module is disabled. Make sure the ERPat cron runtime is ticking (see the core cron docs) for it to run.
php erpat cron:list # confirm expire_idstudio_tags is registered php erpat cron:run expire_idstudio_tags # run it on demand
QR verification & multi-tenancy
When verification is enabled, each card's QR encodes
{base}/id/verify/<tenant>/<serial>. The public endpoint switches to the
correct tenant database from the URL (no login needed) and returns the minimum status only. The
serial is opaque — no employee data is in the QR. The result page is noindex.
Audit trail
Every sensitive action writes a system log you can review under the core activity/system logs:
- settings change, employee-ID allocation;
- template create / publish / archive;
- tag generate / print / issue / revoke / replace / expire.
Rollback
idstudio_* tables) and disable the module; its
settings live under idstudio_* keys. Rendered cards are stored under
files/company_tags/.