Commit 30bad651 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Mise à jour de la documentation pour les développeurs (Usage simple)

parent 93f9907e
Loading
Loading
Loading
Loading
+45 −80
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ return $config;

### Dossier des documents

Vérifiez que le dossier d'écriture des documents à signer est bien accessible en écriture. C'est le dossier indiqué dans la clef `documents_path`
Vérifiez que le dossier d'écriture des documents à signer est bien accessible en écriture. C'est le dossier indiqué dans la clef `documents_path` (par défaut `./data/documents/signature`)

A cette étape, le module est opérationnel et permet d'utiliser ces services pour les documents de votre application.

@@ -94,17 +94,51 @@ A cette étape, le module est opérationnel et permet d'utiliser ces services po
Pour utiliser les éléments de l'interface, Vous devez disposer des privilèges Unicaen, voici ceux utilisés par le module : 

```sql
INSERT INTO public.privilege (id,categorie_id,code,libelle,ordre,root_id,spot) VALUES
	 (123,10,'SIGNATURE_INDEX','Liste des signatures',NULL,NULL,7),
	 (124,10,'SIGNATURE_DELETE','Suppression des signatures',NULL,NULL,7),
	 (125,10,'SIGNATURE_CREATE','Création de signature',NULL,NULL,7),
	 (126,10,'SIGNATURE_SYNC','Synchronisation de signature',NULL,NULL,7),
	 (127,10,'SIGNATURE_ADMIN','Accès à l''interface d''administration / gestion des signatures et processus en cours',NULL,NULL,7),
	 (128,10,'SIGNATURE_ADMIN_CONFIG','Configuration des processus métier',NULL,NULL,7);
INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (
    CODE,
    LIBELLE,
    NAMESPACE,
    ORDRE
)
values (
           'signature',
           'UnicaenSignature - Gestion des signatures',
           'UnicaenSignature\Provider\SignaturePrivileges',
           1101
       )
    ON CONFLICT (CODE) DO
UPDATE SET
    LIBELLE=excluded.LIBELLE,
    NAMESPACE=excluded.NAMESPACE,
    ORDRE=excluded.ORDRE;

WITH d(code, lib, ordre) AS (
    SELECT 'SIGNATURE_INDEX', 'Liste des signatures', 1 UNION
    SELECT 'SIGNATURE_DELETE', 'Suppression des signatures', 2 UNION
    SELECT 'SIGNATURE_CREATE', 'Création de signature', 3 UNION
    SELECT 'SIGNATURE_SYNC', 'Synchronisation de signature', 5 UNION
    SELECT 'SIGNATURE_ADMIN', 'Accès à l''interface d''administration', 6 UNION
    SELECT 'SIGNATURE_ADMIN_CONFIG', 'Configuration des processus métier', 5
)
INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
         JOIN unicaen_privilege_categorie cp ON cp.CODE = 'mail'
    ON CONFLICT (CATEGORIE_ID, CODE) DO
UPDATE SET
    LIBELLE=excluded.LIBELLE,
    ORDRE=excluded.ORDRE;

insert into unicaen_privilege_privilege_role_linker
    (role_id, privilege_id)
    (select role.id, privilege.id from unicaen_utilisateur_role role,
                                       unicaen_privilege_privilege privilege
                                           join unicaen_privilege_categorie cp on privilege.categorie_id = cp.id
     where role.role_id = 'Admin_tech'
       and cp.code in('signature'))
    on conflict do nothing;
```

> Ces requêtes doivent être adaptées selon votre application

### Activer les ASSETS (UI)

Si vous utilisez les interfaces du modules, vous devez rendre accessible les scripts JS/CSS à l'url `/unicaen/signature`, le plus simple est de passer par un lien symbolique : 
@@ -117,78 +151,9 @@ ln -s ../../vendor/unicaen/signature/public/dist signature

## Utilisation avancée pour le développement 

### Activer les logs détaillés

UnicaenSignature permet de tracer les opérations effectuées par le module en utilisant **Monolog**, vous pouvez l'activer dans la configuration : 

