SlideShare a Scribd company logo
1 of 40
Download to read offline
Laravelowe paczki do
uwierzytelniania
Kamil Piech
Inżynier oprogramowania
kamil.piech@blumilk.pl
Plan prezentacji
● Wcześniejsze rozwiązania
● Fortify
● Sanctum
● Breeze
● Jetstream
Laravel 5.2 - skrót
php artisan make:auth
● appHttpControllers
Auth...
● resourcesviewsauth...
● resourcesviewslayouts... (Bootstrap)
● Uwierzytelnianie
● Rejestracja
● Resetowanie hasła
Laravel 6 - skrót
composer require laravel/ui "^1.0"
php artisan ui vue --auth
laravel new blog --auth
● appHttpControllers
Auth...
● Uwierzytelnianie
● Rejestracja
● Resetowanie hasła
Fortify
Fortify - przed i po instalacji
composer require laravel/fortify
php artisan vendor:publish --provider=
"LaravelFortifyFortifyServiceProvider"
php artisan migrate
● configfortify.php
● appActionsFortify...
● appProvidersFortifyServiceProvider.php
Fortify - konfiguracja fortify.php
use AppProvidersRouteServiceProvider;
use LaravelFortifyFeatures;
return [
...
"views" => true,
"features" => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(),
Features::updateProfileInformation(),
Features::updatePasswords(),
Features::twoFactorAuthentication([
"confirmPassword" => true,
]),
],
Fortify - co nam daje?
● Uwierzytelnianie / dwuetapowe
● Rejestrację
● Resetowanie hasła
● Weryfikację mailowa konta
● https://laravel.com/docs/8.x/fortify
Fortify - a gdzie widoki?
● https://github.com/laravel/ui
● AppProvidersFortifyServiceProvider.php
public function boot()
{
Fortify::loginView(
function () {
return view('auth.login');
}
);
}
Fortify - plusy i minusy
- brak widoków
+ dużo opcji konfiguracji
+ mała ilość dodatkowych plików w projekcie
Sanctum
Sanctum - przed i po instalacji
composer require laravel/sanctum
php artisan vendor:publish --provider=
"LaravelSanctumSanctumServiceProvider"
php artisan migrate
● configsanctum.php
● database2021_11_25_000001_create_personal_access_tokens_table.php
Sanctum - konfiguracja sanctum.php
return [
"stateful" => explode(",", env(
"SANCTUM_STATEFUL_DOMAINS"
,
"localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1,"
. parse_url(env(
"APP_URL"), PHP_URL_HOST)
)),
"expiration" => null,
"middleware" => [
"verify_csrf_token" => AppHttpMiddlewareVerifyCsrfToken::class,
"encrypt_cookies" => AppHttpMiddlewareEncryptCookies::class,
],
];
Sanctum - co nam daje?
● Uwierzytelnianie API za pomocą tokenu
● Uwierzytelnianie dla aplikacji typu SPA
● Uwierzytelnianie dla aplikacji mobilnych
● https://laravel.com/docs/8.x/sanctum
Przykładowy token: Bearer 1|jadhafvbma67e8fsddfsm
Sanctum - to naprawdę proste
public function __construct(protected Hasher $hash) {}
public function login(Request $request): string
{
$user = User::query()->where(
"email", $request->get(
"email"))->first();
if ($user === null || !$this->hash->check($request->get(
"password"), $user->password))
{
throw new AuthenticationException();
}
return $user->createToken($user->email)->plainTextToken;
}
Sanctum - od strony klienta
$response = $client->request(GET, '/api/user', [
'headers' => [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json',
],
]);
Sanctum - od strony serwera
use IlluminateRoutingRouter;
/** @var Router $router */
$router = app(Router::class);
$router->middleware(
"auth:sanctum")->group(
function (Router $router): void {
$router->get(
"/user", fn(Request $request) => $
request->user());
},
);
Sanctum - plusy i brak minusów?
+ opcja modyfikacji bazowej klasy tokenu
+ mała ilość dodatkowych plików w projekcie
+ łatwa i przejrzysta praca z tokenami
Breeze
Breeze - przed i po instalacji
composer require laravel/breeze
php artisan breeze:install
npm install
npm run dev
php artisan migrate
● appHttpControllers
Auth... (8 kontrolerów)
● routesauth.php (14 ścieżek)
● resourcesviewsauth (17 widoków)
Breeze - co nam daje?
● Uwierzytelnianie
● Rejestrację
● Resetowanie hasła
● Weryfikację mailowa konta
● https://laravel.com/docs/8.x/starter-kits#laravel-breeze
Breeze - widoki
● Tailwind CSS
● Blade
Breeze - inne opcje instalacji
php artisan breeze:install vue
// Or...
php artisan breeze:install react
npm install
npm run dev
php artisan migrate
Inertia.js
Breeze - plusy i minusy
+ duża liczba gotowych widoków
+ duża liczba gotowych funkcjonalności
- duża ilość dodatkowych plików w projekcie
Jetstream
Jetstream - cztery opcje instalacji
composer require laravel/jetstream
php artisan jetstream:install livewire
php artisan jetstream:install livewire --teams
php artisan jetstream:install inertia
php artisan jetstream:install inertia --teams
Jetstream - po instalacji
npm install
npm run dev
php artisan migrate
● appActionsFortify... (5 plików)
● appActionsJetstream... (7 plików)
● resourcesviewsauth (7 widoków)
● resourcesviewsteams (6 widoków)
● resourcesviewsprofile (6 widoków)
● config (3 pliki)
● appProviders (2 pliki)
Jetstream - konfiguracja jetstream.php
use LaravelJetstreamFeatures;
return [
"stack" => "livewire",
"middleware" => ["web"],
"features" => [
// Features::termsAndPrivacyPolicy(),
// Features::profilePhotos(),
// Features::api(),
// Features::teams(["invitations" => true,]),
Features::accountDeletion(),
],
"profile_photo_disk" => "public",
];
Jetstream - co nam daje?
● Uwierzytelnianie / dwuetapowe
● Rejestrację
● Resetowanie hasła
● Weryfikację mailowa konta
● Zarządzanie kontem użytkownika
Jetstream - co nam daje cd.
● Zarządzanie sesjami
● Zarządzanie tokenami API
● Zarządzanie grupami i uprawnieniami w nich
● https://jetstream.laravel.com/2.x/introduction.html
Jetstream - widoki
● Tailwind CSS
● Blade
Jetstream - edycja profilu
● asynchroniczna
walidacja
● asynchroniczny zapis
danych
Jetstream - weryfikacja dwuetapowa
● hasło jednorazowe
oparte na czasie (TOTP)
● Google Authenticator
Jetstream - zarządzanie sesjami
● możliwość wylogowywania naszego konta z innych sesji
Jetstream - rozszerzenie --teams
● możliwość tworzenia i
zarządzania grupami
● zarządzanie uprawnieniami
Jetstream - rozszerzenie --teams c. d.
// Access the team's owner...
$team->owner : AppModelsUser
// Get all of the team's users, including the owner...
$team->allUsers() : IlluminateDatabaseEloquentCollection
// Get all of the team's users, excluding the owner...
$team->users : IlluminateDatabaseEloquentCollection
// Determine if the given user is a team member...
$team->hasUser($user) : bool
// Determine if the team has a member with the given email address...
$team->hasUserWithEmail($emailAddress) :bool
// Determine if the given user is a team member with the given permission...
$team->userHasPermission($user, $permission) :bool
Jetstream - plusy i minusy
+ duża liczba gotowych widoków
+ duża liczba gotowych funkcjonalności
- duża ilość dodatkowych plików w projekcie
Podsumowanie
Gotowe
widoki
Tokeny API 2FA Logowanie /
Rejestracja
Wybór
technologii
frontendu
Fortify NIE NIE TAK TAK NIE
Breeze TAK NIE NIE TAK TAK
Sanctum NIE TAK NIE NIE NIE
Jetstream TAK TAK TAK TAK TAK
Pytania?
kamil.piech@blumilk.pl
Kamil Piech

