feat: complete user authentication, admin guard, customer account dashboard and branded HTML emails
This commit is contained in:
@@ -102,7 +102,7 @@
|
||||
$cartItems = is_array(session('cart')) ? session('cart') : [];
|
||||
$cartCount = array_sum(array_column($cartItems, 'quantity'));
|
||||
@endphp
|
||||
<a href="{{ route('cart.index') }}" class="px-4 py-2 rounded-2xl bg-amber-400 hover:bg-amber-300 text-slate-950 font-black text-xs flex items-center space-x-2 transition shadow-xs">
|
||||
<a href="{{ route('cart.index') }}" class="px-3.5 sm:px-4 py-2 rounded-2xl bg-amber-400 hover:bg-amber-300 text-slate-950 font-black text-xs flex items-center space-x-1.5 sm:space-x-2 transition shadow-xs">
|
||||
<i data-lucide="shopping-bag" class="w-4 h-4 text-slate-900"></i>
|
||||
<span class="hidden sm:inline">Winkelwagen</span>
|
||||
@if($cartCount > 0)
|
||||
@@ -112,6 +112,43 @@
|
||||
@endif
|
||||
</a>
|
||||
|
||||
<!-- User Account / Login Button -->
|
||||
@guest
|
||||
<a href="{{ route('login') }}" class="px-3 py-2 rounded-xl bg-slate-100 hover:bg-slate-200 text-slate-800 font-bold text-xs flex items-center space-x-1.5 transition">
|
||||
<i data-lucide="user" class="w-4 h-4 text-slate-700"></i>
|
||||
<span class="hidden sm:inline">Inloggen</span>
|
||||
</a>
|
||||
@else
|
||||
<div class="relative" x-data="{ userMenu: false }">
|
||||
<button @click="userMenu = !userMenu" type="button" class="px-3 py-2 rounded-xl bg-slate-100 hover:bg-slate-200 text-slate-900 font-black text-xs flex items-center space-x-1.5 transition cursor-pointer">
|
||||
<i data-lucide="user-check" class="w-4 h-4 text-amber-500"></i>
|
||||
<span class="hidden sm:inline">{{ Str::limit(auth()->user()->name, 12) }}</span>
|
||||
<i data-lucide="chevron-down" class="w-3 h-3 text-slate-500"></i>
|
||||
</button>
|
||||
|
||||
<div x-show="userMenu" @click.away="userMenu = false" x-cloak class="absolute right-0 mt-2 w-48 rounded-2xl bg-white border border-slate-200 shadow-xl py-2 z-50 text-xs font-bold text-slate-700">
|
||||
<a href="{{ route('account.index') }}" class="flex items-center space-x-2 px-4 py-2 hover:bg-slate-50 text-slate-800">
|
||||
<i data-lucide="user-circle" class="w-4 h-4 text-slate-500"></i>
|
||||
<span>Mijn Account</span>
|
||||
</a>
|
||||
@if(auth()->user()->isAdmin())
|
||||
<a href="{{ route('admin.content.index') }}" class="flex items-center space-x-2 px-4 py-2 hover:bg-amber-50 text-amber-900 font-black">
|
||||
<i data-lucide="shield" class="w-4 h-4 text-amber-500"></i>
|
||||
<span>Admin Beheer</span>
|
||||
</a>
|
||||
@endif
|
||||
<div class="border-t border-slate-100 my-1"></div>
|
||||
<form action="{{ route('logout') }}" method="POST">
|
||||
@csrf
|
||||
<button type="submit" class="w-full text-left flex items-center space-x-2 px-4 py-2 hover:bg-rose-50 text-rose-600 cursor-pointer">
|
||||
<i data-lucide="log-out" class="w-4 h-4"></i>
|
||||
<span>Uitloggen</span>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endguest
|
||||
|
||||
<!-- Mobile Menu Trigger -->
|
||||
<button @click="mobileMenuOpen = !mobileMenuOpen" type="button" class="lg:hidden p-2 rounded-xl bg-slate-100 hover:bg-slate-200 text-slate-800 transition">
|
||||
<i data-lucide="menu" class="w-5 h-5"></i>
|
||||
@@ -150,6 +187,41 @@
|
||||
<a href="{{ route('catalog') }}" class="px-3.5 py-2.5 rounded-xl hover:bg-slate-50 flex items-center justify-between text-slate-700">
|
||||
<span>Alle Prints Bekijken</span>
|
||||
</a>
|
||||
|
||||
<div class="border-t border-slate-100 pt-2 mt-1">
|
||||
@guest
|
||||
<div class="grid grid-cols-2 gap-2">
|
||||
<a href="{{ route('login') }}" class="py-2.5 px-3 rounded-xl bg-slate-100 hover:bg-slate-200 text-slate-800 text-center font-bold text-xs flex items-center justify-center space-x-1.5">
|
||||
<i data-lucide="log-in" class="w-3.5 h-3.5"></i>
|
||||
<span>Inloggen</span>
|
||||
</a>
|
||||
<a href="{{ route('register') }}" class="py-2.5 px-3 rounded-xl bg-amber-400 hover:bg-amber-300 text-slate-950 text-center font-black text-xs flex items-center justify-center space-x-1.5">
|
||||
<i data-lucide="user-plus" class="w-3.5 h-3.5"></i>
|
||||
<span>Registreren</span>
|
||||
</a>
|
||||
</div>
|
||||
@else
|
||||
<div class="space-y-1">
|
||||
<a href="{{ route('account.index') }}" class="px-3.5 py-2.5 rounded-xl hover:bg-slate-50 flex items-center justify-between text-slate-900 font-bold">
|
||||
<span>Mijn Account ({{ auth()->user()->name }})</span>
|
||||
<i data-lucide="user" class="w-4 h-4 text-amber-500"></i>
|
||||
</a>
|
||||
@if(auth()->user()->isAdmin())
|
||||
<a href="{{ route('admin.content.index') }}" class="px-3.5 py-2.5 rounded-xl bg-amber-50 hover:bg-amber-100 flex items-center justify-between text-amber-950 font-black">
|
||||
<span>Admin Beheer</span>
|
||||
<i data-lucide="shield" class="w-4 h-4 text-amber-600"></i>
|
||||
</a>
|
||||
@endif
|
||||
<form action="{{ route('logout') }}" method="POST">
|
||||
@csrf
|
||||
<button type="submit" class="w-full text-left px-3.5 py-2.5 rounded-xl hover:bg-rose-50 text-rose-600 font-bold flex items-center justify-between">
|
||||
<span>Uitloggen</span>
|
||||
<i data-lucide="log-out" class="w-4 h-4"></i>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
@endguest
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
Reference in New Issue
Block a user