```php
<?php
// config/autoload/signature.local.php
return [
    'unicaen-signature' => [
        'logger' => [
            ///////////////////////////////////////
            // Activation d'un logger autonome
            'enable'          => true, // Actif
            'level'           => \Monolog\Logger::DEBUG, // Niveau de log
            'file'            => __DIR__ . '/../../logs/signature.log', // Fichier d'écriture
            'file_permission' => 0666,

            ///////////////////////////////////////
            /// Sortie standard (pour le développement le built-in serveur)
            'stdout'          => false,

            ///////////////////////////////////////
            /// Logger complémentaire (celui de l'application utilisant le module)
            /// -> implementation de LoggerInterface (ex: Monolog)
            'customLogger' => null
            //'customLogger'    => 'Logger' // customLogger (LoggerInterface) 
        ],
```

Le fichier `logs/signature.log` doit pouvoir être créé/écrit, il contiendra des logs détaillés selon le niveau de log définit dans `level`.


### Ajouter les log de signature à vos logs (Monolog)

La clef `customLogger` vous permet de renseigner votre service de log si vous en utilisez un (un `Logger` de **Monolog**).


### Archiver les échanges avec le parapheur
 - [x] [Usage simple pour signer des documents](usage.md)

Vous pouvez également archiver les échanges avec le parapheur avec l'option `archive_exchange` (Si l'implementation du parapheur la prend en charge).

Exemple pour ESUP : 

```php
<?php
// config/autoload/unicaen-signature.local.php 
use Psr\Container\ContainerInterface;

return [
    /**  **/
    'unicaen-signature' => [
        // ...
        // Configuration des parafeurs numérique
        'letterfiles'            => [
            /************/
            [
                // Nom visible côté applicatif
                'label' => 'ESUP',

                // ...

                // [DEV] Emplacement où sont archivé les échanges de données avec le parapheur
                'archive_exchange' => __DIR__.'/../../logs/signature_exchange',

                // ...
            ]
        ]
    ]
];
```

> Attention, TOUTES les transactions avec ESUP seront archivées avec les données brutes reçu du parapheur. Cette option n'est a utiliser que pour auditer un bug ou pour le développement

## Développer un parapheur

+103 −2
Original line number Diff line number Diff line
## Utilisation des commandes
# Utilisation des commandes

### Console de base
## Console de base

L'utilitaire en ligne de commande propose différent outils pour gérer les signatures de l'application

```bash
php vendor/bin/unicaen-signature 
```

Sortie : 
```text
Console Tool

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display help for the given command. When no command is given display help for the list command
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi|--no-ansi  Force (or disable --no-ansi) ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  completion                            Dump the shell completion script
  help                                  Display help for a command
  list                                  List commands
 signature
  signature:add-signature               Création d'un procédure de signature
  signature:check-config                Vérification de la configuration du système de signature éléctronique
  signature:letterfile-info             Récupération des informations sur la procédure de signature dans ESUP
  signature:letterfile-status           Vérification du status de la procédure de signature depuis le parafeur
  signature:letterfiles-list            Vérification du status de la procédure de signature depuis le parafeur
  signature:list                        Liste des procédures de signatures
  signature:notifications               Notifications manuelles des signatures
  signature:process                     Processus
  signature:update-process-all          Actualise l'état des signatures
  signature:update-simplesignature-all  Actualise l'état des signatures
```
## Commandes usuelles

### Vérifier la configuration

la commande `signature:check-config` permet de vérifier la configuration ainsi que le/les accès au parapheur numérique.

```bash
php vendor/bin/unicaen-signature signature:check-config
```