More Related Content

What's hot

AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptJacek Okrojek
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-aFuture Processing
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP3camp
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z CapistranoMichał Szajbe
 
Budowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASBudowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASMateusz Stępniak
 
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Mateusz Stępniak
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Wojciech Klocek
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaMarcin Gajda
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun againMarcin Gajda
 
AngularJS - podstawy
AngularJS - podstawyAngularJS - podstawy
AngularJS - podstawyApptension
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceDawid Urbański
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startSages
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaWojciech Lichota
 
Debugowanie skryptow php za pomoca xdebug
Debugowanie skryptow php za pomoca xdebugDebugowanie skryptow php za pomoca xdebug
Debugowanie skryptow php za pomoca xdebugXSolve
 
20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydać20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydaćWojciech Klocek
 

What's hot (20)

Torquebox
TorqueboxTorquebox
Torquebox
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP
 
Potęga pliku .htaccess
Potęga pliku .htaccessPotęga pliku .htaccess
Potęga pliku .htaccess
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z Capistrano
 
Budowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASBudowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOAS
 
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
 
AngularJS - podstawy
AngularJS - podstawyAngularJS - podstawy
AngularJS - podstawy
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyce
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki start
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
 
Debugowanie skryptow php za pomoca xdebug
Debugowanie skryptow php za pomoca xdebugDebugowanie skryptow php za pomoca xdebug
Debugowanie skryptow php za pomoca xdebug
 
