feat: complete user authentication, admin guard, customer account dashboard and branded HTML emails

This commit is contained in:
2026-11-01 13:55:45 +01:00
parent b6ee6938cb
commit ee89da5e61
37 changed files with 1895 additions and 22 deletions
+118
View File
@@ -0,0 +1,118 @@
@extends('layouts.app')
@section('title', 'Registreren | Jouwdriedee.nl')
@section('content')
<div class="min-h-[75vh] flex items-center justify-center py-10 px-4 sm:px-6 lg:px-8">
<div class="w-full max-w-md space-y-6">
<!-- Header -->
<div class="text-center space-y-2">
<div class="inline-flex items-center justify-center w-12 h-12 rounded-2xl bg-rose-100 text-rose-900 shadow-2xs mb-1">
<i data-lucide="user-plus" class="w-6 h-6 text-rose-600"></i>
</div>
<h1 class="font-heading text-2xl sm:text-3xl font-black text-slate-900 tracking-tight">Account aanmaken</h1>
<p class="text-xs text-slate-500">Meld je aan om bestellingen te volgen en sneller te bestellen</p>
</div>
<!-- Form Card -->
<div class="p-6 sm:p-8 rounded-3xl bg-white border border-slate-200/80 shadow-lg space-y-5">
<form action="{{ route('register.submit') }}" method="POST" class="space-y-4">
@csrf
<!-- Naam -->
<div class="space-y-1.5">
<label for="name" class="block text-xs font-bold text-slate-700">Voor- en achternaam *</label>
<div class="relative">
<input
type="text"
name="name"
id="name"
value="{{ old('name') }}"
required
autofocus
placeholder="bijv. Jan Jansen"
class="w-full bg-slate-50 border border-slate-200 rounded-xl pl-9 pr-3.5 py-2.5 text-xs text-slate-900 font-semibold placeholder-slate-400 focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400 @error('name') border-rose-400 @enderror"
>
<i data-lucide="user" class="w-4 h-4 text-slate-400 absolute left-3 top-1/2 -translate-y-1/2"></i>
</div>
@error('name')
<p class="text-[11px] font-bold text-rose-500 mt-1">{{ $message }}</p>
@enderror
</div>
<!-- E-mailadres -->
<div class="space-y-1.5">
<label for="email" class="block text-xs font-bold text-slate-700">E-mailadres *</label>
<div class="relative">
<input
type="email"
name="email"
id="email"
value="{{ old('email') }}"
required
placeholder="jouw@email.nl"
class="w-full bg-slate-50 border border-slate-200 rounded-xl pl-9 pr-3.5 py-2.5 text-xs text-slate-900 font-semibold placeholder-slate-400 focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400 @error('email') border-rose-400 @enderror"
>
<i data-lucide="mail" class="w-4 h-4 text-slate-400 absolute left-3 top-1/2 -translate-y-1/2"></i>
</div>
@error('email')
<p class="text-[11px] font-bold text-rose-500 mt-1">{{ $message }}</p>
@enderror
</div>
<!-- Wachtwoord -->
<div class="space-y-1.5">
<label for="password" class="block text-xs font-bold text-slate-700">Wachtwoord (minimaal 8 tekens) *</label>
<div class="relative">
<input
type="password"
name="password"
id="password"
required
placeholder="••••••••"
class="w-full bg-slate-50 border border-slate-200 rounded-xl pl-9 pr-3.5 py-2.5 text-xs text-slate-900 font-semibold placeholder-slate-400 focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400 @error('password') border-rose-400 @enderror"
>
<i data-lucide="lock" class="w-4 h-4 text-slate-400 absolute left-3 top-1/2 -translate-y-1/2"></i>
</div>
@error('password')
<p class="text-[11px] font-bold text-rose-500 mt-1">{{ $message }}</p>
@enderror
</div>
<!-- Bevestig Wachtwoord -->
<div class="space-y-1.5">
<label for="password_confirmation" class="block text-xs font-bold text-slate-700">Bevestig wachtwoord *</label>
<div class="relative">
<input
type="password"
name="password_confirmation"
id="password_confirmation"
required
placeholder="••••••••"
class="w-full bg-slate-50 border border-slate-200 rounded-xl pl-9 pr-3.5 py-2.5 text-xs text-slate-900 font-semibold placeholder-slate-400 focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400"
>
<i data-lucide="shield-check" class="w-4 h-4 text-slate-400 absolute left-3 top-1/2 -translate-y-1/2"></i>
</div>
</div>
<!-- Submit Button -->
<div class="pt-2">
<button type="submit" class="w-full py-3 px-5 rounded-2xl bg-amber-400 hover:bg-amber-300 text-slate-950 font-black text-xs sm:text-sm transition flex items-center justify-center space-x-2 shadow-xs cursor-pointer">
<span>Account Aanmaken</span>
<i data-lucide="arrow-right" class="w-4 h-4"></i>
</button>
</div>
</form>
<div class="pt-4 border-t border-slate-100 text-center text-xs font-bold text-slate-600">
<span>Heb je al een account?</span>
<a href="{{ route('login') }}" class="text-rose-600 hover:text-rose-700 underline ml-1">
Hier inloggen
</a>
</div>
</div>
</div>
</div>
@endsection