Commit a07c4cff authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Fusion manuelle avec le master

parent 4cbbeba7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
deploy/
vendor/
.idea
.DS_Store
+1 −1
Original line number Diff line number Diff line
@@ -19,4 +19,4 @@ cache:
update-satis:
  stage: publish
  script:
    - update-satis
    - curl https://gest.unicaen.fr/packagist/update
+31 −9
Original line number Diff line number Diff line
CHANGELOG
=========
# CHANGELOG

1.0.1 (04/02/2020)
------------------
## 3.2.1

- Mise à jour des dépendances avec Composer
- Ajout de la colonne user_role.accessible_exterieur pour gérer le blocages de rôles depuis l'extérieur
- Mise à jour des dépendances.
- Ajout de `post-install-cmd` et de `post-create-project-cmd` utiles dans le `composer.json`.

1.0.0 (19/09/2019)
------------------
## 3.2.0

### Ajout
- Simplification des configs pour Docker.

## 3.1.0

- Dépendance avec les versions 3.0 des bib unicaen.
- Version avec une bdd postgres dans un service docker.
- Création du fichier de licence LICENSE.
- Création du script install.sh pour mimer ce qui est fait dans sygal.
- Nouvelle façon de mettre le numéro de version dans la config (cf. bin/bump-version).

## 3.0.0

- Dépendances: montée possible en ZF 3.
- Création d'un module démo avec bdd sqlite minimale.
- Docker: modif des ports utilisés et passage à PHP 7.3.
- Config pour tests unitaires.
- Désactivation du validateur de session HttpUserAgent car peut provoquer une erreur 'Session validation failed' sur android.



## 1.0.1

- Mise à jour des dépendances avec Composer.
- Ajout de la colonne user_role.accessible_exterieur pour gérer le blocages de rôles depuis l'extérieur.

## 1.0.0

- Embryon d'application.
+100 −16
Original line number Diff line number Diff line
# Squelette d'application Unicaen

Ce squelette d'application constitue un socle minimal pour entamer rapidement le développement d'une nouvelle 
application à la mode "Unicaen".

## Build et lancement du container Docker

    $ docker-compose up --build
## Création d'une nouvelle appli à partir du squelette

## Installation des dépendances PHP :
Imaginons que nous voulons créer une nouvelle appli PHP 7.3 dans le répertoire `./newapp`.

### Préalable

