Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Guards Guards

Guards Guards

Nemanja Maric

December 15, 2016
Tweet

More Decks by Nemanja Maric

Other Decks in Programming

Transcript

  1. GUARDS! GUARDS!
    NEMANJA MARIĆ
    Junior PHP Developer at System INC

    View Slide

  2. LARAVEL AUTHENTICATION
    php artisan make:auth

    View Slide

  3. SAVET
    Ako pokrećete php artisan make:auth vodite računa
    da to bude na početku pravljenja aplikacije, kako vam ne bi
    pregazio controller-e ili view-ove ako postoje pod tim
    nazivom.

    View Slide

  4. .

    View Slide

  5. APLIKACIJA JE SPREMNA
    make:auth koristi bootstrap. Idealan je za male aplikacije,
    jer ima sve što klijentu treba za sajt, kao sto su:
    1. Registracija
    2. Login
    3. Change password
    4. Forgot password
    5. Logout

    View Slide

  6. ZASTO JE PO MOM MIŠLJENJU DOBAR
    LARAVEL AUTHENTICATION
    1. Preglednost
    2. Brzo je spremno za rad
    3.
    4.
    5. Dosta mogućnosti out of the box
    Lako se edituje
    Mogućnost dodavanja custom guard-a

    View Slide

  7. AUTH CONTROLLERS

    View Slide

  8. REGISTER CONTROLLER
    protected function validator(array $data)
    {
    return Validator::make($data, [
    'name' => 'required|max:255',
    'email' => 'required|email|max:255|unique:users',
    'password' => 'required|min:6|confirmed',
    ]);
    }
    protected function create(array $data)
    {
    return User::create([
    'name' => $data['name'],
    'email' => $data['email'],
    'password' => bcrypt($data['password']),
    ]);
    }

    View Slide

  9. LOGIN CONTROLLER
    /**
    * Where to redirect users after login / register.
    *
    * @var string
    */
    protected $redirectTo = '/home';

    View Slide

  10. LOGIN PREKO USERNAME
    public function username()
    {
    return 'username';
    }

    View Slide

  11. ROUTE
    Auth::routes();
    Route::get('/home', '[email protected]');

    View Slide

  12. public function auth()
    {
    // Authentication Routes...
    $this->get('login', 'Auth\[email protected]')->name('login'
    $this->post('login', 'Auth\[email protected]');
    $this->post('logout', 'Auth\[email protected]')->name('logout'
    // Registration Routes...
    $this->get('register', 'Auth\[email protected]'
    $this->post('register', 'Auth\[email protected]');
    // Password Reset Routes...
    $this->get('password/reset', 'Auth\[email protected]
    $this->post('password/email', 'Auth\[email protected]
    $this->get('password/reset/{token}', 'Auth\[email protected]
    $this->post('password/reset', 'Auth\[email protected]'
    }

    View Slide

  13. CUSTOM GUARD
    Postoje 2 načina dodavanje custom guarda:
    1. Prepravljanjem make:auth
    2. Manuelno

    View Slide

  14. PREPRAVLJANJE MAKE:AUTH
    U Laravelu 5.3, prepravljanje auth-a je lakše i preglednije
    nego u verziji 5.2. Pri pokretanju make:auth, može se
    jednostavno preimenovati folder, za controller-e i view-ove.
    Zameniti namespace, dodati custom guarda, route, i sama
    registacija guard-a.

    View Slide

  15. Dodavanje custom guarda u LoginController,
    RegisterController i ResetPasswordController
    use Illuminate\Support\Facades\Auth;
    protected function guard()
    {
    return Auth::guard('guard-name');
    }

    View Slide

  16. MANUELNO
    Možda ne baš najbolji način ali pregledan. Veoma lako ćete
    se snaći kada se budete vratili na projekat da nešto dodate
    ili izmenite.

    View Slide

  17. REGISTRACIJA CUSTOM GUARDA
    U config/auth.php treba dodati svog guarda.
    'guards' => [
    'web' => [
    'driver' => 'session',
    'provider' => 'users',
    ],
    'api' => [
    'driver' => 'token',
    'provider' => 'users',
    ],
    ],

    View Slide

  18. REGISTRACIJA CUSTOM GUARDA
    Takođe u config/auth.php treba dodati providera.
    'providers' => [
    'users' => [
    'driver' => 'eloquent',
    'model' => App\User::class,
    ],
    ],
    'providers' => [
    'users' => [
    'driver' => 'database',
    'table' => 'users',
    ],
    ],

    View Slide

  19. LOGOVANJE
    Napravite neki controller koji će da rešava vašeg guarda.
    if (Auth::guard('account')->check()
    || Auth::guard('account')->attempt(['email' => $request->email, 'password'
    return redirect('/');
    } else {
    return back()->with(['message' => 'Login failed'])->withInput();
    }

    View Slide

  20. SAVET
    Kada nazivate guard-a, npr. 'account', dodajte i model sa
    migracijom za taj naziv guard-a, kako biste se lakše snalazili
    kad se nekad vratite na projekat.

    View Slide

  21. MODEL
    Ako dodajete model preko konzole morate malo da ga
    editujete da biste mogli da se ulogujete preko njega.
    use Illuminate\Database\Eloquent\Model;
    class Account extends Model
    use Illuminate\Foundation\Auth\User as Authenticatable;
    class User extends Authenticatable

    View Slide

  22. HVALA NA PAŽNJI

    View Slide