Skip to content

Commit

Permalink
Add client command
Browse files Browse the repository at this point in the history
  • Loading branch information
simonschaufi committed Sep 21, 2020
1 parent 248fac7 commit f426cba
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 1 deletion.
118 changes: 118 additions & 0 deletions src/Console/ClientCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
<?php

namespace DesignMyNight\Mongodb\Console;

use DesignMyNight\Mongodb\Passport\Client;
use Laravel\Passport\ClientRepository;
use Laravel\Passport\Console\ClientCommand as PassportClientCommand;

class ClientCommand extends PassportClientCommand
{
/**
* Create a new personal access client.
*
* @param \Laravel\Passport\ClientRepository $clients
* @return void
*/
protected function createPersonalClient(ClientRepository $clients)
{
$name = $this->option('name') ?: $this->ask(
'What should we name the personal access client?',
config('app.name').' Personal Access Client'
);

$client = $clients->createPersonalAccessClient(
null, $name, 'http://localhost'
);

$this->info('Personal access client created successfully.');

$this->patchedOutputClientDetails($client);
}

/**
* Create a new password grant client.
*
* @param \Laravel\Passport\ClientRepository $clients
* @return void
*/
protected function createPasswordClient(ClientRepository $clients)
{
$name = $this->option('name') ?: $this->ask(
'What should we name the password grant client?',
config('app.name').' Password Grant Client'
);

$client = $clients->createPasswordGrantClient(
null, $name, 'http://localhost'
);

$this->info('Password grant client created successfully.');

$this->patchedOutputClientDetails($client);
}

/**
* Create a client credentials grant client.
*
* @param \Laravel\Passport\ClientRepository $clients
* @return void
*/
protected function createClientCredentialsClient(ClientRepository $clients)
{
$name = $this->option('name') ?: $this->ask(
'What should we name the client?',
config('app.name').' ClientCredentials Grant Client'
);

$client = $clients->create(
null, $name, ''
);

$this->info('New client created successfully.');

$this->patchedOutputClientDetails($client);
}

/**
* Create a authorization code client.
*
* @param \Laravel\Passport\ClientRepository $clients
* @return void
*/
protected function createAuthCodeClient(ClientRepository $clients)
{
$userId = $this->option('user_id') ?: $this->ask(
'Which user ID should the client be assigned to?'
);

$name = $this->option('name') ?: $this->ask(
'What should we name the client?'
);

$redirect = $this->option('redirect_uri') ?: $this->ask(
'Where should we redirect the request after authorization?',
url('/auth/callback')
);

$client = $clients->create(
$userId, $name, $redirect, false, false, ! $this->option('public')
);

$this->info('New client created successfully.');

$this->patchedOutputClientDetails($client);
}

/**
* Output the client's ID and secret key.
*
* @param \Laravel\Passport\Client $client
* @return void
*/
protected function patchedOutputClientDetails(Client $client)
{
$this->line('<comment>Client ID:</comment> '.$client->id);
$this->line('<comment>Client secret:</comment> '.$client->secret);
}
}
8 changes: 7 additions & 1 deletion src/MongodbPassportServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@

namespace DesignMyNight\Mongodb;

use DesignMyNight\Mongodb\Console\ClientCommand;
use Illuminate\Foundation\Application;
use Illuminate\Support\ServiceProvider;
use DesignMyNight\Mongodb\Passport\AuthCode;
use DesignMyNight\Mongodb\Passport\Bridge\RefreshTokenRepository;
use DesignMyNight\Mongodb\Passport\Client;
use DesignMyNight\Mongodb\Passport\PersonalAccessClient;
use DesignMyNight\Mongodb\Passport\RefreshToken;
use DesignMyNight\Mongodb\Passport\Token;
use Laravel\Passport\Bridge\RefreshTokenRepository as PassportRefreshTokenRepository;
use Laravel\Passport\Console\ClientCommand as OriginalClientCommand;
use Laravel\Passport\Passport;

class MongodbPassportServiceProvider extends ServiceProvider
Expand All @@ -27,5 +29,9 @@ public function register()
$this->app->bind(PassportRefreshTokenRepository::class, function () {
return $this->app->make(RefreshTokenRepository::class);
});

$this->app->extend(OriginalClientCommand::class, function (Application $app) {
return new ClientCommand();
});
}
}

0 comments on commit f426cba

Please sign in to comment.