Nous aurons besoin de l'image Docker `unicaen-dev-php${PHP_VERSION}-apache` pour être dans un
environnement PHP dont on maîtrise la version. Pour obtenir puis construire cette image, reportez-vous au dépôt 
[unicaen-image](https://git.unicaen.fr/open-source/docker/unicaen-image).

### Création des sources de l'application

- Pour obtenir le master des sources du squelette d'application :

```bash
APP_DIR=newapp

git clone git@git.unicaen.fr:lib/unicaen/skeleton-application.git ${APP_DIR}
cd ${APP_DIR}
```

- Puis pour installer les dépendances PHP :

```bash
# si vous avez la joie d'être derrière un proxy :
#HTTP_PROXY=http://10.14.128.99:3128
#HTTPS_PROXY=${HTTP_PROXY}
#NO_PROXY=unicaen.fr,localhost

PHP_VERSION=7.3

docker run \
--rm \
-v $PWD:/app \
-w /app \
--env HTTP_PROXY \
--env HTTPS_PROXY \
--env NO_PROXY \
unicaen-dev-php${PHP_VERSION}-apache \
composer install
```

- Puis pour installer les fichiers de config exemples :

```bash
docker run \
--rm \
-v $PWD:/app \
-w /app \
--env HTTP_PROXY \
--env HTTPS_PROXY \
--env NO_PROXY \
unicaen-dev-php${PHP_VERSION}-apache \
composer run-script "post-create-project-cmd"
```

### Droits d'écriture

Comme les commandes lancées via Docker (comme ici, `composer`) sont exécutées en `root`, il faut reprendre la main 
sur les fichiers créés.

```bash
sudo chown -R ${USER}:${USER} .
```

### Création du dépôt git

```bash
git init
git add .
git commit -m "Squelette de l'application"
git push --set-upstream git@git.unicaen.fr:dsi/${APP_DIR}.git master
```

*NB : la création du dépôt git de cette façon n'est possible que si vous disposez des droits suffisants dans le 
namespace gitlab spécifié.*


## Construction et lancement du container Docker

```bash
docker-compose up --build
```

    $ docker-compose run --rm skeleton-application composer install --no-suggest

## Module Demo

@@ -16,32 +96,35 @@ permettant d'avoir une authentification locale qui fonctionne.

Cette base de données est fournie par le service `db` (fichier de config `docker-compose.yml`).
Il y a également un service `adminer` fournissant de quoi explorer la base de données avec l'outil 
["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `http://localhost:9080` et en utilisant les informations
 de connexion à la bdd présentes dans le `docker-compose.yml`.
Pour explorer/administrer la base de données de l'extérieur du container (avec PHPStorm par exemple), 
["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `http://localhost:9080` (sélectionner "PostgeSQL"
et utiliser les informations de connexion à la bdd présentes dans le `docker-compose.yml`).
Pour explorer/administrer la base de données *de l'extérieur du container* (avec PHPStorm par exemple), 
l'adresse de la base est cette fois `localhost:8432`.

NB :
- Grâce au montage `./data/db:/var/lib/postgresql/data` spécifié dans `docker-compose.yml`, la base de données est 
  persistée dans le répertoire `data/db` de l'appli.
  persistée dans le répertoire `data/db` de l'appli (d'ailleurs, ne pas oublier de faire un `sudo chmod -R 777 data/db`).
- Les scripts de création de la base de données exécutés au lancement du container (si la base n'existe pas déjà)
  se trouvent dans le répertoire `./docker/db` de l'appli et sont fournis au container grâce au montage 
  `./docker/db/:/docker-entrypoint-initdb.d/`. 


## Configuration du projet

- Renommez `config/autoload/local.php.dist` en `local.php` :
- Si cela n'a pas déjà été fait par une des `post-create-project-cmd` du `composer.json`, 
créez le fichier de config `config/autoload/local.php` à partir du `.dist` :
```bash
mv config/autoload/local.php.dist config/autoload/local.php
cp -r config/autoload/local.php.dist config/autoload/local.php
```

- Copiez dans votre dossier `config/autoload` les fichiers de configuration locaux et globaux `.dist`
  des bibliothèques utilisées sans leur extension `.dist` :
- Si cela n'a pas déjà été fait par une des `post-create-project-cmd` du `composer.json`, 
créez dans `config/autoload` les fichiers de configuration locaux et globaux des bibliothèques utilisées 
à partir des `.dist` :
```bash
cp vendor/unicaen/app/config/unicaen-app.global.php.dist   config/autoload/unicaen-app.global.php
cp vendor/unicaen/app/config/unicaen-app.local.php.dist    config/autoload/unicaen-app.local.php
cp vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php
cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist  config/autoload/unicaen-auth.local.php
cp -r vendor/unicaen/app/config/unicaen-app.global.php.dist   config/autoload/unicaen-app.global.php
cp -r vendor/unicaen/app/config/unicaen-app.local.php.dist    config/autoload/unicaen-app.local.php
cp -r vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php
cp -r vendor/unicaen/auth/config/unicaen-auth.local.php.dist  config/autoload/unicaen-auth.local.php
```

- Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration 
@@ -49,6 +132,7 @@ cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unica
  - [unicaen/app](https://git.unicaen.fr/lib/unicaen/app)
  - [unicaen/auth](https://git.unicaen.fr/lib/unicaen/auth)


## Test de l'application 

Théoriquement, l'application devrait être accessible à l'adresse [https://localhost:8443](https://localhost:8443).
+14 −2
Original line number Diff line number Diff line
{
    "name": "unicaen/skeleton-application",
    "description": "Squelette d'application Unicaen (Laminas aka ZF3)",
    "description": "Squelette d'application Unicaen (Laminas)",
    "repositories": [
        {
            "type": "composer",
@@ -22,7 +22,19 @@
    },
    "scripts": {
        "post-install-cmd": [
            "mkdir -p data/DoctrineORMModule/Proxy ; chmod -R 777 data/DoctrineORMModule/Proxy"
            "cp -r vendor/unicaen/app/public/unicaen public/",
            "mkdir -p vendor/mpdf/mpdf/ttfontdata && chmod -R 777 vendor/mpdf/mpdf/ttfontdata",
            "mkdir -p data/cache && chmod -R 777 data/cache && rm -rf data/cache/*",
            "mkdir -p data/DoctrineModule/cache && chmod -R 777 data/DoctrineModule/cache && rm -rf data/DoctrineModule/cache/*",
            "mkdir -p data/DoctrineORMModule/Proxy && chmod -R 777 data/DoctrineORMModule/Proxy && rm -rf data/DoctrineORMModule/Proxy/*"
        ],
        "post-create-project-cmd": [
            "cp -n config/autoload/local.php.dist                          config/autoload/local.php",
            "cp -n vendor/unicaen/app/config/unicaen-app.global.php.dist   config/autoload/unicaen-app.global.php",
            "cp -n vendor/unicaen/app/config/unicaen-app.local.php.dist    config/autoload/unicaen-app.local.php",
            "cp -n vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php",
            "cp -n vendor/unicaen/auth/config/unicaen-auth.local.php.dist  config/autoload/unicaen-auth.local.php",
            "mkdir -p data/db && chmod -R 777 data/db"
        ]
    },
    "autoload": {
Loading