diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index f3900eff2..e0027b5e4 100755 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -87,11 +87,9 @@ class ProfileController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return View */ - public function api() + public function api(): \Illuminate\Contracts\View\View { - // Make sure the self.api permission has been granted if (!Gate::allows('self.api')) { abort(403); diff --git a/app/Http/Livewire/PersonalAccessTokens.php b/app/Http/Livewire/PersonalAccessTokens.php new file mode 100644 index 000000000..35ba3e1da --- /dev/null +++ b/app/Http/Livewire/PersonalAccessTokens.php @@ -0,0 +1,54 @@ + 'autoFocusModalEvent']; + + //this is just an annoying thing to make the modal input autofocus + public function autoFocusModalEvent(): void + { + $this->dispatchBrowserEvent('autoFocusModal'); + } + + public function render() + { + return view('livewire.personal-access-tokens', [ + 'tokens' => Auth::user()->tokens, + ]); + } + + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + ]; + } + + public function createToken(): void + { + $this->validate(); + + $newToken = Auth::user()->createToken($this->name); + + $this->newTokenString = $newToken->accessToken; + + $this->dispatchBrowserEvent('tokenCreated', $newToken->accessToken); + } + + public function deleteToken($tokenId): void + { + //this needs safety (though the scope of auth::user might kind of do it...) + //seems like it does, test more + Auth::user()->tokens()->find($tokenId)->delete(); + } +} diff --git a/resources/assets/js/components/passport/PersonalAccessTokens.vue b/resources/assets/js/components/passport/PersonalAccessTokens.vue deleted file mode 100644 index b2b41e3b6..000000000 --- a/resources/assets/js/components/passport/PersonalAccessTokens.vue +++ /dev/null @@ -1,311 +0,0 @@ - - - - - diff --git a/resources/assets/js/vue.js b/resources/assets/js/vue.js index a5b903e51..916e8759a 100644 --- a/resources/assets/js/vue.js +++ b/resources/assets/js/vue.js @@ -21,10 +21,11 @@ Vue.component( require('./components/passport/AuthorizedClients.vue').default ); -Vue.component( - 'passport-personal-access-tokens', - require('./components/passport/PersonalAccessTokens.vue').default -); +// This component has been removed and replaced with a Livewire implementation +// Vue.component( +// 'passport-personal-access-tokens', +// require('./components/passport/PersonalAccessTokens.vue').default +// ); // This component has been removed and replaced with a Livewire implementation // Vue.component( diff --git a/resources/views/account/api.blade.php b/resources/views/account/api.blade.php index 970871919..af263fb3b 100644 --- a/resources/views/account/api.blade.php +++ b/resources/views/account/api.blade.php @@ -1,23 +1,16 @@ @extends('layouts/default') - {{-- Page title --}} @section('title') {{ trans('account/general.personal_api_keys') }} @parent @stop - {{-- Page content --}} @section('content') - -
@if (!config('app.lock_passwords')) - - + @else

{{ trans('general.feature_disabled') }}

@endif diff --git a/resources/views/livewire/personal-access-tokens.blade.php b/resources/views/livewire/personal-access-tokens.blade.php new file mode 100644 index 000000000..a2c55dff5 --- /dev/null +++ b/resources/views/livewire/personal-access-tokens.blade.php @@ -0,0 +1,169 @@ +
+
+ +
+ + @if($tokens->count() === 0) +

+ You have not created any personal access tokens. +

+ @endif + + + + @if($tokens->count() > 0) + + + + + + + + + @endif + @foreach($tokens as $token) + + + + + + + + + + + + + @endforeach +
NameCreatedExpiresDelete
+ {{ $token->name }} + + {{ $token->created_at }} + + {{ $token->expires_at }} + + + + +
+
+
+ + + + + + +
\ No newline at end of file