```text
Vérification de la configuration UnicaenSignature
=================================================

LOGGER
------

 Activé : ✅
 Stdout (développement) : non
 Level : 100 (DEBUG)
 File : /home/bouvry/Projects/Unicaen/UnicaenLib/signature-test/config/autoload/../../logs/signature.log

ESUP
----

 Name : esup
 Par défaut : ✅
 Type de signature prise en charge : 
  - [visa_hidden] : Visa caché, Visa applicatif, pas de trace dans le document)
  - [visa_visual] : Visa visuel, Visa visuel. Nom, prénom et date appliqués sur le document.)
  - [sign_visual] : Signature calligraphique, Signature calligraphique. Signature au format image. Appliquée sur le document.)
  - [sign_certif] : Signature par certificat (PKCS12), Signature certifiée avec un keystore/certificat via un magasin de clés au format PKCS12. Appliquée sur le document.)
  - [sign_eidas] : Signature par clef cryptographique, Signature par clef cryptographique via clé usb (eIDAS) qui contient un certificat. Certificat qui peut être personnel ou au titre de l'établissement (cachet établissement). Appliquée sur le document.)

 Configuration du parafeur : 
 --------------- --------------------------------- -------- 
  clef            valeur                            type    
 --------------- --------------------------------- -------- 
  url             https://signature-pp.unicaen.fr   string  
  createdByEppn   bouvry@unicaen.fr                 string  
 --------------- --------------------------------- -------- 

 Accès au parafeur : 
                                                                                                                
 [OK]                                                                                                                   
```

### Liste des signatures

Affiche la liste des signatures

```bash
php vendor/bin/unicaen-signature signature:list
```

### Liste des processus

Affiche la liste des processus

```bash
php vendor/bin/unicaen-signature signature:process
```




## Annexe

### Commandes dans votre application (exemple)

Exemple, créer un fichier `bin/commands.php` :
+125 −89
Original line number Diff line number Diff line
# Mise à jour de la base de données

