Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Transactions Laravel : Sécurisez vos données
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Transactions Laravel : Sécurisez vos données

L'Équipe Alphorm Par L'Équipe Alphorm 9 janvier 2025
Partager
Partager

La gestion incohérente des données et fichiers peut entraîner des erreurs critiques.

Ces erreurs peuvent provoquer des pertes de données ou des dysfonctionnements dans votre application.

Découvrez comment utiliser les transactions dans Laravel pour garantir la cohérence et la sécurité de vos opérations.

Table de matière
Modifier store pour transactions LaravelÉtapes: Transactions et sauvegarde de donnéesRésultats: Intégrité des données et avatarsFAQConclusion

Formation Laravel : Le Guide Complet du Débutant

Initiez-vous à Laravel et réalisez votre première application en toute confiance.

Découvrir cette formation

Lorsque vous effectuez plusieurs opérations liées, comme la sauvegarde de données et de fichiers, une transaction garantit que toutes les actions aboutissent ou qu’aucune d’entre elles n’est appliquée en cas d’erreur. Cela évite des incohérences entre vos données et vos fichiers.

Dans cette section, vous allez :

Diagramme en quatre étapes des transactions Laravel

Modifier store pour transactions Laravel

Voici le code pour la méthode store :

				
					
 public function store(Request $request)
{
$user = auth()->user();
DB::beginTransaction();
try{
$request->validate([
'name' => ['required', 'string', 'min:3', 'max:20', Rule::unique('users')->ignore($user->id)],
'email' => ['required', 'string', 'email', Rule::unique('users')->ignore($user->id)],
'avatar' => ['sometimes', 'nullable', 'file', 'image', 'mimes:jpeg,png', 'dimensions:min_width=200,min_height=200'],
]);
if ($request->hasFile('avatar') && $request->file('avatar')->isValid()) {
// Supprimer l'ancien répertoire d'avatars si nécessaire
if (Storage::exists('avatars/' . $user->id)) {
Storage::deleteDirectory('avatars/' . $user->id);
}
// Générer un nom unique pour l'image
$imageName = time() . '-' . $request->file('avatar')->getClientOriginalName();
// Chemin de destination pour l'image principale
$destinationPath = public_path('avatars/' . $user->id . '/');
if (!file_exists($destinationPath)) {
mkdir($destinationPath, 0777, true);
}
// Lire l'image
$image = Image::read($request->file('avatar'));
// Sauvegarder l'image principale
$image->save($destinationPath . $imageName);
// Générer une miniature et la sauvegarder
$destinationPathThumbnail = public_path('avatars/' . $user->id . '/thumbnail/');
if (!file_exists($destinationPathThumbnail)) {
mkdir($destinationPathThumbnail, 0777, true);
}
$image->resize(200, 200, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
});
$image->save($destinationPathThumbnail . $imageName);
// Mettre à jour ou créer les informations de l'avatar dans la base de données
$user->avatar()->updateOrCreate(
['user_id' => $user->id],
[
'filename' => $imageName,
'url' => asset('avatars/' . $user->id . '/' . $imageName),
'thumb_url' => asset('avatars/' . $user->id . '/thumbnail/' . $imageName),
]
);
}
}catch(\Exception $e){
DB::rollBack();
dd($e->getErrors());
}
DB::commit();
return back()
->with('success', 'Profil et avatar mis à jour avec succès!')
->with('imageName', $imageName);
}

				
			

Étapes: Transactions et sauvegarde de données

Validation des données

  • Vous validez les champs name, email et avatar.
  • La validation garantit que les données sont valides avant d’être utilisées.

Gestion des fichiers d’avatar

  • Si un fichier est téléchargé, vous supprimez l’ancien répertoire associé à l’utilisateur.
  • Vous créez des répertoires pour stocker l’image principale et sa miniature.
  • Vous utilisez le package Intervention/Image pour redimensionner et sauvegarder l’image.

Mise à jour de la base de données

  • Vous insérez ou mettez à jour les informations de l’avatar en base de données avec la méthode updateOrCreate.

Transaction

  • Toutes les opérations sont encapsulées dans une transaction avec DB ::beginTransaction() et DB::commit().
  • En cas d’erreur, la transaction est annulée avec DB ::rollBack().

Retour utilisateur

  • Vous retournez un message de succès ou d’erreur à l’utilisateur.

Résultats: Intégrité des données et avatars

Cas de succès

  • Les données utilisateur (nom, email) sont mises à jour.
  • L’image d’avatar est sauvegardée avec sa miniature.
  • Les informations d’avatar sont ajoutées ou mises à jour en base de données.
  • Un message de confirmation est affiché à l’utilisateur.

Voici affichage de message

Formulaire utilisateur dans Laravel

Cas d’erreur

  • Si une erreur se produit (validation échouée, problème de sauvegarde, etc.), aucune modification n’est appliquée.
  • Un message d’erreur détaillé est retourné.
Astuce Pratique :
Utilisez un système de gestion de fichiers cloud (comme AWS S3) en production pour gérer les avatars.
Implémentez une gestion d’erreurs plus avancée en journalisant les exceptions avec Log::error().
Testez cette fonctionnalité avec des fichiers valides et non valides pour vous assurer de sa robustesse.

Avec ce guide, vous avez tous les outils pour sécuriser et gérer l’insertion des données utilisateur et d’images dans votre application Laravel

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment fonctionnent les transactions dans Laravel?
Les transactions dans Laravel permettent de regrouper plusieurs opérations en une seule. Cela signifie que toutes les actions doivent réussir pour que les modifications soient appliquées. Si une erreur survient, Laravel annule toutes les actions effectuées pendant la transaction. Cela assure la cohérence des données et empêche les incohérences entre les fichiers et la base de données.
Pourquoi utiliser une transaction pour la sauvegarde de fichiers?
L’utilisation d’une transaction lors de la sauvegarde de fichiers garantit que toutes les étapes du processus, comme la validation des données et l’enregistrement des images, sont exécutées correctement. En cas d’erreur, la transaction est annulée, ce qui empêche des incohérences comme des fichiers partiellement téléchargés ou des données non synchronisées entre le système de fichiers et la base de données.
Comment gérer les erreurs dans une transaction Laravel?
Dans une transaction Laravel, les erreurs sont gérées avec un bloc try-catch. Si une exception est levée, la méthode DB::rollBack() est appelée pour annuler toutes les actions effectuées durant la transaction. Cela garantit que ni les données ni les fichiers ne sont modifiés en cas d’erreur, préservant ainsi l’intégrité du système.
Quels sont les avantages de l'updateOrCreate dans Laravel?
La méthode updateOrCreate de Laravel est bénéfique pour la gestion des enregistrements car elle simplifie le processus de mise à jour ou de création de nouvelles entrées dans la base de données. Elle vérifie si un enregistrement existe et le met à jour, ou en crée un nouveau si ce n’est pas le cas. Cela est particulièrement utile pour assurer que les données sont toujours à jour sans avoir besoin de vérifier manuellement l’existence de l’enregistrement.
Comment assurer la validité des données avant leur utilisation?
Pour garantir la validité des données avant utilisation, Laravel offre des mécanismes de validation robustes. En utilisant la méthode validate, vous pouvez définir des règles pour chaque champ, comme le type de données et les contraintes. Cela assure que seules les données conformes aux critères définis sont traitées, réduisant ainsi les risques d’erreurs.

Conclusion

En appliquant ces techniques, vous assurez une gestion sécurisée et efficace des données dans Laravel. Quelles autres stratégies utilisez-vous pour sécuriser vos applications?

ÉTIQUETÉ : Laravel
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Transactions Laravel : Sécurisez vos données

© Alphorm - Tous droits réservés