Vous êtes sur la page 1sur 8

Université Abdelmalek Essaadi

Faculté ses Sciences et techniques de Tanger


Département Génie Informatique
Cycle Licence : S5
Framework Laravel

Atelier 5 : Laravel et Système d’authentification

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

2. Création d’une nouvelle base de données dans le SGBD Mysql :

3. Lancer le serveur de développement de 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 :

php artisan make:auth

6. Création de la classe model et de fichier migration Rôle :

php artisan make:model Role -m

Le Code du fichier migration sera comme suivant :

public function up()


{
Schema::create(‘roles’, function (Blueprint $table) {
$table->increments(‘id’);
$table->string(‘name’);
$table->string(‘description’);
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists(‘roles’);
}

7. Création d’une migration role_user « une table intérimaire entre role et user »

php artisan make:migration create_role_user_table

Le Code du fichier migration sera comme suivant :

public function up()


{
Schema::create(‘role_user’, function (Blueprint $table) {
$table->increments(‘id’);
$table->integer(‘role_id’)->unsigned();
$table->integer(‘user_id’)->unsigned();
});
}
public function down()
{
Schema::dropIfExists(‘role_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 :

public function roles()


{
return $this->belongsToMany(Role::class);
}

Role :

public function users()


{
return $this->belongsToMany(User::class);
}

9. Création des seeders “jeu de teste pour les tables users et roles” :

$ php artisan make:seeder RoleTableSeeder


$ php artisan make:seeder UserTableSeeder

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);
}
}

Modifier le fichier DatabaseSeeder qui existe dans le même répertoire :

public function run()


{
// Role comes before User seeder here.
$this->call(RoleTableSeeder::class);
// User seeder will use the roles above created.
$this->call(UserTableSeeder::class);
}

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

abort(401, ‘This action is unauthorized.’);


}
return $this->hasRole($roles) ||
abort(401, ‘This action is unauthorized.’);
}
/**
* Check multiple roles
* @param array $roles
*/
public function hasAnyRole($roles)
{
return null !== $this->roles()->whereIn(‘name’, $roles)->first();
}
/**
* Check one role
* @param string $role
*/
public function hasRole($role)
{
return null !== $this->roles()->where(‘name’, $role)->first();
}

11. Modifier la méthode create() du contrôleur RegisterController.php dans le dossier


“app/Http/Controllers/Auth/ »

$user = User::create([
‘name’ => $data[‘name’],
‘email’ => $data[‘email’],
‘password’ => bcrypt($data[‘password’]),
]);
$user
->roles()
->attach(Role::where(‘name’, ‘internaute’)->first());
return $user;

Puis lancer la commande artisan pour la migration seed :

php artisan migrate:fresh --seed

12. Dans l’un des contrôleurs « Home par exemple », ajouter le code suivant :

class HomeController extends Controller


{
public function __construct()
{
Université Abdelmalek Essaadi
Faculté ses Sciences et techniques de Tanger
Département Génie Informatique
Cycle Licence : S5
Framework Laravel

$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’);
}
*/
}

13. Lancer l’application

14. Ecran d’enregistrement


Université Abdelmalek Essaadi
Faculté ses Sciences et techniques de Tanger
Département Génie Informatique
Cycle Licence : S5
Framework Laravel

15. Ecran d’authentification

Vous aimerez peut-être aussi