Skip to content

Commit

Permalink
Merge pull request #16 from LAB-MI/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
Stanislas Ormières committed Jan 11, 2019
2 parents 8d5aa53 + cb02e3f commit 3082b8f
Show file tree
Hide file tree
Showing 76 changed files with 4,184 additions and 255 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -184,4 +184,4 @@ $RECYCLE.BIN/

server/dist/
server/mongo-dev/

mongo-dev
41 changes: 41 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
dist: trusty
sudo: required

language: minimal

services:
- docker

env:
- DOCKER_COMPOSE_VERSION=1.19.0

addons:
apt:
packages:
- docker-ce

before_install:
- sudo rm -rf /usr/local/bin/docker-compose
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin/
- sudo apt-get -q update
- sudo apt-get install -qy make apt-transport-https ca-certificates curl software-properties-common gawk jq parallel curl

before_script:
- uname -a
- type -a docker-compose && docker-compose version
- docker version

script:
- ( git fetch --unshallow || true ) && git tag -l
- echo "# build & run api in dev mode"
- ( cd server && docker-compose -f docker-compose.prod.api.yml build )
- docker images
- ( cd server && docker-compose -f docker-compose.prod.api.yml up -d --no-build )
- docker ps
- echo "# test-up"
- echo "# TODO test curl"
- ( cd server && docker-compose -f docker-compose.prod.api.yml down )
after_script:
- echo "END"
18 changes: 7 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Candilib

Code source de l'application pour que les usagers réservent eux-même leur place d'examen
Code source de l'application de réservation en ligne de places à l'examen pratique du permis de conduire. Ce service public est à destination des usagers [inscrits sur le système de l'ANTS](https://permisdeconduire.ants.gouv.fr/Services-associes/Effectuer-une-demande-de-permis-de-conduire-en-ligne) et ayant réussi l'épreuve pratique du code de la route.

## Utilisation

Expand Down Expand Up @@ -38,7 +37,7 @@ npm install
npm run dev
```

### Déploiement
### Lancer le serveur en mode production

Transpiler les ESM et lancer le serveur en mode production

Expand All @@ -48,18 +47,15 @@ npm install
npm start
```

C'est le répertoire `dist` qui contient l'application. C'est le fichier `index.js` dans
ce répertoire qu'il faudra lancer en production.
C'est le répertoire `dist` qui contient l'application.
C'est le fichier `index.js` dans ce répertoire qui est lancé.

## TODO

- Démarrage en prod avec pm2
- Gestion des jwt
- Définition des routes
- Écriture de tests unitaires
- Gestion des jwt (en cours)
- Définition des routes (en cours)
- Structure des données mongo
- Client Front-office (FO)
- Client Back-office (BO)
- Définition des conteneurs db.prod, back, client-fo, client-bo
- Définition des conteneurs db.prod, back, client-fo, client-bo (en cours)
- Définition des docker-compose
- Liaison avec Travis et le Jenkins interne
21 changes: 21 additions & 0 deletions back-office/src/store/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

import Vue from 'vue'
import Vuex from 'vuex'

import auth from './auth'

export * from './auth'

Vue.use(Vuex)

const store = new Vuex.Store({
state: {
auth: {},
},

modules: {
auth,
},
})

export default store
23 changes: 23 additions & 0 deletions docs/Architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Architecture globale

## Principes

L'application Candilib s'articule autour de 3 parties :

* ``frontal`` qui fournit les applications en fonctions des profils des utilisateurs
* ``back`` qui dispose d'un ensemble d'api utilisée par les applications web et par les composants de gestion
* ``persistance des données`` qui persiste les informations nécessaires au fonctionnement de Candilib

L'application s'adresse aux candidats et aux agents qui impliqués dans la gestion des examens pratiques sur l'ensemble du territoir. La partie ``frontal`` est séparée en deux parties distinctes pour chacune de ces populations. De plus, chaque composant dispose de ces propres routes vers la partie ``back`` qui assure le filtrage en fonction de l'origine des requêtes.

La partie ``back`` assure le traitement applicatif de Candilib. Elle est constituée d'un composant qui met à disposition via des API les différents services applicatifs. Ces derniers sont dédiés à un ``frontal`` et aux composants internes de gestion.

La partie ``persistance des données`` garantie :

* la disponibilité
* la fiabilité
* l'intégrité

Le schéma ci-dessous synthétise ces principes d'architecture.

![Architecture générale](https://raw.github.com/LAB-MI/candilibV2/docs/principes/docs/archi_gene_candilib-Page-2.svg?sanitize=true)
178 changes: 178 additions & 0 deletions docs/CandilibV2.postman_collection.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
{
"info": {
"_postman_id": "bf2aa007-e5d2-4697-a1ff-8572a0500bd5",
"name": "CandilibV2",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "admin",
"item": [
{
"name": "Connexion admin",
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"email\": \"admin@example.com\",\n\t\"password\": \"Admin*78\"\n}"
},
"url": {
"raw": "http://{{HOST}}:{{PORT}}/api/v2/auth/admin/token",
"protocol": "http",
"host": [
"{{HOST}}"
],
"port": "{{PORT}}",
"path": [
"api",
"v2",
"auth",
"admin",
"token"
]
}
},
"response": []
},
{
"name": "Synchro candidats",
"request": {
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "Bearer {{TOKEN}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/x-www-form-urlencoded",
"type": "text"
}
],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "file",
"type": "file",
"src": ""
}
]
},
"url": {
"raw": "http://{{HOST}}:{{PORT}}/api/v2/admin/candidats",
"protocol": "http",
"host": [
"{{HOST}}"
],
"port": "{{PORT}}",
"path": [
"api",
"v2",
"admin",
"candidats"
]
}
},
"response": []
},
{
"name": "Exports candidats",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{TOKEN}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/x-www-form-urlencoded"
}
],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "file",
"type": "file",
"src": ""
}
]
},
"url": {
"raw": "http://{{HOST}}:{{PORT}}/api/v2/admin/candidats",
"protocol": "http",
"host": [
"{{HOST}}"
],
"port": "{{PORT}}",
"path": [
"api",
"v2",
"admin",
"candidats"
]
}
},
"response": []
},
{
"name": "Liste places d'examen",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{TOKEN}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/x-www-form-urlencoded"
}
],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "file",
"type": "file",
"src": ""
}
]
},
"url": {
"raw": "http://{{HOST}}:{{PORT}}/api/v2/admin/candidats",
"protocol": "http",
"host": [
"{{HOST}}"
],
"port": "{{PORT}}",
"path": [
"api",
"v2",
"admin",
"candidats"
]
}
},
"response": []
}
]
}
]
}
32 changes: 32 additions & 0 deletions docs/Principes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Principes généraux

## Inscription
Le service Candilib est ouvert aux personnes souhaitant passer l'épreuve pratique du permis de conduire. Pour cela, elles doivent d'inscrire sur le site en fournissant les informations suivantes :
* NEPH : numéro fourni par l'ANTS lors de l'inscription en tant que candidat au permis de conduire (Code & Conduite)
* Nom de famille
* Prénom
* Adresse email
* Numéro de téléphone portable
* Adresse postale

Lorsque l'inscription est validée, le candidat peut sélectionner un lieu et une date de passage de l'épreuve pratique. Ce choix peut être modifié par le candidat dans la limite des disponibilités.

## Vérifications et contrôles

Le passage de l'épreuve pratique du permis de conduire nécessite que les candidats satisfassent un ensemble de critères :
* un NEPH valide et correspondant au Nom fournit
* avoir réussi l'épreuve théorique du code de la route depuis moins de 5 ans
* ne pas avoir échoué plus de 3 fois à l'épreuve pratique
* et bien sur ne pas être déjà en pocession d'un permis valide

Le respect de l'ensemble de ces critères permet de valider l'inscription au service Candilib.

## Critères post inscription
Des contrôles réguliers sont effectués pour réévaluer les critères des candidats inscrits. Ce travail de vérification porte sur les points suivants :
* réussite de l'épreuve pratique
* date d'obtention du code suppérieure à 5 ans
* plus de 3 échecs à l'épreuve pratique

Si un candidat entre dans un de ces trois critères, il n'est plus en mesure de se présenter à l'épreuve pratique et est donc supprimé de la liste des utilisateurs de Candilib.

En cas d'échec à l'épreuve pratique, le candidat ne peut pas se représenter avant un délai de 2 mois. Il ne pourra donc pas réserver une nouvelle date avant ce délai.
2 changes: 2 additions & 0 deletions docs/archi_gene_candilib-Page-2.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 3082b8f

Please sign in to comment.