Laravel
Models Migration Relation
Introduction,istallation Strucutre,model,migration Migration,Models,Relation
Les Relations
BelongsTo HasOne HasMany BelongsToMany HasManyThrough
Exemples des Relations
Relations:oneToMany,ManyToMany... Relations:Exemples
Exercices
Exercice 1 Exercice 2
Controllers Views Routes
Routes,Controller,Model,view CRUD: Etudiant CRUD: Car CRUD,Recherche: Book
Validation
Exemple :Projets
Api:Laravel +React
Middleware

Seeders & Factories

Authenfication
Layouts





Authentification

Role

Permet de sécuriser l'accés au resources de l'application:
  • Les routes
  • Views
  • Fonctions

Utilisation de Laravel\ui

Permet d'ajouter toutes les outils néccésaire pour l'authentification:
  • Les viesw:
    
     auth/login.blade.php
     auth/passwords/confirm.blade.php
     auth/passwords/email.blade.php
     auth/passwords/reset.blade.php
     auth/register.blade.php
     auth/verify.blade.php
     home.blade.php
  • les controllers :
    LoginController
       RegisterController
       ConfirmController
       ...
     
    

installation de Laravel\ui

composer require laravel/ui
php artisan ui bootstrap --auth
npm install
npm run build
php  artisan serve

Lancer la page register.php

http://127.0.0.1:8000/register

Lancer la page login.php

http://127.0.0.1:8000/register

lancer /home

http://127.0.0.1:8000/home

Example d'utilisation:web.php

Sécurisé une route

TestController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    function sayHello()
    {
        return "

Hello everyone

"; //or return view //return view("ViewName") } }

Web.php

//permet d'ajouter les routes de l'authentification
// login ,/register
Auth::routes();


//sécurisé la route /test
Route::get("/test",[TestController::class,'sayHello'])->name("testroute")->middleware('auth');

Sécurisé plusieurs routes


//... just pour infos
Route::middleware(['auth'])->group(function () {
    Route::get('/cours/create', [CoursController::class, 'create'])->name('cours.create');
    Route::post('/cours', [CoursController::class, 'store'])->name('cours.store');
    Route::get('/cours/{cours}/edit', [CoursController::class, 'edit'])->name('cours.edit');

});

Example d'utilisation :au niveau des fonctions:

TestController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

//importer l'objet Auth (gère l'authentification)
use Illuminate\Support\Facades\Auth;

class TestController extends Controller
{
function sayGoodBy()
  {
    $auth=Auth();
    //vérifier s'il est connecté
    if (Auth::check()) {
        // User is authenticated
    return "GoodBye you're connected";
    }
    else
    {
        //soit on fait des traitement
      // return  "You must connect to view the content";
      //soit on demande l'authenfication
      return redirect("/login");
    }
  }

    function sayHello()
    {
        return "Hello everyone";
        //or return view
        //return view("ViewName")
    }
}

Web.php



Route::get("/bye",[TestController::class,'sayGoodBy'])->name("testbye");
 

Example d'utilisation de l'objet Auth

Auth() :permet de récupérer les informations sur l'utilisateur connecté

use Illuminate\Support\Facades\Auth;

Ajouter la fonction dans le controller

TestController


    function getUserinfo()
    {
        $auth=Auth();
        //console les information de l'objet Auth
        dd($auth->user());   
    }
 

Ajouter la route dan web.php

Route::get("/infos",[TestController::class,'getUserinfo'])->name("testinfos");

Sécuriser une partie dans une View

Ajouter la fonction showView

TestController


function showView()
    {
        return view("myView");
    }

  //déconnexion
    function logout()
    {
        $auth=Auth(); 
        $auth->logout();
        return redirect("/login");
    }
  

myView.blade.php

<div>
    <h1>public content</h1>
    <p>This is a public content anyone can read it</p>
</div>

@guest
<h1> ou on peut utiliser guest pour un contenu pour les users n'ont connecté SEULEMENT</h1>

@endguest 

@auth
<div>
    <h1>private Content</h1>
    <p>This section is visible only to the connected uers</p>
</div>
@endauth

web.php


  Route::get("/abc",[TestController::class,'showView'])->name("showViewtest");
Route::get("/logout",[TestController::class,'logout'])->name("logouttest");

 

Exemples

menu.blade.php

<table>
    <tr>
   @auth <td><a href="#">BienVenue: {{ Auth::user()->name }}</a></td> @endauth
   @auth<td><a href="/ajouter">Ajouter</a></td>@endauth
        <td><a href="/Afficher">Afficher</a></td>
        @auth<td><a href="/Vendre">Vendre</a></td>
        <td><a href="/logout">Logout</a></td>@endauth
       @guest <td><a href="/login">Connexion</a></td> @endguest
</tr>
</table>

route :web.php

Route::get("/hi",function(){ return view("menu");});