Prod : https://neymo-api.benjaminadida.fr/
NeyMo est un gestionnaire de monnaie locale conçu pour soutenir les associations, les collectivitées et toutes les personnes qui ont à cœur la revalorisation de leurs territoires dans une démarche de développement durable et sociale.
Ce site a été réalisé à des fins pédagogiques dans le cadre du cursus Bachelor de l’école HETIC. Les contenus présentés n'ont pas fait l'objet d'une demande de droit d'utilisation. Ce site ne sera en aucun cas exploité à des fins commerciales et ne sera pas publié
Créer le dossier :
mkdir -p config/jwtClef privée :
openssl genpkey -out config/jwt/private.pem -aes256 -algorithm rsa -pkeyopt rsa_keygen_bits:4096Clef publique :
openssl pkey -in config/jwt/private.pem -out config/jwt/public.pem -puboutModifier la variable JWT_PASSPHRASE, avec la passphrase que vous aurez défini
Cloner le projet :
git clone https://github.com/benads/neymo.gitExécuter ce script dans le projet :
sh init.shPour lancer une commande Symfony dans le container :
docker container exec -ti app bashCollection Postman : https://www.getpostman.com/collections/4b49a8cced39c4202581
Récupérer le token utilisateur sur Postman avec une requête login
-
Identifiant de connexion Super-Administrateur
{ "username": "superadmin@neymo.com", "password": "123456" } -
Identifiant de connexion Administrateur
{ "username": "admin@neymo.com", "password": "123456" } -
Identifiant de connexion Commercant
{ "username": "company@neymo.com", "password": "123456" } -
Identifiant de connexion Particulier
{ "username": "particular@neymo.com", "password": "123456" }
Tout notre back a été fait en Symfony 5.1.
Pour ce faire, nous avons utilisé différentes technos pour nos environnements (prod/dev) :
Docker : Nous avons décidé de dockeriser tout notre back pour faciliter l'installation et harmoniser notre environnement entre développeurs. Il est composé de 5 images :
- Le container "app" qui créer un environnement PHP, composer...
- Le container "db", le server MySQL où est hébergé notre base de données
- Le container "adminer", le client MySQL qui permet d'avoir une interface graphique de la base de données (Adminer 4.7)
- Le container "web-server", le server web NGINX qui permet d'avoir un server simple à configurer
- Le container "mailhog", qui propose deux types de service : un SMTP et une interface pour visualiser les mails
- NGINX : pour avoir un serveur web simple d'utilisation
- MySQL 5.7 : pour avoir une base de données qui s'accorde bien avec Symfony grâce à son ORM, Doctrine
- DigitalOcean : pour avoir une infrastructure cloud qui fournit une solide documentation
- Ubuntu 18.0 : pour avoir un système d'exploitation facile d'accès et modulable
Doctrine : ORM
jwt-authentication-bundle : Authentification API avec JWT
api-doc-bundle : Gérer la doc de l'API
cors-bundle : CORS policy
Mailer : Envoi d'email
mailjet-apiv3-php : Permet l'envoi d'email
Faker : Création des faux jeux de données
php-credit-card-validator : Vérification la validité des informations d'une carte bancaire
Security : Gérer le login et les rôles
Notre back-end se divise en 3 parties :
La première partie de notre application est un back-office administré uniquement par nous-mêmes, Neymo, agence digitale, pour gérer toutes les gouvernances et leurs administrateurs. Nous avons listé les fonctionnalités dont nous avions besoin :
- Lister toutes les gouvernances
- Créer, afficher les détails et modifier une gouvernance
- Créer, lister, modifier et supprimer les administrateurs d'une gouvernance
Cette interface permet aux administrateurs de la gouvernance de pouvoir gérer leur propre gouvernances et leurs adhérents. Ainsi, un administrateur peut :
- Modifier ses propres informations
- Lister, créer et supprimer les autres administrateurs de la gouvernance
- Gérer les différents types d'adhérents (commercant/particulier)
- Valider ou refuser les demandes d'inscription en attente (envoi d'email de confirmation)
- [WIP] Voir les détails de la gouvernance
- [WIP] Accèder à un dashboard pour visualiser les statistiques de la monnaie locale
Cette interface permet de spécifier les différentes fonctionnalités auxquelles ont accès les adhérents. Documentation NelmioApiDoc

