Skip to content

MelisCore

Le cœur de la plateforme : la coquille du backoffice, l'arbre de configuration, l'authentification, les droits, les utilisateurs, les logs, les événements et la couche de services sur laquelle reposent tous les autres modules. Paquet melisplatform/melis-core.

Objectif

MelisCore est le module fondateur de Melis Platform. Il fournit la coquille de l'application backoffice, l'arbre de configuration MelisCoreConfig qui agrège les fichiers app.*.php de chaque module, l'authentification et les droits par outil, la gestion des utilisateurs, le sous-système de logs, le tableau de bord (widgets), la gestion des plateformes/environnements, la suppression automatique RGPD, un point d'entrée d'authentification micro-service, ainsi que la couche partagée de services et de view helpers consommée par les autres modules. Presque tous les modules melisplatform/* en dépendent.

L'activer

MelisCore est un module Laminas standard. Il est chargé par le config/melis.module.load.php du squelette :

php
return [
    'MelisCore',
    // … autres modules …
];

Il doit être chargé tôt — la plupart des modules appellent ses services. Ses propres dépendances composer tirent melis-asset-manager, melis-composerdeploy et melis-dbdeploy, et il charge automatiquement les composants Laminas dont il a besoin (Laminas\I18n, Laminas\Router, Laminas\Form, Laminas\Db, Laminas\Cache, …) via son config/module.load.php.

Services clés

Enregistrés comme alias du service_manager dans vendor/melisplatform/melis-core/config/module.config.php :

Alias de serviceRôle
MelisCoreConfigL'arbre de configuration. Lit n'importe quelle config app.* agrégée par chemin avec getItem('meliscore/datas/…') ; getMelisKeys() / getMelisKeyData() résolvent les melisKey ; getItemPerPlatform(), getFormMergedAndOrdered().
MelisCoreAuthAuthentification du backoffice. getAuthRights() renvoie le XML des droits de l'utilisateur connecté.
MelisCoreRightsContrôle d'accès par outil. isAccessible($xmlRights, $sectionId, $itemId), getRightsValues($userId), createXmlRightsValues($userId, $datas).
MelisCoreUserAides utilisateur : getUserXmlRights(), isItemRightChecked(), getUserConnectionData(), getUserLastLoggedInDate().
MelisCoreDispatchLiaison de dispatch des plugins front/back : dispatchPluginAction($e, $nameContainer, $nameVarSession, $controller, $vars).
MelisCoreToolL'assistant d'outil backoffice utilisé par les contrôleurs d'outils (colonnes, formulaires, modales, config DataTable, export CSV). Voir Créer un outil.
MelisCoreLogServiceJournal d'activité : logAction(), saveLog(), getLogList(), getLogType(), traductions des types de log.
MelisCoreDashboardServiceConstruit le tableau de bord backoffice à partir de ses plugins enregistrés.
MelisCoreTranslationCharge/fusionne les traductions des modules.
MelisCoreFlashMessengerMessages flash inter-requêtes.
MelisCoreImageAide à la manipulation d'images.
MelisCoreLostPassword / MelisCoreCreatePassword / MelisPasswordSettingsServiceFlux de mot de passe perdu, liens de création de compte et politique/historique de mots de passe.
MelisCoreEmailSendingService / MelisCoreBOEmailServiceModèles d'e-mails backoffice et envoi.
ModulesService (MelisCoreModulesService)Liste/active/désactive les modules de la plateforme.
MelisCorePlatformSchemeServiceGestion des schémas de plateforme (environnement).
MelisCoreGdprService / MelisCoreGdprAutoDeleteServiceTraitement RGPD des données et suppression automatique planifiée.
MelisCorePluginsService / MelisCoreDashboardPluginsServiceEnregistrement et droits des plugins et plugins de tableau de bord.
MelisCoreCacheSystemServiceAides de lecture/écriture du cache.
MelisCoreAnnouncementServiceAnnonces du backoffice : getLists(), saveAnnouncement(), deleteAnnouncement().
MelisGeneralService / MelisCoreFormServiceUtilitaires généraux et construction/fusion de formulaires.

Une fabrique abstraite (MelisCore\Factory\MelisAbstractFactory) et des alias par table (MelisCoreTableUser, MelisCoreTableLog, …) sont également enregistrés.

Backoffice

MelisCore injecte la section Système en haut de l'arbre des outils du backoffice (config/app.toolstree.php, melisKey de section meliscore_toolstree_section), notamment :

Outil (melisKey)ContrôleurObjectif
meliscore_tool_system_configMelisCore\Controller\MelisCoreOtherConfigConfiguration système.
meliscore_tool_user_module_managementMelisCore\Controller\ModulesActiver/désactiver et réordonner les modules.
meliscore_tool_platformMelisCore\Controller\PlatformsDéclarer les plateformes/environnements (local, pré-prod, prod).
meliscore_tool_emails_mngtMelisCore\Controller\EmailsManagementGestion des modèles d'e-mails backoffice.
meliscore_tool_phpunitMelisCore\Controller\MelisPhpUnitToolExécuter les suites de tests des modules.

