Académique Documents
Professionnel Documents
Culture Documents
1- Création du projet
2- Aller dans le dossier du projet
3- Installer les prérequis du projet
4- Paramétrage d’accès à la base de donnée
5- Faire la migration (faire partir des classes pour générer réellement les requête sql)
6- Application de la migration pour générer les données dans la base de données
NB :
Le contrôleur c’est la table qui permet de manipuler les données
- API
- Le fichier api plateforme pour faire les API
- Avoir php8
- Version composeur 1.5
- Symfony 8
On doit faire des mises à jours pour préparer l’environnement de travail et d’installation des paquets
#apt –y upgrade
Installation du module repository ppam :ondrej/php
Installons composer : on peut l’installer en ligne de commande comme nous montre la figure ci-
dessous ou sur son site par le lien https://getcomposer.org/download.
Mais d’abord il faut installer php-cli qui permettra l’installation de composer
Installation de composer
Dans mon cas le système utilise php 7.2 donc on va installer php7.2-curl
#apt install php7.2-curl
Tous les prerequis et paquets ayants installés, nous allons créer un projet avec le software symfony
Création d’un projet avec symfony : créons le projet cadeau
#symfony new cadeau
Pour notre projet on va créer un utilisateur syriack avec un password passer et lui donner tous les
droits.
On met l’id de l’utilisateur que l’on souhaite avoir ses informations ou les modifier
Insertion d’un nouveau client par la méthode POST
On voir que le message de réception est 200 ce qui signifie que le client est créé avec succès
Pour voir les entités de la base de donnée créer en ligne de commande on fait comme suivant :
On édite par exemple l’entité étudiant
Création de la classe President qui sera mappée sur la table president de notre base
Après la création de la base de donnée et ses entités, on crée maintenant la migration
#php bin/console make:migration
Vérifions la migration
On fait la mise en place d’un crud
Correction d’erreur
On redémarre symfony
On va enfin sur le navigateur pour voir notre projet crud
On clique sur create new pour insérer les clients, ensuite on remplit les cases puis on sauvegarde par
Save.
On va créer un nouveau client Syriack que nous allons modifier ses informations
Modifions les informations de Syriack
Teste de connexion de notre entité de base de donnée en ligne de commande avec curl
UTILISATION DE SYMFONY SUR WINDOWS
Installation sur Windows
On commence par installer l’environnement administrateur power Shell si ce n’est pas encore installer
sur notre machine
Php8.2
Xampp
Après on télécharge le logiciel composer et on l’installe
Fin d’installation de composer
Sur notre terminal on tape la commande composer pour initier les fonctionnalités du logiciel
Faire php –v pour vérifier la version de php
On ouvre notre Windows PowerShell et on installe scoop qui va nous permettre de prendre en compte
les commandes linux sur Windows pour l’installation de symfony.
On installe symfony avec :
scoop install symfony-cli
On voit qu’il nous faut installer d’abord le logiciel git pour que symfony prend en compte la création
du projet.
scoop install git
Comme on peut voir sur la figure ci-dessous on doit créer un compte mail et renseigner son nom
On crée le mail et on enregistre le nom
On peut créer maintenant notre projet on change le nom cadeau d’avant par projet
symfony new projet
On vérifie dans la base de donnée pour être sûr que la migration s’est bien passée
Démarrons notre serveur de développement
Dans le navigateur on tape : localhost:8000/api pour accéder à l’interface de notre api comme le
montre la figure suivante :
Vérification
mariadb-server ou mysql-server
php, php-json,php-mysql,php-xml
Création de la base php_ajax, la table
employees(id,prenom,nom,numetudiant,notecontrole,notedevoir), de l’utilisateur toto avec le mot de
passe passer avec tous les droits sur la base php_ajax
# nano src/Security/AppCustomAuthenticator.php
On accède a notre interface crud et insérons quelques utilisateurs
On enregistre les noms qui seront les noms administrateurs qui pourront se connecter et avoir accès
aux données
On affiche les noms dans la base de donnée puis on les donnes le rôle d’administrateur
#nano new.html.twig
#nano edit.html.twig
#nano _delete.html.twig
On obtient
Partie PDO
Comme prérequis il faut installer les paquets suivants
Curl
Php-curl
Php-json
Php-mysql
On crée une base de donnée et un utilisateur dont on lui donne tout les droits sur la base de donnée
Insertion des parametres de la base de donnée dans notre fichier de connexion crudpdo.php
On peut afficher sous forme de tableau, pour ce faire dans la fonction lecture() on supprime la partie
json_encode
Vérification
Paramétrage de la connexion à la base de données il faut modifier le fichier .env pour renseigner le
Database URL (DSN + Compte utilisateur)
#nano .env
Résultat
Vous pouvez également installer HTMX via npm comme ceci ci-dessous :
On installe npm qui nous permettra d’installer à son tour htmx
Mettons en place une application PHP CRUD avec PDO et requêtes préparées avec notre HTMX.
Dans le navigateur on tape :
Localhost/htmx/navigation.html
Versons 50 000 sur le compte de syriack flavien en cliquant sur Verser de notre application
#php bin/console d :d :c
On enregistre les noms dans notre base de donnée dès l’interface de notre route
Test de modification
Test de la route http://localhost:8000/modifnoir du Controller qui fait appel à la méthode modifnoir de
notre conteneur de service. http://localhost:8000/modifnoir
On vérifie
Test de suppression
Test de la route http://localhost:8000/deletenoir du Controller qui fait appel à la méthode deletenoir.
http://localhost:8000/deletenoir
On va créer une ressource qui se sera une table contenant les informations des clients
#php bin/console make :entity
II – Api-platform
Pour intégrer l’Api-Platform dans le projet Symfony on tape la commande composer require
api
#composer req api
Dans le fichier src/Entity/Client.php sur la deuxième ligne, on nous demande si on veut
exposer l’entité en tant que ressource dans Api Platform on rajoute les deux lignes (use
ApiPlatform\Metadata\ApiResouce et #[ApiResource])
Les 2 lignes suivantes indiquées en jaune
Dans ce fichier on paramétrer la route d’accès à l’api on peut changer api par le nom de notre
projet par exemple
#nano config/routes/api_platform.yaml
On redémarre le projet pour voir si notre entité a bien été exposée dans Api Platform
On ouvre le fichier .env pour vérifier les paramètres du keypair généré. La précédente
commande ajoute les informations suivantes dans .env
Ensuite on modifie le fichier config/packages/security.yaml :
On va dans config/packages/security.yaml pour que l’accès à la ressource /api/accueil exige
un jeton JWT valide
On ajoute d’un point de terminaison dans Api Platform pour récupérer un jeton JWT On et
également l’identifiant de notre token JWT dans le fichier
config/packages/lexik_jwt_authentication.yaml :
On ajoute l’autorisation d’authentification par token JWT dans Swagger en créant le fichier
config/packages/api_platform.yaml qui va ajouter le bouton « Authorize » qui permettra
d’ajouter le token dans l’entête des requêtes dans Api Platform.
Puis on se rend sur la page web dans la route /register (http://127.0.0.1:8000/register) pour
créer un utilisateur : syriack@ec2lt.sn
On valide en cliquant sur Register qui va nous rediriger vers la route choisie lors de la
commande make:registration 2 pour api_docs
Si on regarde bien on voit que les verbes http sur l’entité Client sont dans la route /api/clients
or dans security.yaml on avait verrouillé cette route (exigeant un token)
Essayons de crée un client pour voir si on va nous demander le token pour avoir accès
On constate qu’il nous génère un message d’erreur
Vérifions voir si notre table de la base de donnée contient des clients. Comme on le voit il y a
zéro
Après l’authentification du Token retentons maintenant de créer un client
Dans body on choisit également raw et JSON et on donne les identifiants de connexion
JWT Refresh
Pour ajouter cette fonctionnalité à notre application Symfony, nous allons installer et
configurer le composant gesdinet/jwt-refresh-token-bundle.
Activons le bundle
Configurer l’authentificateur
Pour activer l’authentificateur, on doit l’ajouter à notre pare-feu API à côté des
authentificateurs. On rajouter les lignes en jaune dans security.yaml La configuration
complète du pare-feu doit ressembler à ce qui suit :
On démarre symfony et on renseigne les information d’authentification pour generer les deux
token suivant:
’’token’’
’’refresh_token’’
On voit dans corps de la réponse qu’on a un token et un refresh_token. Le token_refresh est
stocker dans la base de données et dispose d’une durée de validé d’un mois
On voit qu’on a reçu un nouveau token qu’on va pouvoir utiliser pour accéder aux ressources
protégées.
Partie I : Génération d’une API à partir d’une entité avec api plateforme
1- Création d’un projet
2- Création d’une entité
3- Installer api plateform
4- Ajouter 2 lignes dans la classe de notre entité pour obtenir l’api use
ApiPlatform\Metadata\ApiResource; Au-dessus de la classe 1 #[ApiResource]
5- Paramétrer la route d’accès à l’API dans config/routes/api_plateforme,yaml ( c’est
déjà fait)
Génération d’une API à partir d’une entité avec api plateforme
Puis on fait appel à des attributs pour faire apparaître les exemples de données à envoyer à
chaque méthode de notre API
On édite config/routes/nelmio_api_doc.yaml et on décommette :
On voit que le client créé existe bien dans notre base de donnée. Et on peut en créer plus que
l’on veut.
Nous pouvons vérifier l’existence des deux clés générées dans config/jwt.
Création de la classe d’authentification User (make:user) créons l’entité user pour les
utilisateurs qui seront appelés à s’authentifier pour avoir le token jwt
#php bin/console make :user
On fait la migration et on l’applique
Nous allons renseigner une adresse mail et un mot de passer pour avoir accès aux
informations de la base de données
Normalement après avoir renseigner et cliquer sur Register la page nous redirigera vers
lecture, car nous avons choisi tout à l’heure 16 ‘’lecturenoir’’ dans note registration
Accès à la lecture ressources
On copie et colle le Token dans l’entête pour afin avoir accès à la fonction lecture qui va nous
afficher la liste des clients comme avec register