Search by

libriciel / asalae-core

ludeusepommateaupviver

Coeur de asalae2

Package info

gitlab.adullact.net/Libriciel/archivage/asalae-core.git

Type:cakephp-plugin

pkg:composer/libriciel/asalae-core

Statistics

Installs: 5 648

Dependents: 0

Suggesters: 0

3.0.10 2026-04-24 15:26 UTC

README

License build status coverage report

Plugin CakePHP 4.4 regroupant le code commun à asalae, versae et refae : authentification, middlewares, commandes, crons, workers, drivers de volumes et d'horodatage, utilitaires et helpers de vue.

Dépendance de

ProjetBuildCoverage
asalaebuild statuscoverage report
versaebuild statuscoverage report
refaebuild statuscoverage report

Dépendances

ProjetBuildCoverage
cakephp-beanstalkbuild statuscoverage report
cakephp-datacompressorbuild statuscoverage report
cakephp-filesystembuild statuscoverage report
cakephp-state-machinebuild statuscoverage report
cakephp4-bootstrap-helpersbuild statuscoverage report
file-convertersbuild statuscoverage report
file-validatorbuild statuscoverage report
seda2pdfbuild statuscoverage report
trusted-timestampsbuild statuscoverage report

Prérequis

  • PHP ^7.4 avec les extensions curl, dom, fileinfo, http (pecl_http, paquet php-http), iconv, intl, json, libxml, mbstring, openssl, pdo, posix, soap, sockets, xml, zip, zmq (paquet php-zmq)
  • Outils système appelés directement :
    • sf (siegfried) : identification du format des fichiers (SiegfriedsTable)
    • mediainfo : métadonnées des fichiers audio, vidéo et image (MediainfosTable)
    • xmllint (paquet libxml2-utils) et java (paquet default-jre-headless, pour jing, fourni dans resources/) : validation des XML par schéma XSD ou RNG (ValidatorXml)
    • openssl : horodatage local (TimestampingLocal) et certificats d'horodatage (TSACertForm)
  • Antivirus : démon ClamAV (clamd) joignable en TCP, localhost:3310 par défaut (clés Antivirus.host et Antivirus.port)
  • Les binaires vérifiés par Check::missings() (page de vérification de l'application) sont listés dans Check::$prerequis ; la plupart servent aux dépendances file-converters, file-validator et seda2pdf, dont les README détaillent les prérequis.

Installation

composer require libriciel/asalae-core:dev-master

Dans Application::bootstrap() :

$this->addPlugin('AsalaeCore', ['bootstrap' => false]);

Utilisation

Auth

Service d'authentification comprenant Authenticator et Identifier pour connexion : Basic, Form (mot de passe), Keycloak, OpenIDConnect, Session et Url (ex : lien dans les mails)

Identifiers : Password, Ldap, Keycloak, OpenIDConnect et Url

Application.php (asalae v2.2.x)

        $authenticationService->loadAuthenticator(
            'Basic',
            [
                'className' => BasicAuthenticator::class,
            ]
        );

Middleware

Middlewares communs : CorsMiddleware (Cross-Origin Resource Sharing), MaintenanceMiddleware (interruption de service), RateLimiterMiddleware (protection contre le brute-force, à placer après l'authentification), UrlAuthMiddleware (gestion des erreurs lors d'un accès par url).

Application.php (asalae v2.2.x)

        $middlewareQueue
            // Cross-Origin Resource Sharing
            ->add(new CorsMiddleware)

            // Interruption de service
            ->add(new MaintenanceMiddleware)
            // ...

            // add Authentication after RoutingMiddleware
            ->add(new AuthenticationMiddleware($this))

            // limite les tentatives de login
            ->add(new RateLimiterMiddleware)

            // Gestion des erreurs dans un context UrlAuth
            ->add(new UrlAuthMiddleware)

Command

Commandes bin/cake communes :

  • cron list, cron run, cron unlock : exécution et déverrouillage des crons
  • job list, job view, job edit, job pause, job resume, job delete… : gestion des jobs beanstalkd
  • worker_manager : gestion des workers (list, stop, restart, kill…)
  • maintenance on, maintenance off, maintenance status, maintenance schedule, maintenance periodic : interruption de service
  • hash_dir, hash_dir check, hash_dir compare : empreintes d'un dossier
  • roles_perms export, roles_perms import : export / import des permissions des rôles
  • tree repair, tree repair_all : réparation des arbres (lft / rght)
  • database fixtures, fixtures database : fixtures de base de données
bin/cake maintenance on
bin/cake job list --state buried
bin/cake cron run <id_du_cron>

Utility

Utilitaires accessibles via AsalaeCore\Factory\Utility, qui permet de les remplacer par des mocks dans les tests (Utility::set(), Utility::reset()) :

  • Exec : exécution de commandes bash, synchrones ou en arrière-plan
  • Notify : envoi de notifications aux utilisateurs
  • Config : lecture de la configuration (app_default.php, app_local.json et fichiers additionnels)
  • Translit : translittération et manipulation de chaînes
  • ValidatorXml, DOMUtility, XsdToArray : validation et manipulation XML
  • Premis : création d'événements au format PREMIS v3.0
  • Check : vérification de l'application
  • Antivirus : antivirus (Clamav)

src/Command/RestoreArchivesCommand.php (asalae)

        $exec = Utility::get('Exec')->command('sf -json', $dir);
        $json = json_decode($exec->stdout, true);

src/Command/PdfFilesCommand.php (asalae)

        $Notify = Utility::get('Notify');
        foreach ($userIds as $user_id) {
            $Notify->send(
                $user_id,
                [],
                $message,
                $success ? 'alert-success' : 'alert-danger'
            );
        }

View/Helper

  • TableHelper : tableaux générés en javascript (colonnes configurables, actions, filtres)
  • ModalFormHelper, ModalViewHelper : modales de formulaire ou de visualisation et bouton pour les ouvrir
  • FilterHelper, AjaxPaginatorHelper : filtres de recherche et pagination ajax
  • TabsHelper, MultiStepFormHelper, UploadHelper, ViewTableHelper : onglets, formulaires en plusieurs étapes, upload, tableau de visualisation d'une entité
  • FaHelper : icônes, intègre la charte graphique Libriciel
  • AclHelper : vérification des droits d'accès à un controller/action

templates/Admins/ajax_check_disk.php

echo $this->Table->create('disk-state')
    ->fields(
        [
            'filesystem' => ['label' => __("Filesystem")],
            'size' => ['label' => __("Taille")],
            'used' => ['label' => __("Utilisé")],
            'avail' => ['label' => __("Disponible")],
            'use' => ['label' => __("Utilisé en %")],
            'mounted_on' => ['label' => __("Monté sur")]
        ]
    )
    ->data($data)
    ->params(
        [
            'identifier' => 'mounted_on',
        ]
    )
    ->generate();

templates/Admins/Volumes/index_volumes.php

$this->ModalForm->create('add-volume')
    ->modal(__("Ajout d'un volume"))
    ->javascriptCallback(
        'TableGenericAction.afterAdd('.$tableVolumes->tableObject.', "Volumes")'
    )
    ->output(
        'button',
        $this->Fa->charte('Ajouter', __("Ajouter un volume")),
        '/Admins/addVolume'
    )
    ->generate(['class' => 'btn btn-success', 'type' => 'button'])

Driver

  • Volume : stockage des fichiers d'archives sur système de fichiers (VolumeFilesystem) ou S3 (VolumeS3)
  • Timestamping : horodatage local, OpenSign, IAIK ou générique (via trusted-timestamps)

TestSuite et MinkSuite

Classes de base et traits pour les tests unitaires (TestCase, fixtures, tests d'intégration, de commandes et de crons) et pour les tests navigateur Mink (MinkCase).

Tests

composer test
composer cs-check