Ga naar inhoud

Admin & backoffice

De backoffice is bereikbaar op manage.atraxion.com en is uitsluitend bestemd voor Atraxion-medewerkers. Klanten hebben er geen toegang toe. De admin is een custom legacy PHP MVC-applicatie onder de map _admin/. Er is geen aparte _admin/index.php — de admin draait via hetzelfde front-controller entry point als de webshop (_www/index.php) en wordt ontsloten via admin-specifieke URL-slugs (bijv. /nl/admin-menu).


Architectuur

Routering

Twee routeringsmechanismen naast elkaar:

1. Volledige paginaroutes (_admin/config/pages.xml) — 4 routes:

Routenaam Controller URL
admin.orders atx\orders\AdminOrderController /nl/admin-bestellingen
admin.wheels atx\articles\wheels\AdminWheelTemplateController /nl/admin-wheels
admin.3D atx\vehicles\simulator\AdminThreeDModelController /nl/admin-3D
admin.menu atx\general\AdminMenuPageController /nl/admin-menu

2. AJAX-eindpuntroutes (_admin/config/routing.php) — 77 routes. Formaat: admin.<naam> → controller-klasse. De actie wordt bepaald door de request-parameter (bijv. admin.customer met action=getCustomers roept AdminCustomerController::getCustomers() aan).

Klasse-hiërarchie

atx\Controller                  (_core/)
  └── atx\WebController         (_core/)        — AJAX-handlers
        └── atx\AdminController (_admin/)        — lege schil, vestigt admin-namespace
              └── atx\<domein>\Admin*Controller  — domein-controllers

atx\PageController              (_core/)         — volledige paginaweergave
  └── atx\orders\AdminOrderController etc.

View-klassen spiegelen de controllers één-op-één (bijv. AdminCustomerControllerAdminCustomerView). Views leveren HTML-fragmenten als AJAX-antwoorden of volledige paginaweergaven.


De navigatie is geconfigureerd in _admin/config/menu.php:

