K

Admin

Layout

Blade komponenta, kterou váš layout jmenuje, sloty, které vystavuje, přihlašovací rám vedle ní a kam patří přihlášený uživatel.

Na této stránce

Shell je Blade komponenta, ne konfigurační objekt. Váš layout ji jmenuje a plní její sloty — proto jsou brand, přihlašování i chrome markup, který napíšete, a ne třída, kterou nastavíte.

Sloty

Slot Kam se dostane Typický obsah
head do <head>, před vlastní tagy Livewire @vite(...), meta tagy, font
brand vlevo v horní liště název aplikace, logo
topbar horní lišta, za spouštěčem palety přepínač tenantů, drobečky
user konec horní lišty účet, odhlášení
(výchozí) element <main> stránka

Sloty místo konfigurace jsou záměr: třída, která drží brand, barvy a auth, je přesně to, co z shellu udělá panel builder — a všechno, co by nesla, je markup, který umíte napsat sami.

Přihlašování

Shell má rám pro přihlášení a žádnou autentizaci: <x-wire-admin::auth-layout> je vycentrovaná karta se stejnou hlavou — rozhodnutí o motivu, assety, interakční vrstva — a bez menu, palety i zvonku, protože nic z toho před existencí uživatele nic neznamená.

{{-- resources/views/auth/login.blade.php, vykreslené Fortify nebo Breeze --}}
<x-wire-admin::auth-layout :title="__('Přihlášení')">
<x-slot:brand>{{ config('app.name') }}</x-slot:brand>
<x-slot:footer><a href="{{ route('password.request') }}">{{ __('Zapomenuté heslo?') }}</a></x-slot:footer>
 
<form method="POST" action="{{ route('login') }}">@csrf
{{-- vaše pole --}}
</form>
</x-wire-admin::auth-layout>

Zbytek vlastní Laravel, a je to záměr: Fortify (headless) nebo Breeze (scaffolding) už nesou omezení počtu pokusů, tokeny pro reset hesla a jejich expiraci, ověření e-mailu, dvoufaktor i regeneraci session. Panel, který si tohle napíše znovu, vlastní bezpečnostní plochu a nezíská funkci — takže tenhle balíček dodává kartu a ani jednu přihlašovací cestu. Tam, kde obrazovku pro nastavení dvoufázového ověření v panelu chcete, ji dodá modul uživatelů a volá vlastní akce Fortify — obrazovka nad vlastníkem, ne druhý vlastník.

Spojuje je middleware, který stejně píšete:

Route::middleware(['web', 'auth'])->prefix('admin')->group(fn () => Route::wireResources());

Pro každou zónu, když jich aplikace má víc — can:admin na jedné skupině, can:business na druhé — a pro jednotlivé stránky přes RoutePage::make($page)->permission('users.manage'), což se stane Laravelím can: middlewarem. Všechno odpovídá Gate, takže role ze Spatie i wildcardy z nyoncode/laravel-permission-extended fungují, aniž by o nich tenhle balíček věděl.

Kdo je přihlášený

Shell ukazuje přihlášeného uživatele v rohu, i s menu. Nedodává žádnou stránku profilu ani odhlašovací route, protože nevlastní auth — ty přijdou slotem user-menu a <x-wire-admin::menu-item> existuje proto, aby to, co do něj dáte, vypadalo jako menu, ve kterém to sedí:

<x-slot:user-menu>
<x-wire-admin::menu-item :href="route('profile')" icon="outline:user-circle" wire:navigate>
Profil
</x-wire-admin::menu-item>
 
<form method="POST" action="{{ route('logout') }}">
@csrf
<x-wire-admin::menu-item type="submit" icon="outline:arrow-right-start-on-rectangle">
Odhlásit se
</x-wire-admin::menu-item>
</form>
</x-slot:user-menu>

Modul uživatelů dodává stránku profilu pro přihlášeného uživatele, pokud ji nechcete psát sami.

Související

  • Sidebar — menu, které tenhle layout staví vedle stránky
  • Branding a motiv — logo a rozhodnutí o motivu v hlavičce
  • Auth modul — hotové obrazovky pro rám výše
  • Users modul — profilová stránka do rohového menu