diff --git a/app/Http/Controllers/Api/GeneratePasskeyRegisterOptionsController.php b/app/Http/Controllers/Api/GeneratePasskeyRegisterOptionsController.php index 33b0c17f..c8d6ce18 100644 --- a/app/Http/Controllers/Api/GeneratePasskeyRegisterOptionsController.php +++ b/app/Http/Controllers/Api/GeneratePasskeyRegisterOptionsController.php @@ -5,10 +5,11 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; +use App\Models\User; use App\Services\Serializer; use Cose\Algorithms; +use Illuminate\Container\Attributes\CurrentUser; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Session; use Illuminate\Support\Str; @@ -23,7 +24,7 @@ class GeneratePasskeyRegisterOptionsController extends Controller { - public function __invoke(Request $request, Serializer $serializer): JsonResponse|string + public function __invoke(#[CurrentUser] User $user, Serializer $serializer): JsonResponse|string { // 建立一個信賴方實體 // id 是網站的網域名稱 @@ -37,13 +38,13 @@ public function __invoke(Request $request, Serializer $serializer): JsonResponse // id 必須是唯一的,通常是用戶的 ID 或 UUID // 需要注意的是,name 不可以使用用戶的敏感資訊,例如 email 或電話號碼 $userEntity = new PublicKeyCredentialUserEntity( - name: $request->user()->name, - id: (string) $request->user()->id, - displayName: $request->user()->name + name: $user->name, + id: (string) $user->id, + displayName: $user->name ); } catch (InvalidDataException $e) { Log::error('無法建立 Webauthn 用戶實體', [ - 'user_id' => $request->user()->id, + 'user_id' => $user->id, 'exception' => $e->getMessage(), ]); @@ -81,7 +82,7 @@ public function __invoke(Request $request, Serializer $serializer): JsonResponse ); } catch (InvalidDataException $e) { Log::error('無法建立 Webauthn 註冊選項', [ - 'user_id' => $request->user()->id, + 'user_id' => $user->id, 'exception' => $e->getMessage(), ]); @@ -95,7 +96,7 @@ public function __invoke(Request $request, Serializer $serializer): JsonResponse $optionsJson = $serializer->toJson($options); } catch (SerializerExceptionInterface $e) { Log::error('Webauthn 註冊選項序列化失敗', [ - 'user_id' => $request->user()->id, + 'user_id' => $user->id, 'exception' => $e->getMessage(), ]); diff --git "a/resources/views/components/comments/\342\232\241create-modal.blade.php" "b/resources/views/components/comments/\342\232\241create-modal.blade.php" index 76491bd9..ab761e6c 100644 --- "a/resources/views/components/comments/\342\232\241create-modal.blade.php" +++ "b/resources/views/components/comments/\342\232\241create-modal.blade.php" @@ -5,9 +5,11 @@ use App\Livewire\Forms\CommentForm; use App\Models\Comment; use App\Models\Post; +use App\Models\User; use App\Notifications\NewComment; use App\Rules\Captcha; use App\Traits\MarkdownConverter; +use Illuminate\Container\Attributes\CurrentUser; use Livewire\Attributes\Locked; use Livewire\Component; @@ -24,13 +26,14 @@ public bool $previewIsEnable = false; - public function mount(): void + public function mount(#[CurrentUser] ?User $user): void { + $this->currentUser = $user; $this->form->post_id = $this->postId; - $this->form->user_id = auth()->id(); + $this->form->user_id = $user?->id; } - public function save(): void + public function save(#[CurrentUser] ?User $user): void { $this->validate( rules: [ @@ -78,8 +81,8 @@ public function save(): void 'body' => $comment->body, 'created_at' => $comment->created_at->toDateTimeString(), 'updated_at' => $comment->updated_at->toDateTimeString(), - 'user_name' => auth()->check() ? auth()->user()->name : null, - 'user_gravatar_url' => auth()->check() ? get_gravatar(auth()->user()->email) : null, + 'user_name' => $user?->name, + 'user_gravatar_url' => $user !== null ? get_gravatar($user->email) : null, 'children_count' => 0, ], ); @@ -198,7 +201,7 @@ class="space-y-2" >
- {{ auth()->check() ? auth()->user()->name : '訪客' }} + {{ auth()->check() ? auth()->user()->name : '訪客' }} {{ now()->format('Y 年 m 月 d 日') }}
diff --git "a/resources/views/components/comments/\342\232\241edit-modal.blade.php" "b/resources/views/components/comments/\342\232\241edit-modal.blade.php" index 94d675b9..0311202e 100644 --- "a/resources/views/components/comments/\342\232\241edit-modal.blade.php" +++ "b/resources/views/components/comments/\342\232\241edit-modal.blade.php" @@ -4,8 +4,10 @@ use App\Livewire\Forms\CommentForm; use App\Models\Comment; +use App\Models\User; use App\Traits\MarkdownConverter; use Illuminate\Auth\Access\AuthorizationException; +use Illuminate\Container\Attributes\CurrentUser; use Livewire\Component; new class extends Component @@ -21,9 +23,11 @@ public bool $previewIsEnable = false; - public function mount(): void - { - if (! auth()->check()) { + public function mount( + #[CurrentUser] + ?User $user + ): void { + if ($user === null) { throw new Exception(message: 'Edit modal part component requires authentication.'); } } diff --git "a/resources/views/components/layouts/\342\232\241header.blade.php" "b/resources/views/components/layouts/\342\232\241header.blade.php" index 4b398af2..1e003d0d 100644 --- "a/resources/views/components/layouts/\342\232\241header.blade.php" +++ "b/resources/views/components/layouts/\342\232\241header.blade.php" @@ -4,6 +4,7 @@ use App\Livewire\Actions\Logout; use App\Models\Category; +use App\Models\User; use App\Services\SettingService; use Illuminate\Support\Facades\Cache; use Livewire\Component; @@ -59,6 +60,7 @@ public function logout(Logout $logout): void @endscript + @php $hasUnreadNotifications = auth()->check() && auth()->user()->unreadNotifications()->exists(); @endphp @@ -234,7 +236,7 @@ class="lg:hidden bg-zinc-50 dark:bg-zinc-800" id="mobile-header" >
-
+
{{-- category dropdown menu toggle --}}