Groep Voornaamste functie
Queue Inkomende/uitgaande queues (App, Main, R6, R6 #2)
Verkopen Webshop-orders, platform-orders
Transport Transport- en verzendregels
Betalen Betaalmethodes, betaalgewichten
Klanten Klantgegevens, klanttags, verjaardagen, platformen, exportgroepen, online gebruikers, mini-shops, Border Patrol, abonnementen
Leveranciers Leveranciersconfiguratie, stockbestanden, importinstellingen
Voertuigen Merken, modellen, carrosserietypes, merklogo's, DriveRight-modellen, multi-PCD-modellen
Velgen Velbeheer, datakwaliteit, afbeeldingen, SEO-filters, gerelateerde artikelen
Banden Merk-/profielbeheer, afbeeldingen, maataliassen, homologaties, SEO-filters
Accessoires Voertuigkoppeling, categoriebeheer, SEO-filters
3D Afnemers (3D-simulatorproduct), DriveRight-koppelingen, 3D-websites, standaardvelgen, modeleditor
CMS / Content Blogposts, team, vacatures, banners, catalogus, tutorials, events, logo's
Marketing E-mailhandtekeningen, cadeauartikelen, X-Coins loyaliteit, spotlight-artikelen, advertenties, slider, banners, reviews, promocodes
Algemeen Merkbeheer, merkpagina's, externe verwerkingsstatistieken, BTW-IP-log
Applicatiebeheer Mailtemplate, e-mailtemplates, systeemtemplates, tekstvariabelen, monitoring (hacklog), systeeminstellingen, cachebeheer

Controllers per domein

Alle controllers staan onder _admin/controller/classes/atx/.

Klanten

Controller Functie
AdminCustomerController Online gebruikers, klantgegevens/bewerkingen, orders, reserveringen, facturen, SEPA
AdminUserController Contactbeheer, loginbeheer, rollen
AdminCustomerTagController Klantgroepen en -rechten
AdminBorderPatrolController Nieuwe klanten goedkeuren/afwijzen
AdminLoyaltyProgramController X-Coins-regels (artikel, merk, winkelmand, uitsluitingen)
AdminSubscriptionController Abonnementen
AdminReviewController Klantrecensies
AdminEmailTemplateController E-mailtemplates per klant

Bestellingen & facturen

Controller Functie
AdminOrderController Bestellingenlijst, maandstatistieken (volledige paginaweergave)
AdminReservationController Reserveringen
AdminShippingController Transport-/verzendregel-CRUD
AdminPaymentController Betaalmethode-CRUD
AdminInvoiceController Factuur- en leveringsbonnenlijsten
UpdatingPlatformOrderController Platform-orderimport (achtergrond)

Artikelen

Controller Functie
AdminArticleController Prijzen, voorraad, omschrijvingen, afbeeldingen, landszichtbaarheid, populaire artikelen
AdminBrandController Artikelmerken
AdminTyreController Bandenmerken/-profielen/-typen, dubbele EAN/Fab
AdminWheelController Velbeheer, datakwaliteit, afkoppelen
AdminWheelTemplateController Velgbeheerpagina (volledige weergave)
AdminAccController Accessoirebeheer
AdminStockController Voorraadbeheer en prijsvalidatie
AdminExportController / AdminExportGroupController Export-channel-configuratie
AdminMarginController Margeregels
AdminRelatedArticlesController Gerelateerde artikelen

Leveranciers

Controller Functie
AdminSupplierController Leveranciers-CRUD, stockbestanden, importinstellingen, prijsherberekening
UpdatingSupplierStockController / UpdatingSupplierStockWorker Achtergrond-stockimport

Voertuigen

Controller Functie
AdminVehicleBrandController Voertuigmerken
AdminVehicleModelController Chassis, opties, upsteps, herberekening, markten
AdminVehicleMotorController Motoren
AdminVehicleBodyTypeController Carrosserietypes
AdminVehicleBrandLogoController Merklogo's

Channels & platformen

Controller Functie
AdminChannelController Saleschannel-configuratie, design, mini-shop-URL's
AdminPlatformController Externe verkoopplatformen
AdminPlatformOrderErrorsController Platform-orderfoutmeldingen

CMS & content

Controller Functie
AdminTextController CMS-tekstvariabelen (cms_text)
AdminTemplateController Mail-/systeem-/mailingtemplate-CRUD en testzend
AdminBlogPostsController Blogpostbeheer
AdminSliderController Sliderbeheer
AdminTeamController Teamleden
AdminCatalogueController Cataloguspagina's

Systeem & monitoring

Controller Functie
AdminSettingController Systeeminstellingen, cache-flush, online/offline-schakelaar
AdminJobController Queue-status, prioriteit, reset, statistieken
AdminHeartbeatController Systeemstatus
AdminVatIpLogController BTW-IP-logboek
AdminLogosController Logo-beheer

Rollen en rechten

De huidige codebase kent geen actieve rolgebaseerde toegangscontrole in de admin. De functie isAllowed($sAction, $sSubject) (src/legacy_functions.php:162) geeft altijd true terug — alle geauthenticeerde admin-gebruikers hebben volledige toegang tot alle routes.

Klant-side zijn er wel rechten via klanttags (AdminCustomerTagController). Een klanttag heeft een permissions-array (bijv. permissions[invoices][view], permissions[x-coins][view]) die de zichtbaarheid van storefront-functies per klantgroep bepaalt. Dit zijn geen admin-gebruikersrechten.

Ingelogde klanten op de storefront kennen drie rollen (_core/model/classes/atx/customers/Login.php):

Constante Niveau
Login::CUSTOMER_ROLE_REGULAR Standaard klant
Login::CUSTOMER_ROLE_ACCOUNT_MANAGER Accountmanager
Login::CUSTOMER_ROLE_SUPER_USER Superdoorgebruiker

CLI-commands (admin-kant)

Located under _admin/model/classes/atx/cli/commands/. Aangeroepen via ./cli.php (niet ./bin/console):

Command-klasse Doel
CsvImportCommand CSV-import
EncryptionCommand Versleuteling
GenerateEntityCommand Entiteitsscaffold
GenerateModuleCommand Modulescaffold
GeneratePageCommand Paginascaffold
GenerateSitemapCommand Sitemap genereren
SendInvoiceCommand Factuur versturen
TranslationDebugCommand Vertaling debuggen

Configuratiebestanden

Bestand Inhoud
_admin/config/menu.php Navigatiestructuur (15 groepen)
_admin/config/routing.php AJAX-route-naar-controller-mapping (77 routes)
_admin/config/pages.xml 4 volledige paginaroutes
_admin/config/dialogs.php Voorgerenderde HTML-dialoogfragmenten
_admin/config/config.php Leeg (placeholder)