20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydać20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydać
 

Similar to Laravelowe paczki do uwierzytelniania

Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linuxbm9ib2r5
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PROIDEA
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJSSages
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Logicaltrust pl
 
Joomla Day Poland 15 - Docker
Joomla Day Poland 15 - DockerJoomla Day Poland 15 - Docker
Joomla Day Poland 15 - DockerLukas Lesniewski
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETBartlomiej Zass
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤Tomasz Dziuda
 
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiastosecman_pl
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówArkadiusz Stęplowski
 
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comLeszek Mi?
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoDominik Szopa
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?Brainhub
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
NK API - Przykłady
NK API - PrzykładyNK API - Przykłady
NK API - Przykładynasza-klasa
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Bartlomiej Zass
 
Wstęp do projektowania usług internetowych: część 1 - rest
Wstęp do projektowania usług internetowych: część 1 - restWstęp do projektowania usług internetowych: część 1 - rest
Wstęp do projektowania usług internetowych: część 1 - restLukas Lesniewski
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Droptica
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Droptica
 

Similar to Laravelowe paczki do uwierzytelniania (20)

Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJS
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
 
Joomla Day Poland 15 - Docker
Joomla Day Poland 15 - DockerJoomla Day Poland 15 - Docker
Joomla Day Poland 15 - Docker
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NET
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤
 
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiasto
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderów
 
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
NK API - Przykłady
NK API - PrzykładyNK API - Przykłady
NK API - Przykłady
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)
 
Wstęp do projektowania usług internetowych: część 1 - rest
Wstęp do projektowania usług internetowych: część 1 - restWstęp do projektowania usług internetowych: część 1 - rest
Wstęp do projektowania usług internetowych: część 1 - rest
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]
 

More from Laravel Poland MeetUp

WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...Laravel Poland MeetUp
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) Laravel Poland MeetUp
 
Kilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentKilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentLaravel Poland MeetUp
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Laravel Poland MeetUp
 
Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Laravel Poland MeetUp
 
Przegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaPrzegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaLaravel Poland MeetUp
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Poland MeetUp
 
Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Poland MeetUp
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelLaravel Poland MeetUp
 
Laravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Poland MeetUp
 
Speed up web API with Laravel and Swoole using Docker
Speed up web API with Laravel and Swoole using DockerSpeed up web API with Laravel and Swoole using Docker
Speed up web API with Laravel and Swoole using DockerLaravel Poland MeetUp
 

More from Laravel Poland MeetUp (20)

WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
 
Kilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentKilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w Eloquent
 
Licencje otwartego oprogramowania
Licencje otwartego oprogramowaniaLicencje otwartego oprogramowania
Licencje otwartego oprogramowania
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
 
Jak przemycić Shape Up do Scruma?
Jak przemycić Shape Up do Scruma?Jak przemycić Shape Up do Scruma?
Jak przemycić Shape Up do Scruma?
 
Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?
 
Przegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaPrzegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do Laravela
 
Walidacja w Laravelu
Walidacja w LaraveluWalidacja w Laravelu
Walidacja w Laravelu
 
