Admin Panel¶
URL¶
Locally: https://conflux.local/admin.
Technology¶
Filament v5 — official docs. Panel configuration: app/Providers/Filament/AdminPanelProvider.php.
Authentication¶
- Guard: Laravel
web - Login page:
/admin/login - Credentials are seeded by
AdminSeederfrom theADMIN_EMAILandADMIN_PASSWORDenv vars
Auto-discovery¶
| Type | Directory | Namespace |
|---|---|---|
| Resources | app/Filament/Resources/ |
App\Filament\Resources |
| Pages | app/Filament/Pages/ |
App\Filament\Pages |
| Widgets | app/Filament/Widgets/ |
App\Filament\Widgets |
No manual registration is required for basic usage — Filament discovers all classes in these directories on boot.
Default Pages and Widgets¶
| Name | Type | Source |
|---|---|---|
| Dashboard | Page | Filament built-in |
| AccountWidget | Widget | Filament built-in |
| FilamentInfoWidget | Widget | Filament built-in |
Colour Scheme¶
Primary colour: Amber.
Date & Time Display¶
Every date-time value shown in the panel is UTC — the app and Filament's own default timezone are
both UTC, so no conversion happens between storage and display. Date-time columns and entries built
with App\Filament\Support\TextColumn / App\Filament\Support\TextEntry (drop-in subclasses of the
Filament base classes) carry a tooltip stating this, on both ->dateTime() and ->since(). A bare
calendar date (e.g. a customer's date of birth) is not affected, since a zone has no meaning there.
See ADR-0022 for why this is a
subclass rather than a Filament macro.
Currency Display¶
App\Filament\Support\TextColumn / App\Filament\Support\TextEntry also carry a money() method,
via the shared App\Filament\Support\Concerns\FormatsTextComponents trait (the same trait supplies
dateTime()'s UTC tooltip above; since() stays defined separately per class, since infolist
entries and table columns need slightly different tooltip formatting). It replaced 13 duplicated
->formatStateUsing(fn (?int $state): string => $state !== null ? number_format($state / 100, 2) :
'—') closures across the Orders, Products and Customers tables, schemas and relation managers.
money() shadows Filament's own native, currency/locale-aware money() method, which accepts
$currency, $divideBy, $locale and $decimalPlaces arguments. This override keeps an
identical parameter signature — required so the override satisfies PHP's Liskov substitution check
— but ignores every argument and always applies the fixed cents-to-decimal formatting above. Call
it with no arguments: ->money(). Passing a currency or locale expecting Filament's native
behaviour has no effect; the arguments are silently ignored.
Shared Resource Helpers¶
Two small helpers under app/Filament/Resources/Concerns/ and app/Filament/Support/Filters/
share access-scoping logic that would otherwise be copy-pasted per resource:
App\Filament\Resources\Concerns\ScopedToAccessibleSystemConnection— a trait supplyinggetEloquentQuery()for a resource whose model is scoped through asystemConnectionrelationship, filtering toSystemConnection::accessibleBy($user). Used byCustomerResource,OrderResourceandProductResource.TenantResourceandSystemConnectionResourcescope their own model directly viaaccessibleBy()and do not use this trait — the model being scoped is a different shape (the resource's own record, not a related one).App\Filament\Support\Filters\SystemConnectionFilter::make()— a factory for theSelectFilteron thesystemConnectionrelationship (searchable, preloaded, options narrowed toSystemConnection::accessibleBy($user)) shared by the Customers, Orders and Products tables.
See Roles and Permissions
for what accessibleBy() computes.
Resources¶
| Resource | URL | Model | Reference |
|---|---|---|---|
| Tenants | /admin/tenants |
App\Models\Tenant |
— |
| System Connections | /admin/system-connections |
App\Models\SystemConnection |
system-connections.md |
| Users | /admin/users |
App\Models\User |
users.md |
| Products | /admin/products |
App\Models\Product |
products.md |
| Orders | /admin/orders |
App\Models\Order |
orders.md |
| Customers | /admin/customers |
App\Models\Customer |
customers.md |
See Also¶
- Admin Panel how-to guide — seeding credentials, adding resources and pages
- API Authentication — the
connectionguard,EnsureSystemConnectionIsActivemiddleware, and token resolution