diff --git a/app/Http/Livewire/OauthClients.php b/app/Http/Livewire/OauthClients.php index fadcd39fd..55ace8837 100644 --- a/app/Http/Livewire/OauthClients.php +++ b/app/Http/Livewire/OauthClients.php @@ -4,37 +4,80 @@ namespace App\Http\Livewire; use Laravel\Passport\Client; use Laravel\Passport\ClientRepository; +use Laravel\Passport\Passport; use Livewire\Component; class OauthClients extends Component { + public $name; + public $redirect; + public $editClientId; + public $editName; + public $editRedirect; + + protected $clientRepository; + + public function __construct() + { + $this->clientRepository = app(ClientRepository::class); + parent::__construct(); + } + public function render() { return view('livewire.oauth-clients', [ - 'clients' => app(ClientRepository::class)->activeForUser(auth()->user()->id), + 'clients' => $this->clientRepository->activeForUser(auth()->user()->id), ]); } - public function rules(): array - { - return [ - 'name' => 'required|string|max:255', - 'redirect' => 'required|url|max:255', - ]; - } - public function createClient(): void { - $this->validate(); + $this->validate([ + 'name' => 'required|string|max:255', + 'redirect' => 'required|url|max:255', + ]); - //$newClient = ; + $newClient = $this->clientRepository->create( + auth()->user()->id, + $this->name, + $this->redirect, + ); - //$this->dispatchBrowserEvent('clientCreated', $newClient->accessToken); + $this->dispatchBrowserEvent('clientCreated'); } public function deleteClient(Client $clientId): void { - //->delete must be of type Client - thus the model binding - app(ClientRepository::class)->delete($clientId); + // test for safety + // ->delete must be of type Client - thus the model binding + $this->clientRepository->delete($clientId); + } + + public function editClient(Client $editClientId): void + { + $this->editName = $editClientId->name; + $this->editRedirect = $editClientId->redirect; + + $this->dispatchBrowserEvent('editClient'); + } + + public function updateClient(Client $editClientId): void + { + $this->validate([ + 'editName' => 'required|string|max:255', + 'editRedirect' => 'required|url|max:255', + ]); + + $client = $this->clientRepository->find($editClientId->id); + if ($client->user_id == auth()->user()->id) { + $client->name = $this->editName; + $client->redirect = $this->editRedirect; + $client->save(); + } else { + // throw error + } + + $this->dispatchBrowserEvent('clientUpdated'); + } } diff --git a/resources/views/livewire/oauth-clients.blade.php b/resources/views/livewire/oauth-clients.blade.php index 4c7be6c79..b98eb6283 100644 --- a/resources/views/livewire/oauth-clients.blade.php +++ b/resources/views/livewire/oauth-clients.blade.php @@ -6,8 +6,8 @@ (Livewire) OAuth Clients - Create New Client @@ -55,7 +55,7 @@