```sql
-- Drop table

-- DROP TABLE public.unicaen_signature_observer;

CREATE TABLE public.unicaen_signature_observer
(
    id           int4         NOT NULL,
    signature_id int4 NULL,
    firstname    varchar(64) NULL DEFAULT NULL::character varying,
    lastname     varchar(64) NULL DEFAULT NULL::character varying,
    email        varchar(256) NOT NULL,
    CONSTRAINT unicaen_signature_observer_pkey PRIMARY KEY (id),
    CONSTRAINT fk_eac19423ed61183a FOREIGN KEY (signature_id) REFERENCES unicaen_signature_signature (id)
);
CREATE INDEX idx_eac19423ed61183a ON public.unicaen_signature_observer USING btree (signature_id);

-- Drop table

-- DROP TABLE public.unicaen_signature_process;

CREATE TABLE public.unicaen_signature_process
(
    id               int4         NOT NULL,
    datecreated      timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
    lastupdate       timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
    status           int4 NULL,
    currentstep      int4         NOT NULL,
    document_name    varchar(255) NOT NULL,
    signatureflow_id int4 NULL,
    CONSTRAINT unicaen_signature_process_pkey PRIMARY KEY (id),
    CONSTRAINT fk_994855d2b4090c8a FOREIGN KEY (signatureflow_id) REFERENCES unicaen_signature_signatureflow (id)
);
CREATE INDEX idx_994855d2b4090c8a ON public.unicaen_signature_process USING btree (signatureflow_id);

-- Drop table

-- DROP TABLE public.unicaen_signature_process_step;

CREATE TABLE public.unicaen_signature_process_step
(
    id                   int4 NOT NULL,
    process_id           int4 NULL,
    signature_id         int4 NULL,
    signatureflowstep_id int4 NULL,
    CONSTRAINT unicaen_signature_process_step_pkey PRIMARY KEY (id),
    CONSTRAINT fk_cf70b0a57ec2f574 FOREIGN KEY (process_id) REFERENCES unicaen_signature_process (id),
    CONSTRAINT fk_cf70b0a5c352c4 FOREIGN KEY (signatureflowstep_id) REFERENCES unicaen_signature_signatureflowstep (id),
    CONSTRAINT fk_cf70b0a5ed61183a FOREIGN KEY (signature_id) REFERENCES unicaen_signature_signature (id)
);
CREATE INDEX idx_cf70b0a57ec2f574 ON public.unicaen_signature_process_step USING btree (process_id);
CREATE INDEX idx_cf70b0a5c352c4 ON public.unicaen_signature_process_step USING btree (signatureflowstep_id);
CREATE UNIQUE INDEX uniq_cf70b0a5ed61183a ON public.unicaen_signature_process_step USING btree (signature_id);

-- Drop table

-- DROP TABLE public.unicaen_signature_recipient;

CREATE TABLE public.unicaen_signature_recipient
(
    id           int4         NOT NULL,
    signature_id int4 NULL,
    status       int4         NOT NULL DEFAULT 101,
    firstname    varchar(64) NULL DEFAULT NULL::character varying,
    lastname     varchar(64) NULL DEFAULT NULL::character varying,
    email        varchar(256) NOT NULL,
    phone        varchar(20) NULL DEFAULT NULL::character varying,
    dateupdate   timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
    datefinished timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
    keyaccess    varchar(255) NULL DEFAULT NULL::character varying,
    informations varchar(255) NULL DEFAULT NULL::character varying,
    CONSTRAINT unicaen_signature_recipient_pkey PRIMARY KEY (id),
    CONSTRAINT fk_f47c5330ed61183a FOREIGN KEY (signature_id) REFERENCES unicaen_signature_signature (id)
);
CREATE INDEX idx_f47c5330ed61183a ON public.unicaen_signature_recipient USING btree (signature_id);

-- Drop table

-- DROP TABLE public.unicaen_signature_signature;

CREATE TABLE public.unicaen_signature_signature
-- DROP TABLE unicaen_signature_signature;
CREATE TABLE unicaen_signature_signature
(
    id                      int4         NOT NULL,
    datecreated             timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
@@ -104,11 +26,40 @@ CREATE TABLE public.unicaen_signature_signature
    CONSTRAINT unicaen_signature_signature_pkey PRIMARY KEY (id)
);

-- Drop table
-- DROP TABLE unicaen_signature_recipient;
CREATE TABLE unicaen_signature_recipient
(
    id           int4         NOT NULL,
    signature_id int4 NULL,
    status       int4         NOT NULL DEFAULT 101,
    firstname    varchar(64) NULL DEFAULT NULL::character varying,
    lastname     varchar(64) NULL DEFAULT NULL::character varying,
    email        varchar(256) NOT NULL,
    phone        varchar(20) NULL DEFAULT NULL::character varying,
    dateupdate   timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
    datefinished timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
    keyaccess    varchar(255) NULL DEFAULT NULL::character varying,
    informations varchar(255) NULL DEFAULT NULL::character varying,
    CONSTRAINT unicaen_signature_recipient_pkey PRIMARY KEY (id),
    CONSTRAINT fk_f47c5330ed61183a FOREIGN KEY (signature_id) REFERENCES unicaen_signature_signature (id)
);
CREATE INDEX idx_f47c5330ed61183a ON unicaen_signature_recipient USING btree (signature_id);

-- DROP TABLE public.unicaen_signature_signatureflow;
-- DROP TABLE unicaen_signature_observer;
CREATE TABLE unicaen_signature_observer
(
    id           int4         NOT NULL,
    signature_id int4 NULL,
    firstname    varchar(64) NULL DEFAULT NULL::character varying,
    lastname     varchar(64) NULL DEFAULT NULL::character varying,
    email        varchar(256) NOT NULL,
    CONSTRAINT unicaen_signature_observer_pkey PRIMARY KEY (id),
    CONSTRAINT fk_eac19423ed61183a FOREIGN KEY (signature_id) REFERENCES unicaen_signature_signature (id)
);
CREATE INDEX idx_eac19423ed61183a ON unicaen_signature_observer USING btree (signature_id);

CREATE TABLE public.unicaen_signature_signatureflow
-- DROP TABLE unicaen_signature_signatureflow;
CREATE TABLE unicaen_signature_signatureflow
(
    id          int4 NOT NULL,
    "label"     varchar(255) NULL DEFAULT NULL::character varying,
@@ -117,11 +68,8 @@ CREATE TABLE public.unicaen_signature_signatureflow
    CONSTRAINT unicaen_signature_signatureflow_pkey PRIMARY KEY (id)
);

-- Drop table

-- DROP TABLE public.unicaen_signature_signatureflowstep;

CREATE TABLE public.unicaen_signature_signatureflowstep
-- DROP TABLE unicaen_signature_signatureflowstep;
CREATE TABLE unicaen_signature_signatureflowstep
(
    id                      int4         NOT NULL,
    recipientsmethod        varchar(64) NULL DEFAULT NULL::character varying,
@@ -139,5 +87,93 @@ CREATE TABLE public.unicaen_signature_signatureflowstep
    CONSTRAINT unicaen_signature_signatureflowstep_pkey PRIMARY KEY (id),
    CONSTRAINT fk_a575dc3eb4090c8a FOREIGN KEY (signatureflow_id) REFERENCES unicaen_signature_signatureflow (id)
);
CREATE INDEX idx_a575dc3eb4090c8a ON public.unicaen_signature_signatureflowstep USING btree (signatureflow_id);
CREATE INDEX idx_a575dc3eb4090c8a ON unicaen_signature_signatureflowstep USING btree (signatureflow_id);

-- DROP TABLE unicaen_signature_process;
CREATE TABLE unicaen_signature_process
(
    id               int4         NOT NULL,
    datecreated      timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
    lastupdate       timestamp(0) NULL DEFAULT NULL::timestamp without time zone,
    status           int4 NULL,
    currentstep      int4         NOT NULL,
    document_name    varchar(255) NOT NULL,
    signatureflow_id int4 NULL,
    CONSTRAINT unicaen_signature_process_pkey PRIMARY KEY (id),
    CONSTRAINT fk_994855d2b4090c8a FOREIGN KEY (signatureflow_id) REFERENCES unicaen_signature_signatureflow (id)
);
CREATE INDEX idx_994855d2b4090c8a ON unicaen_signature_process USING btree (signatureflow_id);

-- DROP TABLE unicaen_signature_process_step;
CREATE TABLE unicaen_signature_process_step
(
    id                   int4 NOT NULL,
    process_id           int4 NULL,
    signature_id         int4 NULL,
    signatureflowstep_id int4 NULL,
    CONSTRAINT unicaen_signature_process_step_pkey PRIMARY KEY (id),
    CONSTRAINT fk_cf70b0a57ec2f574 FOREIGN KEY (process_id) REFERENCES unicaen_signature_process (id),
    CONSTRAINT fk_cf70b0a5c352c4 FOREIGN KEY (signatureflowstep_id) REFERENCES unicaen_signature_signatureflowstep (id),
    CONSTRAINT fk_cf70b0a5ed61183a FOREIGN KEY (signature_id) REFERENCES unicaen_signature_signature (id)
);
CREATE INDEX idx_cf70b0a57ec2f574 ON unicaen_signature_process_step USING btree (process_id);
CREATE INDEX idx_cf70b0a5c352c4 ON unicaen_signature_process_step USING btree (signatureflowstep_id);
CREATE UNIQUE INDEX uniq_cf70b0a5ed61183a ON unicaen_signature_process_step USING btree (signature_id);

-- Sequences
CREATE SEQUENCE public.unicaen_signature_observer_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1
	CACHE 1
	NO CYCLE;

CREATE SEQUENCE public.unicaen_signature_process_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1
	CACHE 1
	NO CYCLE;

CREATE SEQUENCE public.unicaen_signature_process_step_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1
	CACHE 1
	NO CYCLE;

CREATE SEQUENCE public.unicaen_signature_recipient_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1
	CACHE 1
	NO CYCLE;

CREATE SEQUENCE public.unicaen_signature_signature_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1
	CACHE 1
	NO CYCLE;

CREATE SEQUENCE public.unicaen_signature_signatureflow_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1
	CACHE 1
	NO CYCLE;

CREATE SEQUENCE public.unicaen_signature_signatureflowstep_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1
	CACHE 1
	NO CYCLE;
```
 No newline at end of file

doc/dev/usage.md

0 → 100644
+324 −0

File added.

Preview size limit exceeded, changes collapsed.

+23.3 KiB

File added.

No diff preview for this file type.