libriciel / asalae-core
Coeur de asalae2
Package info
gitlab.adullact.net/Libriciel/archivage/asalae-core.git
Type:cakephp-plugin
pkg:composer/libriciel/asalae-core
Requires
- php: ~8.3
- ext-curl: *
- ext-dom: *
- ext-fileinfo: *
- ext-http: *
- ext-iconv: *
- ext-intl: *
- ext-json: *
- ext-ldap: *
- ext-libxml: *
- ext-mbstring: *
- ext-openssl: *
- ext-pdo: *
- ext-posix: *
- ext-soap: *
- ext-sockets: *
- ext-xml: *
- ext-zip: *
- ext-zmq: *
- adldap2/adldap2: ^10.0
- aws/aws-sdk-php: ^3.87
- cakephp/authentication: ^3.0
- cakephp/authorization: ^3.0
- cakephp/cakephp: ^5.0.1
- cakephp/plugin-installer: ^2.0
- cboden/ratchet: ~0.4.0
- codeinc/strip-accents: ^1.0
- composer/semver: ^1.4 || ^3.3
- dracoblue/craur: ^3.1
- friendsofcake/cakephp-csvview: ^5.0
- guzzlehttp/guzzle: ~6.3.0 || ^7.5.0
- jumbojett/openid-connect-php: ^1.0
- lcobucci/jwt: ^5.4
- libriciel/cakephp-beanstalk: dev-php83
- libriciel/cakephp-datacompressor: dev-master as 1.8.0 || *
- libriciel/cakephp-filesystem: dev-master || *
- libriciel/cakephp-state-machine: dev-php83
- libriciel/cakephp4-bootstrap-helpers: dev-php83
- libriciel/cakephp5-acl: dev-master
- libriciel/file-converters: dev-master as 1.3.0 || *
- libriciel/file-validator: dev-master as 1.2.0 || *
- libriciel/seda2pdf: dev-master as 1.3.0 || *
- libriciel/trusted-timestamps: ~1.1
- neitanod/forceutf8: ^2.0
- pda/pheanstalk: ~3.2.0
- react/zmq: ^0.4.0
- symfony/mercure: ^0.7.0
- symfony/polyfill-uuid: ^1.22
- symfony/var-dumper: ^6.4
- twig/intl-extra: ^3.3
- twig/twig: ^3.3
- vlucas/phpdotenv: ^5.6
Requires (Dev)
- cakephp/bake: ^3.0.0
- cakephp/migrations: ^4.0.0
- dmore/chrome-mink-driver: ^2.9 || *
- fakerphp/faker: ^1.24
- phpmetrics/phpmetrics: ^2.8
- phpunit/phpunit: ^10.1.0
- psy/psysh: ^0.12.5
- robmorgan/phinx: 0.16.10
- squizlabs/php_codesniffer: ^4.0.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-master
- 3.0.10
- 2.2.0
- 2.1.10
- 2.1.9.1
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2.1
- 2.1.2
- 2.1.0
- 2.0.0
- 1.0.10
- 1.0.9.1
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 1.0.0a7
- 1.0.0a6.2
- 1.0.0a6.1
- 1.0.0a6
- 1.0.0a5
- 1.0.0a4
- 1.0.0a3
- 1.0.0a2
- 1.0.0a1
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-php83
- dev-php81
- dev-no_ticket-fixtures_dev_seam
- dev-renovate-cakephp-cakephp-5.x
- dev-2950-mink-service-horodatage
- dev-renovate-major-symfony
- dev-2950-mink-admin-tech-system-check
- dev-2950-mink-admin-tech-systemCheck
- dev-renovate-registry.libriciel.fr-443-public-archivage-fatapache-4.x
- dev-renovate-cakephp-authentication-4.x
- dev-renovate-registry.libriciel.fr-443-public-archivage-fatapache-3.x
- dev-no_ticket-fix_double_appel_aux_champs_virtuels_dans_les_indexes
- dev-renovate-phpunit-phpunit-13.x
- dev-renovate-cakephp-migrations-5.x
- dev-2684-issue-sort
- dev-versae790-securite_des_headers_a_corriger
- dev-tree_branch_repair
- dev-renovate-twig-monorepo
- dev-renovate-pda-pheanstalk-8.x
- dev-renovate-phpunit-phpunit-12.x
- dev-renovate-lcobucci-jwt-5.x-lockfile
- dev-asa2301-filtre_sur_plan_de_classement
- dev-2252-tree_repair_optimization
- dev-asa1996
- dev-php83cake5
- dev-remote-mink
- dev-cake3-master
- dev-refae
This package is auto-updated.
Last update: 2026-11-03 15:05:20 UTC
README
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
| Projet | Build | Coverage |
|---|---|---|
| asalae | ||
| versae | ||
| refae |
Dépendances
| Projet | Build | Coverage |
|---|---|---|
| cakephp-beanstalk | ||
| cakephp-datacompressor | ||
| cakephp-filesystem | ||
| cakephp-state-machine | ||
| cakephp4-bootstrap-helpers | ||
| file-converters | ||
| file-validator | ||
| seda2pdf | ||
| trusted-timestamps |
Prérequis
- PHP
^7.4avec les extensionscurl,dom,fileinfo,http(pecl_http, paquetphp-http),iconv,intl,json,libxml,mbstring,openssl,pdo,posix,soap,sockets,xml,zip,zmq(paquetphp-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(paquetlibxml2-utils) etjava(paquetdefault-jre-headless, pourjing, fourni dansresources/) : 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:3310par défaut (clésAntivirus.hostetAntivirus.port) - Les binaires vérifiés par
Check::missings()(page de vérification de l'application) sont listés dansCheck::$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 cronsjob list,job view,job edit,job pause,job resume,job delete… : gestion des jobs beanstalkdworker_manager: gestion des workers (list, stop, restart, kill…)maintenance on,maintenance off,maintenance status,maintenance schedule,maintenance periodic: interruption de servicehash_dir,hash_dir check,hash_dir compare: empreintes d'un dossierroles_perms export,roles_perms import: export / import des permissions des rôlestree 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-planNotify: envoi de notifications aux utilisateursConfig: lecture de la configuration (app_default.php,app_local.jsonet fichiers additionnels)Translit: translittération et manipulation de chaînesValidatorXml,DOMUtility,XsdToArray: validation et manipulation XMLPremis: création d'événements au format PREMIS v3.0Check: vérification de l'applicationAntivirus: 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 ouvrirFilterHelper,AjaxPaginatorHelper: filtres de recherche et pagination ajaxTabsHelper,MultiStepFormHelper,UploadHelper,ViewTableHelper: onglets, formulaires en plusieurs étapes, upload, tableau de visualisation d'une entitéFaHelper: icônes, intègre la charte graphique LibricielAclHelper: 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