Pridanie autentifikácie do Laravel (ver.9) aplikácie
Tags: laravel
Published: 2022-10-28 16:27:56

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=
```
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
```
čo mi zobrazí:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/luby04cyn1332bjwhidh.JPG)
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
```
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
```
Nakoniec dokončiť túto inštaláciu príkazom:

```
npm run build 
```
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
```
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
```
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
```
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);
    }
...

```
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
```
Teraz si spustiť (v adresári tejto Laravel aplikácie, cez "DOS Prompt" developovací server, príkazom:

```
php artisan serve
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dkrt071lqm6xt0tjgd56.JPG)
a v prehliadači si spustiť adresu/URL:

```
http://localhost:8000/
```
čo zobrazí domovskú stránku aplikácie:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kmeyudrn228wtf2lwuhy.JPG)
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
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/znd298qo08375nw5gb3k.JPG)
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
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k25hbnd6u0kt61eqvb87.JPG)
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ľ.


...