PHP code example of whilesmart / eloquent-client-credentials
1. Go to this page and download the library: Download whilesmart/eloquent-client-credentials library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
whilesmart / eloquent-client-credentials example snippets
// config/client-credentials.php
return [
'default_model' => \Whilesmart\EloquentClientCredentials\Models\Client::class,
'owner_resolver' => \Whilesmart\EloquentClientCredentials\Resolvers\DefaultOwnerResolver::class,
'middleware_hooks' => [],
'routes' => [
'enabled' => false,
'prefix' => 'api',
'middleware' => [],
'client_routes' => false,
],
'oauth' => [
'enabled' => true,
'token_lifetime' => 3600,
'refresh_token_lifetime' => 86400 * 30,
'refresh_tokens_enabled' => false,
],
];
'routes' => [
'enabled' => true,
'prefix' => 'api',
'middleware' => ['auth:sanctum'],
'client_routes' => true,
],
use Whilesmart\EloquentClientCredentials\Traits\HasClientCredentials;
class ApiApp extends Model
{
use HasClientCredentials;
protected $fillable = ['name', 'secret', /* ... */];
}
use Whilesmart\EloquentClientCredentials\Contracts\OwnerResolverInterface;
class CustomOwnerResolver implements OwnerResolverInterface
{
public function resolve(Request $request): ?Model
{
return $request->user()->currentTeam;
}
}
'owner_resolver' => \App\Resolvers\CustomOwnerResolver::class,
$controller = app(ClientController::class);
$controller->store($request, $customOwner);
Route::middleware('client.bearer')->group(function () {
Route::get('/resource', fn () => 'Protected');
});
// With scope
Route::middleware('client.basic')->group(function () {
Route::get('/resource', fn () => 'Protected');
});
Route::middleware('client.auth')->group(function () {
Route::get('/resource', fn () => 'Protected');
});
use Whilesmart\EloquentClientCredentials\Http\Middleware\AuthenticateBearerToken;
use Whilesmart\EloquentClientCredentials\Http\Middleware\AuthenticateBasicAuth;
use Whilesmart\EloquentClientCredentials\Http\Middleware\AuthenticateClient;
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'client.bearer' => AuthenticateBearerToken::class,
'client.basic' => AuthenticateBasicAuth::class,
'client.auth' => AuthenticateClient::class,
]);
})
// config/client-credentials.php
'middleware_hooks' => [
\App\Hooks\MyClientHook::class,
],
use Whilesmart\EloquentClientCredentials\Interfaces\MiddlewareHookInterface;
class MyClientHook implements MiddlewareHookInterface
{
public function before(Request $request, string $action): ?Request
{
// Modify request or return null to continue
return $request;
}
public function after(Request $request, JsonResponse $response, string $action): JsonResponse
{
// Modify response
return $response;
}
}
bash
php artisan vendor:publish --tag=client-credentials-config
bash
php artisan migrate
bash
# Config
php artisan vendor:publish --tag=client-credentials-config
# Migrations
php artisan vendor:publish --tag=client-credentials-migrations
# Language files
php artisan vendor:publish --tag=client-credentials-lang
# Routes
php artisan vendor:publish --tag=client-credentials-routes