PHPPamokos.lt


6. Patogesnis įmontuotas Auth + Socialite

Viena dažniausią rimtesnių projektų naudojama funkcija yra vartotojų registracija ir autentifikavimas. Laravel 4 versijoje esantis Auth funkcionalumas buvo pakankamai geras, bet Laravel 5 žengė dar toliau.

Dabar jums tiesiog pačiame frameworke pateikiami visi failai, reikalingi autentifikacijos mechanizmui sukurti:

  • DB lentelių migracijos (vartotojų ir slaptažodžių priminimų) kataloge database/migrations
  • Eloquent modelis app/User.php
  • Du controlleriai - prisijungimui ir slaptažodžio priminimui kataloge app/Http/Controllers/Auth
  • Keturi Views failai (registracija, prisijungimas ir du slaptažodžio prisiminimui) kataloge resources/views/auth

Tai iš principo, ką jums reikia padaryti, norint turėti pilnaverčią (nors ir minimalią) autentifikaciją:

  • Praleisti DB migracijas
  • Pažiūrėti į failą config/auth.php, ar jums tinka visi nustatymai
  • Nukreipti Routes.php faile URL adresus į prisijungimą ir registraciją
  • Paredaguoti Views failus savo nuožiūra

Kas, realiai, yra valandos darbas, nebent turėsite specifinių poreikių - tada jau viskas, be abejo, gali būti daug sudėtingiau.

Kalbant apie sudėtingumą, pats asmeniškai Laravel 4 Auth mechanizmo nenaudojau - man patiko išorinė biblioteka Sentry, kurioje buvo rolių/funkcijų mechanizmas, bet bent jau šio kurso rašymo metu ji nėra pritaikyta Laravel 5 versijai. Kūrėjai Cartalyst žada tai artimiausioje ateityje, bet jiems iš dalies net neapsimoka to daryti, nes jie sukūrė tobulesnį produktą Sentinel, kuris yra mokamas - tiksliau, įeina į jų paketą, kainuojantį 25 dolerius per mėnesį.

Socialite

Taip pat Laravel pristatė naują integraciją su biblioteka pavadinimu Socialite, kuri leidžia sukurti prisijungimo mechanizmą per socialinius tinklus - šiuo metu palaikomi Facebook, Twitter, Google ir GitHub.

Norint panaudoti biblioteką, viskas vyksta senu geru Laravel 4 metodu. Pirmiausia ją reikia įdėti į composer.json failą:

"laravel/socialite": "~2.0"

Toliau - einame į config/app.php ir įdedame naują eilutę prie Providers (Laravel\Socialite\SocialiteServiceProvider) ir galime sukurti Fasadą prie Aliases:

'Socialize' => 'Laravel\Socialite\Facades\Socialite',

Tada einame į failą config/services.php ir įrašome norimų autentifikavimo būdų parametrus, gautus iš socialinių tinklų aplikacijų, pvz:

'github' => [
    'client_id' => 'your-github-app-id',
    'client_secret' => 'your-github-app-secret',
    'redirect' => 'http://your-callback-url',
],

Ir viskas, galime naudotis prisijungimu. Realiai mums reikia trijų dalykų: mygtuko pačiam prisijungimui, tada funkcijos gauti duomenis atgal, ir galimybių gauti konkretų vartotojo lauką (vardą, emailą ar panašiai). Tai apie viską iš eilės:

Norėdami nusiųsti vartotoją autentifikacijai per Facebook, savo Controlleryje įrašome tokią eilutę:

return Socialize::with('facebook')->redirect();

O taip vadinamas Callback metodas, į kurį yra grąžinamas vartotojas po autentifikacijos, kviečia metodą user():

$user = Socialize::with('github')->user();

O tada jau kiekvienam vartotojui galime kviesti metodus, norint gauti konkrečius jo duomenis:

$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

Kaip ir viskas. Negi ne paprasta?



(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com