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 @@ +
+
+ +
+
+