feat: Phase 2 - page CRUD, subscriber management, user management

This commit is contained in:
2026-04-03 21:15:40 +02:00
parent 78e1be3e3b
commit cf026f46b0
33 changed files with 1135 additions and 82 deletions

View File

@@ -0,0 +1,55 @@
@php
/** @var \App\Models\User|null $user */
$user = $user ?? null;
$isEdit = $user !== null;
@endphp
<div class="grid max-w-xl gap-6">
<div>
<label for="name" class="block text-sm font-medium text-slate-700">{{ __('Name') }}</label>
<input type="text" name="name" id="name" value="{{ old('name', $user?->name) }}" required maxlength="255"
class="mt-1 block w-full rounded-lg border-slate-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm" />
@error('name')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
<div>
<label for="email" class="block text-sm font-medium text-slate-700">{{ __('Email') }}</label>
<input type="email" name="email" id="email" value="{{ old('email', $user?->email) }}" required
class="mt-1 block w-full rounded-lg border-slate-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm" />
@error('email')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
<div>
<label for="password" class="block text-sm font-medium text-slate-700">{{ __('Password') }}</label>
@if ($isEdit)
<p class="mt-0.5 text-xs text-slate-500">{{ __('Leave blank to keep the current password.') }}</p>
@endif
<input type="password" name="password" id="password" @if(! $isEdit) required @endif autocomplete="new-password"
class="mt-1 block w-full rounded-lg border-slate-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm" />
@error('password')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
<div>
<label for="password_confirmation" class="block text-sm font-medium text-slate-700">{{ __('Confirm password') }}</label>
<input type="password" name="password_confirmation" id="password_confirmation" @if(! $isEdit) required @endif autocomplete="new-password"
class="mt-1 block w-full rounded-lg border-slate-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm" />
</div>
<div>
<label for="role" class="block text-sm font-medium text-slate-700">{{ __('Role') }}</label>
<select name="role" id="role" required
class="mt-1 block w-full rounded-lg border-slate-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm">
<option value="user" @selected(old('role', $user?->role) === 'user')>{{ __('User') }}</option>
<option value="superadmin" @selected(old('role', $user?->role) === 'superadmin')>{{ __('Superadmin') }}</option>
</select>
@error('role')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
</div>