Features: - Support login via phone number or email (LoginRequest) - Add members:import-roster command for Excel roster import - Merge survey emails with roster data Code Quality (Phase 1-4): - Add database locking for balance calculation - Add self-approval checks for finance workflow - Create service layer (FinanceDocumentApprovalService, PaymentVerificationService) - Add HasAccountingEntries and HasApprovalWorkflow traits - Create FormRequest classes for validation - Add status-badge component - Define authorization gates in AuthServiceProvider - Add accounting config file Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
48 lines
2.1 KiB
PHP
48 lines
2.1 KiB
PHP
<x-guest-layout>
|
|
<!-- Session Status -->
|
|
<x-auth-session-status class="mb-4" :status="session('status')" />
|
|
|
|
<form method="POST" action="{{ route('login') }}">
|
|
@csrf
|
|
|
|
<!-- Email or Phone -->
|
|
<div>
|
|
<x-input-label for="email" :value="__('Email or Phone')" />
|
|
<x-text-input id="email" class="block mt-1 w-full" type="text" name="email" :value="old('email')" required autofocus autocomplete="username" placeholder="email@example.com 或 0912345678" />
|
|
<x-input-error :messages="$errors->get('email')" class="mt-2" />
|
|
</div>
|
|
|
|
<!-- Password -->
|
|
<div class="mt-4">
|
|
<x-input-label for="password" :value="__('Password')" />
|
|
|
|
<x-text-input id="password" class="block mt-1 w-full"
|
|
type="password"
|
|
name="password"
|
|
required autocomplete="current-password" />
|
|
|
|
<x-input-error :messages="$errors->get('password')" class="mt-2" />
|
|
</div>
|
|
|
|
<!-- Remember Me -->
|
|
<div class="block mt-4">
|
|
<label for="remember_me" class="inline-flex items-center">
|
|
<input id="remember_me" type="checkbox" class="rounded border-gray-300 dark:border-gray-700 text-indigo-600 shadow-sm focus:ring-indigo-500 dark:focus:ring-indigo-600 dark:bg-gray-900" name="remember">
|
|
<span class="ms-2 text-sm text-gray-600 dark:text-gray-400">{{ __('Remember me') }}</span>
|
|
</label>
|
|
</div>
|
|
|
|
<div class="flex items-center justify-end mt-4">
|
|
@if (Route::has('password.request'))
|
|
<a class="underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800" href="{{ route('password.request') }}">
|
|
{{ __('Forgot your password?') }}
|
|
</a>
|
|
@endif
|
|
|
|
<x-primary-button class="ms-3">
|
|
{{ __('Log in') }}
|
|
</x-primary-button>
|
|
</div>
|
|
</form>
|
|
</x-guest-layout>
|