Académique Documents
Professionnel Documents
Culture Documents
Objectif : Cet atelier a pour objectif « La mise en place d’un système d’authentification basé sur le
Framework Laravel », durant cet atelier implémenter un système d’authentification avec une gestion
des profiles, rôles et droits : «Administrateur et Internaute ».
Installation de composer :
Réalisation :
1. Créer un nouveau projet en utilisant la commande : composer create-project laravel/laravel
CrudResource
Université Abdelmalek Essaadi
Faculté ses Sciences et techniques de Tanger
Département Génie Informatique
Cycle Licence : S5
Framework Laravel
4. Dans le fichier .env modifier le nom de base de données, login, puis le password
Université Abdelmalek Essaadi
Faculté ses Sciences et techniques de Tanger
Département Génie Informatique
Cycle Licence : S5
Framework Laravel
5. Dans le dossier projet créer des ressources d’authentification via l’outil Artisan :
7. Création d’une migration role_user « une table intérimaire entre role et user »
8. Modification des classes du model « User et Role » en ajoutant une relation Many-To-Many :
Université Abdelmalek Essaadi
Faculté ses Sciences et techniques de Tanger
Département Génie Informatique
Cycle Licence : S5
Framework Laravel
User :
Role :
9. Création des seeders “jeu de teste pour les tables users et roles” :
Les deux fichiers vont être créer « database/seeds/ folder », modifier la méthode run du fichier
RoleTableSeeder :
use Illuminate\Database\Seeder;
use App\User;
use App\Role;
class RoleTableSeeder extends Seeder
{
public function run()
{
$role_employee = new Role();
$role_employee->name = ‘internaute;
$role_employee->description = ‘A internaute User’;
$role_employee->save();
$role_manager = new Role();
$role_manager->name = ‘admin;
$role_manager->description = ‘A Admin User’;
$role_manager->save();
}}
Même chose pour le fichier UserTableSeeder :
Université Abdelmalek Essaadi
Faculté ses Sciences et techniques de Tanger
Département Génie Informatique
Cycle Licence : S5
Framework Laravel
use Illuminate\Database\Seeder;
use App\User;
use App\Role;
class UserTableSeeder extends Seeder
{
public function run()
{
$role_agent = Role::where(‘name’, ‘internaute )->first();
$role_admin = Role::where(‘name’, ‘admin’)->first();
$employee = new User();
$employee->name = ‘Internaute Name’;
$employee->email = ‘employee@example.com‘;
$employee->password = bcrypt(‘secret’);
$employee->save();
$employee->roles()->attach($role_agent);
$manager = new User();
$manager->name = ‘Admin Name’;
$manager->email = ‘manager@example.com‘;
$manager->password = bcrypt(‘secret’);
$manager->save();
$manager->roles()->attach($role_admin);
}
}
10. Modification de la class User model en ajoutant ce code de 3 méthode nécessaire pour
l’authentification :
/**
* @param string|array $roles
*/
public function authorizeRoles($roles)
{
if (is_array($roles)) {
return $this->hasAnyRole($roles) ||
Université Abdelmalek Essaadi
Faculté ses Sciences et techniques de Tanger
Département Génie Informatique
Cycle Licence : S5
Framework Laravel
$user = User::create([
‘name’ => $data[‘name’],
‘email’ => $data[‘email’],
‘password’ => bcrypt($data[‘password’]),
]);
$user
->roles()
->attach(Role::where(‘name’, ‘internaute’)->first());
return $user;
12. Dans l’un des contrôleurs « Home par exemple », ajouter le code suivant :
$this->middleware(‘auth’);
}
public function index(Request $request)
{
$request->user()->authorizeRoles([‘internaute ’, ‘admin’]);
return view(‘home’);
}
/* function qui didié pour les admin
public function someAdminStuff(Request $request)
{
$request->user()->authorizeRoles(‘admin’);
// rmaplacer par une vue selon votre projet
return view(‘some.view’);
}
*/
}