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 --}}