La gestion des utilisateurs passe par MelisCore\Controller\User / ToolUser (l'outil Utilisateurs), et la suppression automatique RGPD par MelisCore\Controller\MelisCoreGdprAutoDelete*. Le tableau de bord est servi par MelisCore\Controller\Dashboard / DashboardPlugins.

Plugins de tableau de bord

MelisCore fournit le framework du tableau de bord (widgets backoffice) et plusieurs widgets intégrés, chacun avec un fichier de config sous config/dashboard-plugins/ :

MelisCoreDashboardAnnouncementPlugin, MelisCoreDashboardBubbleNewsMelisPlugin, MelisCoreDashboardBubbleUpdatesPlugin, MelisCoreDashboardBubbleNotificationsPlugin, MelisCoreDashboardBubbleChatPlugin, MelisCoreDashboardRecentUserActivityPlugin.

MelisCoreDashboardTemplatingPlugin est la classe de base dont hérite chaque widget backoffice — voir Plugins : templating & tableau de bord.

Front office

MelisCore est un module backoffice/plateforme, mais il enregistre des view helpers partagés (dans config/module.config.php, section view_helpers) utilisés dans les deux offices :

View helperRôle
MelisGenericTableAffiche un tableau de données générique.
MelisDataTableAide à l'intégration DataTables.
MelisModal / MelisModalInvokerRendu/invocation des modales backoffice.
MelisTextHelperAide au formatage/échappement de texte.
MelisCoreHeadPluginAgrégation des scripts/styles d'en-tête pour la coquille.
MelisDashboardDragDropZone / MelisCoreDashboardBubblePluginRendu des zones du tableau de bord.
getMelisSectionIconsRésout les icônes des sections de l'arbre d'outils.
MelisFieldCollection / MelisFieldRowAides au rendu des formulaires.

Il expose également un point d'entrée d'authentification micro-service (routes microservice / microservice_list, contrôleur MelisCore\Controller\MelisCoreMicroService) adossé à melis_core_microservice_auth.

Tables de base de données

Créées par install/sql/setup_structure.sql et les deltas de install/dbdeploy/ :

TableContenu
melis_core_userUtilisateurs du backoffice.
melis_core_user_roleRôles / XML des droits utilisateur.
melis_core_user_connection_dateHistorique des connexions.
melis_core_user_password_historyHistorique de réutilisation des mots de passe (politique).
melis_core_lost_password / melis_core_create_passwordJetons de réinitialisation et de création de compte.
melis_core_langLangues du backoffice.
melis_core_log / melis_core_log_type / melis_core_log_type_transJournal d'activité + types & traductions.
melis_core_platform / melis_core_platform_schemePlateformes (environnements) et leurs schémas.
melis_core_dashboardsDisposition du tableau de bord par utilisateur.
melis_pluginsPlugins enregistrés.
melis_core_announcementAnnonces du backoffice.
melis_core_bo_emails / melis_core_bo_emails_detailsModèles d'e-mails backoffice.
melis_core_microservice_auth / melis_core_microservice_logsAuthentification micro-service & logs d'appels.
melis_core_gdpr_delete_config / …_emails / …_emails_sent / …_emails_logs / …_emails_smtpConfiguration de suppression automatique RGPD & suivi des e-mails.

Exemple

Lire une valeur de config, vérifier un droit et écrire une entrée de log depuis un contrôleur :

php
$config  = $this->getServiceManager()->get('MelisCoreConfig');
$rights  = $this->getServiceManager()->get('MelisCoreRights');
$auth    = $this->getServiceManager()->get('MelisCoreAuth');
$logs    = $this->getServiceManager()->get('MelisCoreLogService');

$xmlRights = $auth->getAuthRights();
if ($rights->isAccessible($xmlRights, 'meliscore_toolstree_section', 'meliscore_tool_platform')) {
    $logs->logAction(/* … */);
}

Fichiers clés

ConcernChemin
Amorçage du modulevendor/melisplatform/melis-core/src/Module.php
Config principale (services, contrôleurs, view helpers, routes)vendor/melisplatform/melis-core/config/module.config.php
Arbre des outils backofficevendor/melisplatform/melis-core/config/app.toolstree.php
Config interface / formulaires / e-mailsvendor/melisplatform/melis-core/config/app.interface.php, app.forms.php, app.emails.php
Configs des plugins de tableau de bordvendor/melisplatform/melis-core/config/dashboard-plugins/
Composants Laminas à chargervendor/melisplatform/melis-core/config/module.load.php
Servicesvendor/melisplatform/melis-core/src/Service/
Contrôleursvendor/melisplatform/melis-core/src/Controller/
Plugins de tableau de bordvendor/melisplatform/melis-core/src/Controller/DashboardPlugins/
Passerelles de tablesvendor/melisplatform/melis-core/src/Model/Tables/
View helpersvendor/melisplatform/melis-core/src/View/Helper/
SQL d'installation & deltasvendor/melisplatform/melis-core/install/sql/, install/dbdeploy/
Traductionsvendor/melisplatform/melis-core/language/

Voir aussi la Référence des modules, Créer un outil et Plugins.