(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2E
 
Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?
 
Laravel Jobs i PHP8
Laravel Jobs i PHP8Laravel Jobs i PHP8
Laravel Jobs i PHP8
 
Laravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFamiLaravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFami
 
Action-based Laravel
Action-based LaravelAction-based Laravel
Action-based Laravel
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
 
Laravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydach
 
Laravel 8.0 - co nowego?
Laravel 8.0 - co nowego?Laravel 8.0 - co nowego?
Laravel 8.0 - co nowego?
 
AOP w Laravel
AOP w LaravelAOP w Laravel
AOP w Laravel
 
Speed up web API with Laravel and Swoole using Docker
Speed up web API with Laravel and Swoole using DockerSpeed up web API with Laravel and Swoole using Docker
Speed up web API with Laravel and Swoole using Docker
 

Laravelowe paczki do uwierzytelniania

  • 3. Plan prezentacji ● Wcześniejsze rozwiązania ● Fortify ● Sanctum ● Breeze ● Jetstream
  • 4. Laravel 5.2 - skrót php artisan make:auth ● appHttpControllers Auth... ● resourcesviewsauth... ● resourcesviewslayouts... (Bootstrap) ● Uwierzytelnianie ● Rejestracja ● Resetowanie hasła
  • 5. Laravel 6 - skrót composer require laravel/ui "^1.0" php artisan ui vue --auth laravel new blog --auth ● appHttpControllers Auth... ● Uwierzytelnianie ● Rejestracja ● Resetowanie hasła
  • 7. Fortify - przed i po instalacji composer require laravel/fortify php artisan vendor:publish --provider= "LaravelFortifyFortifyServiceProvider" php artisan migrate ● configfortify.php ● appActionsFortify... ● appProvidersFortifyServiceProvider.php
  • 8. Fortify - konfiguracja fortify.php use AppProvidersRouteServiceProvider; use LaravelFortifyFeatures; return [ ... "views" => true, "features" => [ Features::registration(), Features::resetPasswords(), Features::emailVerification(), Features::updateProfileInformation(), Features::updatePasswords(), Features::twoFactorAuthentication([ "confirmPassword" => true, ]), ],
  • 9. Fortify - co nam daje? ● Uwierzytelnianie / dwuetapowe ● Rejestrację ● Resetowanie hasła ● Weryfikację mailowa konta ● https://laravel.com/docs/8.x/fortify
  • 10. Fortify - a gdzie widoki? ● https://github.com/laravel/ui ● AppProvidersFortifyServiceProvider.php public function boot() { Fortify::loginView( function () { return view('auth.login'); } ); }
  • 11. Fortify - plusy i minusy - brak widoków + dużo opcji konfiguracji + mała ilość dodatkowych plików w projekcie
  • 13. Sanctum - przed i po instalacji composer require laravel/sanctum php artisan vendor:publish --provider= "LaravelSanctumSanctumServiceProvider" php artisan migrate ● configsanctum.php ● database2021_11_25_000001_create_personal_access_tokens_table.php
  • 14. Sanctum - konfiguracja sanctum.php return [ "stateful" => explode(",", env( "SANCTUM_STATEFUL_DOMAINS" , "localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1," . parse_url(env( "APP_URL"), PHP_URL_HOST) )), "expiration" => null, "middleware" => [ "verify_csrf_token" => AppHttpMiddlewareVerifyCsrfToken::class, "encrypt_cookies" => AppHttpMiddlewareEncryptCookies::class, ], ];
  • 15. Sanctum - co nam daje? ● Uwierzytelnianie API za pomocą tokenu ● Uwierzytelnianie dla aplikacji typu SPA ● Uwierzytelnianie dla aplikacji mobilnych ● https://laravel.com/docs/8.x/sanctum Przykładowy token: Bearer 1|jadhafvbma67e8fsddfsm
  • 16. Sanctum - to naprawdę proste public function __construct(protected Hasher $hash) {} public function login(Request $request): string { $user = User::query()->where( "email", $request->get( "email"))->first(); if ($user === null || !$this->hash->check($request->get( "password"), $user->password)) { throw new AuthenticationException(); } return $user->createToken($user->email)->plainTextToken; }
  • 17. Sanctum - od strony klienta $response = $client->request(GET, '/api/user', [ 'headers' => [ 'Authorization' => 'Bearer ' . $token, 'Accept' => 'application/json', ], ]);
  • 18. Sanctum - od strony serwera use IlluminateRoutingRouter; /** @var Router $router */ $router = app(Router::class); $router->middleware( "auth:sanctum")->group( function (Router $router): void { $router->get( "/user", fn(Request $request) => $ request->user()); }, );
  • 19. Sanctum - plusy i brak minusów? + opcja modyfikacji bazowej klasy tokenu + mała ilość dodatkowych plików w projekcie + łatwa i przejrzysta praca z tokenami
  • 21. Breeze - przed i po instalacji composer require laravel/breeze php artisan breeze:install npm install npm run dev php artisan migrate ● appHttpControllers Auth... (8 kontrolerów) ● routesauth.php (14 ścieżek) ● resourcesviewsauth (17 widoków)
  • 22. Breeze - co nam daje? ● Uwierzytelnianie ● Rejestrację ● Resetowanie hasła ● Weryfikację mailowa konta ● https://laravel.com/docs/8.x/starter-kits#laravel-breeze
  • 23. Breeze - widoki ● Tailwind CSS ● Blade
  • 24. Breeze - inne opcje instalacji php artisan breeze:install vue // Or... php artisan breeze:install react npm install npm run dev php artisan migrate Inertia.js
  • 25. Breeze - plusy i minusy + duża liczba gotowych widoków + duża liczba gotowych funkcjonalności - duża ilość dodatkowych plików w projekcie
  • 27. Jetstream - cztery opcje instalacji composer require laravel/jetstream php artisan jetstream:install livewire php artisan jetstream:install livewire --teams php artisan jetstream:install inertia php artisan jetstream:install inertia --teams
  • 28. Jetstream - po instalacji npm install npm run dev php artisan migrate ● appActionsFortify... (5 plików) ● appActionsJetstream... (7 plików) ● resourcesviewsauth (7 widoków) ● resourcesviewsteams (6 widoków) ● resourcesviewsprofile (6 widoków) ● config (3 pliki) ● appProviders (2 pliki)
  • 29. Jetstream - konfiguracja jetstream.php use LaravelJetstreamFeatures; return [ "stack" => "livewire", "middleware" => ["web"], "features" => [ // Features::termsAndPrivacyPolicy(), // Features::profilePhotos(), // Features::api(), // Features::teams(["invitations" => true,]), Features::accountDeletion(), ], "profile_photo_disk" => "public", ];
  • 30. Jetstream - co nam daje? ● Uwierzytelnianie / dwuetapowe ● Rejestrację ● Resetowanie hasła ● Weryfikację mailowa konta ● Zarządzanie kontem użytkownika
  • 31. Jetstream - co nam daje cd. ● Zarządzanie sesjami ● Zarządzanie tokenami API ● Zarządzanie grupami i uprawnieniami w nich ● https://jetstream.laravel.com/2.x/introduction.html
  • 32. Jetstream - widoki ● Tailwind CSS ● Blade
  • 33. Jetstream - edycja profilu ● asynchroniczna walidacja ● asynchroniczny zapis danych
  • 34. Jetstream - weryfikacja dwuetapowa ● hasło jednorazowe oparte na czasie (TOTP) ● Google Authenticator
  • 35. Jetstream - zarządzanie sesjami ● możliwość wylogowywania naszego konta z innych sesji
  • 36. Jetstream - rozszerzenie --teams ● możliwość tworzenia i zarządzania grupami ● zarządzanie uprawnieniami
  • 37. Jetstream - rozszerzenie --teams c. d. // Access the team's owner... $team->owner : AppModelsUser // Get all of the team's users, including the owner... $team->allUsers() : IlluminateDatabaseEloquentCollection // Get all of the team's users, excluding the owner... $team->users : IlluminateDatabaseEloquentCollection // Determine if the given user is a team member... $team->hasUser($user) : bool // Determine if the team has a member with the given email address... $team->hasUserWithEmail($emailAddress) :bool // Determine if the given user is a team member with the given permission... $team->userHasPermission($user, $permission) :bool
  • 38. Jetstream - plusy i minusy + duża liczba gotowych widoków + duża liczba gotowych funkcjonalności - duża ilość dodatkowych plików w projekcie
  • 39. Podsumowanie Gotowe widoki Tokeny API 2FA Logowanie / Rejestracja Wybór technologii frontendu Fortify NIE NIE TAK TAK NIE Breeze TAK NIE NIE TAK TAK Sanctum NIE TAK NIE NIE NIE Jetstream TAK TAK TAK TAK TAK