From 45ea55fd543cdae6cb0f1f6cd59add674a180f1e Mon Sep 17 00:00:00 2001 From: "allen.yan" Date: Fri, 16 May 2025 13:50:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=80=85=E6=AA=94=E6=A1=88?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=20=E5=BB=BA=E7=AB=8B=20Token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../livewire/profile/new-token-form.blade.php | 101 ++++++++++++++++++ resources/views/profile.blade.php | 6 ++ 2 files changed, 107 insertions(+) create mode 100644 resources/views/livewire/profile/new-token-form.blade.php diff --git a/resources/views/livewire/profile/new-token-form.blade.php b/resources/views/livewire/profile/new-token-form.blade.php new file mode 100644 index 0000000..49a8f2c --- /dev/null +++ b/resources/views/livewire/profile/new-token-form.blade.php @@ -0,0 +1,101 @@ +loadTokens(); + } + + public function newToken(): void + { + $user = Auth::user(); + + // 從 Spatie 權限套件取得權限名稱作為 abilities + $abilities = $user->getAllPermissions()->pluck('name')->toArray(); + + $token = $user->createToken($this->tokenName, $abilities); + + $this->token = $token->plainTextToken; + $this->loadTokens(); + + session()->flash('status', 'Token created!'); + } + + public function loadTokens() + { + $this->tokens = Auth::user() + ->tokens() + ->get() + ->map(function ($token) { + return [ + 'name' => $token->name, + 'abilities' => $token->abilities, + 'last_used_at' => $token->last_used_at, + 'created_at' => $token->created_at->toDateTimeString(), + ]; + })->toArray(); + } + + public function deleteToken($name) + { + Auth::user()->tokens()->where('name', $name)->delete(); + $this->loadTokens(); + } +}; +?> + +
+
+

+ {{ __('New API Token') }} +

+ +

+ {{ __('Create a new personal access token.') }} +

+
+ +
+
+ + +
+ +
+ {{ __('Create Token') }} +
+ + @if($token) +
+ + {{ $token }} +

Please copy this token now. You won't be able to see it again.

+
+ @endif +
+ +
+

Existing Tokens ({{ count($tokens) }})

+ + @forelse ($tokens as $token) +
+
Name: {{ $token['name'] }}
+
Abilities: {{ implode(', ', $token['abilities']) }}
+
Created At: {{ $token['created_at'] }}
+
Last Used: {{ $token['last_used_at'] ?? 'Never' }}
+ + +
+ @empty +

No tokens created yet.

+ @endforelse +
+
diff --git a/resources/views/profile.blade.php b/resources/views/profile.blade.php index a093406..2a59f89 100644 --- a/resources/views/profile.blade.php +++ b/resources/views/profile.blade.php @@ -19,6 +19,12 @@ +
+
+ +
+
+