Skip to content
Snippets Groups Projects
Commit a07c4cff authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Fusion manuelle avec le master

parent 4cbbeba7
No related branches found
No related tags found
No related merge requests found
deploy/
vendor/
.idea
.DS_Store
......@@ -19,4 +19,4 @@ cache:
update-satis:
stage: publish
script:
- update-satis
- curl https://gest.unicaen.fr/packagist/update
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.
# 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).
......
{
"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": {
......
......@@ -19,9 +19,11 @@ return [
'app_infos' => [
'nom' => "NomDeVotreApplication",
'desc' => "Description succincte de votre application",
'version' => "0.0.1",
'date' => "07/11/2017",
//'version' => cf. 'version.global.php'
//'date' => cf. 'version.global.php'
'contact' => ['mail' => "dsi.applications@unicaen.fr", /*'tel' => "01 02 03 04 05"*/],
'mentionsLegales' => "http://www.unicaen.fr/acces-direct/mentions-legales/",
'informatiqueEtLibertes' => "http://www.unicaen.fr/acces-direct/informatique-et-libertes/",
],
/**
......@@ -33,6 +35,13 @@ return [
* Paramètres de fonctionnement LDAP.
*/
'ldap' => [
'connection' => [
'default' => [
'params' => [
],
],
],
'dn' => [
'UTILISATEURS_BASE_DN' => 'ou=people,dc=unicaen,dc=fr',
'UTILISATEURS_DESACTIVES_BASE_DN' => 'ou=deactivated,dc=unicaen,dc=fr',
......@@ -77,7 +86,11 @@ return [
// Session validators (used for security).
'validators' => [
RemoteAddr::class,
HttpUserAgent::class,
// Erreur rencontrée avec ce validateur lorsqu'on passe en "Version pour ordinateur" sur un téléphone Android :
// `Fatal error: Uncaught Zend\Session\Exception\RuntimeException: Session validation failed
// in /var/www/app/vendor/zendframework/zend-session/src/SessionManager.php on line 162`
//HttpUserAgent::class,
]
],
//
......
......@@ -11,12 +11,6 @@ $settings = [
* Configuration de l'authentification locale.
*/
'local' => [
/**
* Affichage ou non du formulaire d'authentification avec un compte local.
*/
'enabled' => false,
],
/**
* Configuration de l'authentification LDAP.
*/
......@@ -25,13 +19,14 @@ $settings = [
* Affichage ou non du formulaire d'authentification via l'annuaire LDAP.
* NB: en réalité cela permet aussi l'authentification avec un compte local.
*/
'enabled' => true,
'enabled' => false,
],
],
/**
* Configuration de l'authentification Shibboleth.
*/
'shibboleth' => [
'shib' => [
/**
* Affichage ou non du formulaire d'authentification via l'annuaire LDAP.
* NB: en réalité cela permet aussi l'authentification avec un compte local.
......
......@@ -10,13 +10,13 @@ services:
PHP_VERSION: 7.3
ports:
- "8080:80"
- "7443:443"
- "8443:443"
volumes:
- .:/var/www/html
working_dir: /var/www/html
db:
image: postgres
image: postgres:13
restart: always
environment:
POSTGRES_USER: admin
......
......@@ -4,7 +4,8 @@ CREATE TABLE "user" (
email VARCHAR(255) DEFAULT NULL,
display_name VARCHAR(64) DEFAULT NULL,
password VARCHAR(128) NOT NULL,
state SMALLINT default 1
state SMALLINT default 1,
last_role_id SMALLINT
) ;
CREATE UNIQUE INDEX user_username_unique ON "user" (username);
......
#!/usr/bin/env bash
#
# This script runs required operations in order to set up the application.
#
CURDIR=$(cd `dirname $0` && pwd)
cd ${CURDIR}
# Composer install
composer install --no-dev --no-suggest --optimize-autoloader
# mpdf/mpdf/ttfontdata dir access
#chown -R www-data:root vendor/mpdf/mpdf/ttfontdata && chmod -R 770 vendor/mpdf/mpdf/ttfontdata
# Répertoire d'upload par défaut
#mkdir -p upload && chown -R www-data:root upload && chmod -R 770 upload
# Répertoires de travail de Doctrine
mkdir -p data/cache && chmod -R 777 data/cache
mkdir -p data/DoctrineModule/cache && chmod -R 777 data/DoctrineModule/cache
mkdir -p data/DoctrineORMModule/Proxy && chmod -R 777 data/DoctrineORMModule/Proxy
rm -rf data/cache/*
rm -rf data/DoctrineModule/cache/*
rm -rf data/DoctrineORMModule/Proxy/*
composer install --no-dev --no-suggest --prefer-dist --optimize-autoloader
# Commandes Doctrine
vendor/bin/doctrine-module orm:clear-cache:query
......
<div class="jumbotron">
<h1><?php echo sprintf($this->translate("Bienvenue dans le squelette d'application Unicaen")) ?></h1>
<p>
Félicitations! Vous avez insallé avec succès le squelette d'application Unicaen. <br>
La version du framework utilisée est la <?php echo \Zend\Version\Version::VERSION ?>
Félicitations! Vous avez insallé avec succès le squelette d'application Unicaen.
</p>
<?php if (!$this->identity()): ?>
<p class="text-danger">
......
......@@ -9,6 +9,7 @@
namespace Demo;
use Laminas\Http\Request as HttpRequest;
use Laminas\Mvc\ModuleRouteListener;
use Laminas\Mvc\MvcEvent;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment