LARAVEL Manipuler les fichiers

Une des fonctionnalités qui à coup sûr vous êtes confronté ou serait confronté un jour ,c’est le fameux envoi de fichier et gestion des fichiers media quelques soient leurs types et tailles.

  • Comment et ou je les stocke
  • Comment je fais le lien entre le fichier et mon application Laravel : URL temporaire , fixe..
  • Comment je gère la sécurité et les droits d’accès
  • Quels types de droits puis je donner pour accéder à la ressource : public ou privé
  • La performance le download et upload sont consommateurs de ressources : stream gzip pour optimiser la compression.
  • Les interconnexions possibles en plus de stocker localement sur votre serveur de pouvoir stocker sur du Cloud, ou du FTP..
  • Comment proprement j’intègre mon Model Laravel de mon app avec ma gestion de fichiers et de tous les cas cités ci dessus

Pour cela j’ai trouvé un package qui vraiment est le must :

https://github.com/spatie/laravel-medialibrary

Une documentation très bien faites et une simplicité d’utilisation!

https://docs.spatie.be/laravel-medialibrary/v7/introduction/

La classe de base est hasMedia , il suffit de faire hériter votre propre model de cette classe

class PrivateDocument extends Model implements HasMedia{

	protected $table = 'privatedocument';
	
	use HasMediaTrait;
	
	public $timestamps = true;
	
	protected $fillable = array('name','userid','note','created_at','updated_at');
	
	public function assignedUser()
	{
		return $this->belongsTo('Groovel\Cmsgroovel\models\User','userid','id');
	}
	
	
	
	public function hasSharePrivateDocuments(){
	    return $this->hasMany('Test\Easyged\models\SharePrivateDocument','privatedocid','id');
	}
}

Pour y accéder rien de plus simple :

                $document=PrivateDocument::find(id);//id du fichier
    		ici je stocke tous mes fichiers dans une collection appelé private vous pouvez nommer vos collections    		
    		$media = $document->getFirstMedia('private');//pour accéder au fichier
    		$url = $document->getFirstMediaUrl('private');//retourne l'url vers la ressource fichier

Le package va générer une nouvelle table en base : media

qui va maintenir le lien logique entre votre class model Laravel et votre fichier et tout cela de manière transparente

L’API est très facile à utiliser, il est facilement possible de customiser les URL , de resizer les images, et de faire des contrôles de tailles et de type de fichiers stockés.

Cette librairie est très performante, vous pouvez streamer vos fichiers Référez vous à la documentation! et merci au développeur de ce package , beau boulot!

Laravel : Authentification Login

Cette fonctionnalité très couramment utilisée dans tous les projets est le must have. Dans le framework Laravel sachez que cette fonctionnalité est nativement déjà développé ce qui permet de faire gagner un temps précieux

vous retrouvez bien entendu :

l’authentification basique avec mot de passe et login

le reset password en cas d’oubli

et le fameux jail au cas ou vous tentez d’insérer n fois le mauvais mot de passe vous êtes en quarantaine et devez attendre x minutes pour réssayer une authentification.

La fonctionnalité dispose déjà d’écran prédéfini au design simple: page d’authentification reset password

2 commandes à lancer pour génerer la partie authentification

php artisan make:auth et php artisan migrate

Et hop : from scratch

j’installe Laravel avec mon ami Composer :

composer create-project --prefer-dist laravel/laravel blog
Je crée une base de donnée sur mysql 
je lance php artisan make:auth création des vues+ conf
je lance php artisan migrate création des tables
un php artisan serve car je suis en local 
That's all


Laravel Package sauvegarder votre plateforme

Quand on démarre un projet Laravel la finalité c’est de le mettre en production les tâches les plus fastidieuses ce sont de prévoir les sauvegardes, la planification de la fameuse crontab pour scheduler le lancement des sauvegardes coté base de donnée mais aussi la sauvegarde compléte du site images , et gérer l’espace disque et l’endroit ou l’on va stocker les sauvegardes pour vous j’utilise un plugin qui fait toutes ces tâches et vous fera gagner un temps précieux.

je l’utilise dans tous mes projets je vous donne le lien

https://github.com/spatie/laravel-backup

Ce plugin est un must have il permet de programmer des sauvegardes de votre base de données et de toute votre application Laravel

De gérer les archives et de gérer les l’espace disque suivant une stratégie que vous pouvez configurer garder les plus anciennes pendant..ne pas dépasser les 20G par exemple de disque..

Vous êtes notifier par email quand la sauvegarde est effectué

Vous pouver configurer le plugin pour stocker vos sauvegardes sur un serveur externe FTP SFTP ou dans des container cloud Amazon, OVH par exemple, d’autre sont pris en compte

Le plugin est stable et ceux même quand l’application est grosse il fait bien son travail par contre il est intéréssant de filtrer des répetoires ou fichiers inutiles à sauvegarder

J’attends vos commentaires surtout sur d’éventuels problémes ou cas particulier! merci