Pridanie autentifikácie do Laravel (ver.9) aplikácie

jurajchovan

Juraj Chovan

Posted on October 28, 2022

Pridanie autentifikácie do Laravel (ver.9) aplikácie

V nasledujúcom postupe ukážem, ako implementovať do vytvorenej (základnej kostry) Laravel aplikácie (vo verzii 9) autentifikáciu (tj.registráciu, prihlásenie a odhlásenie) s využitím package-u "Jetstream".

Najprv je potrebné mať pripravenú nejakú databázu, ktorá bude slúžiť na uchovávanie údajov pre túto Laravel aplikáciu.
Mám vytvorenú na lokálnom MySQL servri databázu s názvom "test". Na túto databázu je potrebné sa napojiť s našou Laravel aplikáciou.
Urobí sa to jednoducho, nastavením potrebných údajov do konfiguračného súboru ".env" v aplikácii:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
Enter fullscreen mode Exit fullscreen mode

prístupový účet k databáze je "root" a heslo nie je nastavené žiadne.
Je potrebné mať teraz spustený tento MySQL server - ja ho mám v rámci zinštalovaného "WAMP servra", takže ak spustím "WAMP server" spustí sa mi automaticky aj MySQL server. Overím si to spustením prehliadača s URL:

http://localhost/phpmyadmin/index.php
Enter fullscreen mode Exit fullscreen mode

čo mi zobrazí:

Image description
po prihlásení (zalogovaní) sa dostanem na utilitu "PHPMyAdmin", kde vidím aj aktuálne vytvorené databázy.

Teraz je čas zinštalovať do Laravel aplikácie package "Jetstream", ktorý rieši autentifikáciu používateľa (tj.registráciu, prihlásenie a odhlásenie).
Na inštaláciu package-u je potrebné mať zinštalovaný nastroj "Composer", ak ho máme spustiť (v adresári našej Laravel aplikácie) príkaz:

composer require laravel/jetstream
Enter fullscreen mode Exit fullscreen mode

Následne spustiť príkaz, kde nastaviť inštaláciu stack-u "livewire" pre frontend (je založený na známej Laravel technológii "blade"), a tiež ak chceme rozšírenie "teams", ktorým možno priradzovať používateľov do skupín (teamov), použiť syntax príkazu:

php artisan jetstream:install livewire --teams
Enter fullscreen mode Exit fullscreen mode

Nakoniec dokončiť túto inštaláciu príkazom:

npm run build 
Enter fullscreen mode Exit fullscreen mode

V prípade ak chýba utilita "npm" (manažér package-ov), tak ešte predtým spustiť jeho inštaláciu, príkazom:

npm install
Enter fullscreen mode Exit fullscreen mode

Inštalácia package-u "Jetstream" vytvorila aj migračné skripty, ktoré služia na vytvorenie potrebných databázových tabuliek.

Spustiť vykonanie týchto migračných skriptov (podmienkou na úspešné vykonanie je, že je potrebné mať už predtým spustený MySQL server - viď info vyššie a musíme mať v MySQL vytvorenú požadovanú databázu - viď tiež info vyššie, a samozrejme musíme mať túto Laravel aplikáciu napojenú, cez konfiguračný súbor ".env" na túto databázu), vykonať príkazom (je to štandartný príkaz pre Laravel, ktorým zbehneme migračné skripty):

php artisan migrate
Enter fullscreen mode Exit fullscreen mode

Poznámka:
V prípade ak nám spustenie týchto skriptov vypisujú nejakú takúto chybu:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
Enter fullscreen mode Exit fullscreen mode

je potrebné urobiť drobnú úpravu v súbore (v adresári tejto Laravel aplikácie) "\app\Providers\AppServiceProvider.php":

...
use Illuminate\Support\Facades\Schema;
...
    public function boot() {
      Schema::defaultStringLength(191);
    }
...

Enter fullscreen mode Exit fullscreen mode

Ak vypísalo túto chybu, vymazať z databázy skriptami vytvorené db-tabuľky, urobiť túto úpravu a znovu spustiť príkaz na migráciu (viď vyššie).

Vo výsledku (po úspešnom zbehnutí migrácie) by mali byť v databáze vytvorené nasledujúce db-tabuľky:

    failed_jobs
    migrations
    password_resets
    personal_access_tokens
    sessions
    team_invitations
    team_user
    users
Enter fullscreen mode Exit fullscreen mode

Teraz si spustiť (v adresári tejto Laravel aplikácie, cez "DOS Prompt" developovací server, príkazom:

php artisan serve
Enter fullscreen mode Exit fullscreen mode

Image description
a v prehliadači si spustiť adresu/URL:

http://localhost:8000/
Enter fullscreen mode Exit fullscreen mode

čo zobrazí domovskú stránku aplikácie:

Image description
kde sa už na domovskej stránke Laravel aplikácie zobrazia odkazy na prihlásenie a na registráciu používateľa.
Po kliknutí na "Login" (prihlásenie) sa presmeruje Laravel aplikácia na prihlasovací formulár:

http://127.0.0.1:8000/login
Enter fullscreen mode Exit fullscreen mode

Image description
resp.po kliknutí na "Register" (registrácia nového používateľa) sa presmeruje na registračný formulár:

http://127.0.0.1:8000/register
Enter fullscreen mode Exit fullscreen mode

Image description
Takto viem zaregistrovať nového používateľa a potom sa pod jeho účtom prihlásiť do Laravel aplikácie a dostanem sa na demo stránku "Dashboard", ktorú má prístupnú iba úspešne prihlásený používateľ.

...

💖 💪 🙅 🚩
jurajchovan
Juraj Chovan

Posted on October 28, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related