Cours
Cours
Cours
M. DAIF OTHMANE
Introductionà l’authentification Laravel
Les frameworks tels que Laravel offrent des fonctionnalités étendues pour la gestion
sécurisée des utilisateurs. Laravel simplifie et renforce le processus
d'authentification.
Laravel Breeze:
Une interface simple et facile à utiliser pour gérer l'authentification, l'inscription et la
réinitialisation du mot de passe.
Un ensemble de contrôleurs et de vues pour gérer l'inscription et l'authentification
des utilisateurs.
Un ensemble de modèles Blade pour afficher les formulaires d'authentification et
d'inscription.
Un ensemble de routes pour gérer l'authentification et l'inscription des utilisateurs.
Un ensemble de cas de test pour tester les fonctionnalités d'authentification et
d'inscription.
Bibliothéques d’authentification Laravel
Laravel Breeze:
Configuration :
Interface donné
Bibliothéques d’authentification Laravel
Laravel Sanctum:
Champs d'Application Spécifiques : Les jetons générés par Sanctum sont dotés de
champs d'application, précisant les actions autorisées. Ces champs définissent les
permissions et le comportement autorisé pour chaque jeton API.
Bibliothéques d’authentification Laravel
Laravel Sanctum:
Installation :
Bibliothéques d’authentification Laravel
Exemple d'utilisation de Laravel Sanctum
Prenons un exemple simple pour clarifier ce que sanctum peut faire. nous allons
construire une API pour l'enregistrement des utilisateurs, la connexion et la
déconnexion.
d'abord:
nous devrions créer notre contrôleur
Bibliothéques d’authentification Laravel
Exemple d'utilisation de Laravel Sanctum
Bibliothéques d’authentification Laravel
Exemple d'utilisation de Laravel Sanctum
Bibliothéques d’authentification Laravel
Exemple d'utilisation de Laravel Sanctum
Bibliothéques d’authentification Laravel
Laravel JWT:
OAuth2 (Open Authorization 2.0) est un protocole d'autorisation standard qui permet
à une application tierce d'obtenir l'accès limité à des ressources d'un utilisateur sans
partager ses identifiants. Il fournit un cadre flexible pour l'authentification et
l'autorisation, souvent utilisé pour sécuriser les API. OAuth2 définit différents flux
d'autorisation, tels que le code d'autorisation, le mot de passe, le flux implicite et le flux
de client.
Laravel Passport :
Passport : Offre une solution OAuth2 complète pour les applications Laravel, émet
des jetons d'accès et gère l'authentification API.
JWT : Propose des jetons auto-suffisants pour authentifier les utilisateurs sans état
de session, souvent utilisé dans des applications décentralisées.
Sanctum : Orienté vers l'authentification basée sur les sessions, adapté aux
applications monolithiques, génère des jetons d'accès pour l'API Laravel.
Chiffrement
Le chiffrement dans Laravel consiste à rendre les données illisibles pour assurer leur
confidentialité et sécurité. Cela protège les informations sensibles, telles que les
mots de passe ou les données de carte de crédit, en les transformant à l'aide
d'algorithmes spécifiques.
Les services de cryptage de Laravel offrent une interface facile et pratique pour
chiffrer et déchiffrer du texte via OpenSSL, utilisant les algorithmes AES-256 et AES-
128.
Toutes les valeurs chiffrées dans Laravel sont signées avec un code d'authentification
de message (MAC) pour garantir l'intégrité de la valeur une fois qu'elle est chiffrée.
Chiffrement
Cas d'utilisation du Chiffrement :
Configuration :
Le mode de hachage par défaut pour votre application est défini dans le fichier de
configuration config/hashing.php. Vous avez le choix entre différents modes,
notamment Bcrypt et Argon2 .
Utilisation:
Autorisation
• Laravel propose une approche complète de l'autorisation avec les Gates, les Policies
et les Stratégies.
• Les Gates offrent une méthode simple basée sur des fermetures dans le
AuthServiceProvider.
• Les Policies organisent la logique d'autorisation autour des modèles à l'aide de
classes dédiées, favorisant une structure organisée.
• Les Stratégies permettent de définir des règles d'autorisation réutilisables, intégrées
dans les Policies pour une composition efficace.
• L'utilisation combinée de ces composants offre une flexibilité étendue tout en
maintenant une structure claire et maintenable dans la gestion des autorisations
Laravel.
Autorisation
Utiliser les portes
Gates sont des fermetures qui déterminent si un utilisateur est autorisé à effectuer une
certaine action sur une ressource. Généralement, les portes sont définies dans la boot
méthode de la App\Providers\AuthServiceProvider utilisant la Gate façade.Voici
un exemple de portail permettant uniquement aux utilisateurs premium de visualiser
certains contenus:
Une Gate reçoit toujours une instance d'utilisateur en tant que premier argument, vous
n'avez pas besoin de la passer lors de l'utilisation de la porte, et peut éventuellement
recevoir des arguments supplémentaires tels que le modèle éloquent concerné.
Autorisation
Autoriser des actions avec des portes
Pour autoriser une action avec les portails, utilisez les méthodes allows ou denies de la
Gate façade, sans transmettre l'utilisateur, géré automatiquement par Laravel.
Généralement appelées dans les contrôleurs avant des actions nécessitant une
autorisation.
Vous pouvez autoriser plusieurs actions à la fois en utilisant les méthodes any ou none :
Autorisation
Vous pouvez également définir des portes avec des conditions plus complexes en
utilisant une logique personnalisée. Par exemple , Cette porte vérifie si l'utilisateur peut
éditer un profil en fonction de plusieurs conditions:
Vous pouvez autoriser plusieurs actions à la fois en utilisant les méthodes any ou none :
Autorisation
Les politiques:
Les stratégies sont des classes qui vous aident à organiser la logique d'autorisation
autour d’une ressource de modèle. Par exemple pour une application de gestion de
contenu, nous pourrions avoir un ContentPolicy qui gère l'accès des utilisateurs au
modèle de Content . Pour rendre ContentPolicy , laravel fournit une commande
artisanale. Il suffit de courir:
Cela fera une classe de politique vide et placera dans le dossier app/Policies .
Une fois que vous avez créé la classe de politique, vous devez l'enregistrer dans le
fichier AuthServiceProvider de Laravel. Ce fichier est fourni avec toutes les
nouvelles installations Laravel.
Ouvrez AuthServiceProvider situé dans le répertoire app/Providers et importez
la classe de politique que vous avez créée. Ensuite, ajoutez le mappage dans la méthode
boot du service provider.
Autorisation
Les politiques:
Les stratégies peuvent contenir plus de méthodes que nécessaire pour prendre en
charge tous les cas d'autorisation d'un modèle.
Autorisation
Autoriser des actions avec des stratégies
Via le blade
Lors de l'écriture de modèles Blade, vous souhaiterez peut-être afficher une partie de la
page uniquement si l'utilisateur est autorisé à effectuer une action donnée.
Pour utiliser l'exemple ci-dessus sur un modèle du blade afin de masquer le contenu de
l'utilisateur, vous devez généralement procéder comme suit:
M DAIF OTHMANE
Introduction
La quasi-totalité des applications web modernes nécessitent une interaction avec une
base de données. Laravel simplifie grandement cette interaction avec diverses bases de
données en offrant des options telles que l'utilisation de SQL brut, un générateur de
requêtes fluide, et l'utilisation de l'ORM Eloquent. Actuellement, Laravel propose un
support intégré pour cinq bases de données de premier plan :
Configuration de la base de données
La configuration des services de base de données de Laravel se trouve dans
config/database.php ,le fichier de configuration de votre application. Dans ce fichier,
vous pouvez définir toutes vos connexions à la base de données, ainsi que spécifier
quelle connexion doit être utilisée par défaut.
Si on veut configuré les bases de données SQLite se trouvent dans un seul fichier.
Créez une nouvelle base avec touch database/database.sqlite. Configurez ensuite vos
variables d'environnement en spécifiant le chemin absolu de cette base dans
DB_DATABASE
Connexion
Parfois, vous souhaiterez peut-être utiliser une connexion à la base de données
pour les instructions SELECT et une autre pour les instructions INSERT, UPDATE et
DELETE. Pour voir comment les connexions en lecture/écriture doivent être
configurées, regardons cet exemple :
Exécuter des requêtes SQL
Une fois que vous avez configuré votre connexion à la base de données, vous pouvez
exécuter des requêtes en utilisant la DBfaçade. La DBfaçade fournit des méthodes pour
chaque type de requête : select, update, insert, delete et statement
Exécuter une requête de sélection:
Dans cet exemple, le ? dans la requête SQL est un paramètre de liaison de valeur. Le
tableau [1] est fourni en deuxième argument de la méthode select pour spécifier la
valeur réelle à lier à ce paramètre. Cela signifie que le 1 sera lié au paramètre ? de
manière sécurisée.
Exécuter des requêtes SQL
Sélection de valeurs scalaires :
Laravel offre la méthode scalar() pour récupérer directement une valeur scalaire unique
résultant d'une requête de base de données, simplifiant ainsi le processus sans
nécessiter l'extraction d'un objet enregistrement.
mise à jour :
Suppression :
Gestion des transactions
Une transaction de base de données est un ensemble d'opérations SQL qui sont
exécutées comme une seule unité atomique. Cela signifie que soit toutes les opérations
réussissent et les modifications sont enregistrées de manière permanente dans la base
de données, soit aucune des opérations n'est effectuée si l'une d'entre elles échoue.
Vous pouvez utiliser la méthode fournie par la DBfaçade pour exécuter un ensemble
d'opérations au sein d'une transaction de base de données. Si l'une de ces opérations
échoue, la transaction sera annulée, et les modifications apportées par ces requêtes
SQL seront annulées, maintenant ainsi la cohérence des données.
Annulation de transaction
Validation
Connexion la Commun Line Interface (CLI)
La connexion à la CLI (Command-Line Interface) de base de données fait référence à
l'utilisation d'une interface en ligne de commande pour interagir directement avec un
système de gestion de base de données (SGBD) sans passer par une interface
utilisateur graphique ou une application tierce.
Pour ce connecter au base de données par defaut via CLI :
Vous pouvez spécifier quelle connexion à la base de données doit être inspectée en
fournissant le nom de la connexion à la base de données à la commande via l'ajout a la
fin de : --database=option_du_base
Aperçu du tableau:
Développer en back-end
M DAIF OTHMANE
Générateur de requêtes (Query Builder) :
Le Générateur de Requêtes (Query Builder) de Laravel est un ensemble de
méthodes qui permettent de construire des requêtes SQL de manière fluide et
expressive en utilisant une syntaxe orientée objet.
le générateur de requêtes de base de données de Laravel offre une approche
sécurisée, pratique et compatible avec tous les principaux systèmes de bases de
données pris en charge par le framework. Son utilisation facilite la construction de
requêtes SQL tout en renforçant la sécurité de votre application contre les attaques
par injection SQL.
Select :
Join :
Générateur de requêtes (Query Builder) :
Union :
where :
When:
Ordering :
Grouping
Générateur de requêtes (Query Builder) :
Limit et Offset :
Insert :
Update
Delete
Verrouillage
Le générateur de requêtes comprend également quelques fonctions pour vous aider à
réaliser un « verrouillage pessimiste » lors de l'exécution de vos select
instructions. Pour exécuter une instruction avec un « verrou partagé », vous pouvez
appeler la sharedLock méthode. Un verrou partagé empêche la modification des
lignes sélectionnées jusqu'à ce que votre transaction soit validée :
Lors de la construction de requêtes dans Laravel, vous pouvez utiliser les méthodes
dumpRawSql et ddRawSql pour obtenir le SQL final généré par la requête, avec toutes
les liaisons de paramètres correctement substituées.
Pagination
La pagination est une technique utilisée pour diviser une liste étendue de résultats en
plusieurs pages, ce qui améliore la navigation et l'expérience utilisateur. Dans le
contexte des bases de données et des frameworks web comme Laravel, la pagination
est souvent utilisée pour présenter de grandes quantités de données de manière plus
gérable.
Supposons que nous voulions utiliser la méthode paginate sur une requête, et dans cet
exemple, nous spécifions simplement le nombre d'éléments que nous souhaitons
afficher par page, disons 10 éléments.
Pagination
Pagination simple :
Disons que vous voulez simplement afficher les liens Suivant et Précédent sur votre vue
de pagination. Laravel vous fournit cette option en utilisant la méthode simplePaginate .
Lorsque vous utilisez les méthodes paginate ou simplePaginate sur une requête
Eloquent dans Laravel, vous recevez une instance de Paginator. Pour paginate, c'est
Illuminate\Pagination\LengthAwarePaginator, et pour simplePaginate, c'est
Illuminate\Pagination\Paginator. Ces instances offrent des méthodes et peuvent être
itérées comme des tableaux.
Une fois les résultats paginés obtenus, vous pouvez facilement créer des liens de
pagination en utilisant le moteur de template Blade de Laravel
Pagination
Modification des vues de pagination
Lorsque vous utilisez la pagination laravel, vous êtes libre d'utiliser vos propres vues
personnalisées. Ainsi, lorsque vous appelez la méthode links sur une instance de
paginateur, transmettez le nom de la vue comme premier argument à la méthode,
comme:
Ou :
Vous pouvez personnaliser les vues de pagination en les exportant dans votre
répertoire resources/views/vendor à l'aide de la commande vendor: publish:
Génération :
Utilisez la commande artisan make:migration pour créer un nouveau fichier de
migration. Par exemple, pour créer une migration pour la table « flights », vous
pouvez exécuter la commande suivante dans le terminal :
Gestion des migrations
Structure :
Méthode up :
La méthode up est utilisée pour définir les modifications à apporter à la base de
données. C'est ici que vous spécifiez la création de tables, de colonnes, d'index, etc.
Méthode down :
La méthode down est utilisée pour spécifier les instructions d'annulation des
modifications définies dans la méthode up. Par exemple, si la migration crée une
table, la méthode down devrait inclure les instructions pour supprimer cette table.
Gestion des migrations
Exécuter des migrations :
A la fin de l'exécution de toutes vos classes de migration, vous pouvez exécuter la
commande artisan:
Cela créera vos tables et vos colonnes dans votre base de données. Les autres
commandes de migration utiles sont les suivantes:
Renommer un tableau
Supprimer un tableau
Gestion des migrations
Manipulation des Colonnes :
Modificateurs de colonne
il existe plusieurs « modificateurs » de colonnes que vous pouvez utiliser lors de l'ajout
d'une colonne à une table de base de données. Par exemple, pour rendre la colonne
"nullable", vous pouvez utiliser la nullableméthode :
Gestion des migrations
Manipulation des Colonnes :
Suppression de colonnes
Pour supprimer une colonne, vous pouvez utiliser dropColumn du générateur de
schéma :
Gestion des migrations
Manipulation des Indexs :
Dans Laravel, l'ajout d'index à une table de base de données est une pratique courante
pour améliorer les performances lors de l'exécution de requêtes de recherche.Vous
pouvez ajouter différents types d'index, tels que des index simples, des index uniques et
des index de clé étrangère.
Ajouter un index simple :
Suppression d'index: