mirror of
https://github.com/anikeen-com/id.git
synced 2026-03-13 13:46:13 +00:00
refactored code
Signed-off-by: Maurice Preuß (envoyr) <hello@envoyr.com>
This commit is contained in:
63
README.md
63
README.md
@@ -11,11 +11,10 @@ PHP Anikeen ID API Client for Laravel 11+
|
|||||||
1. [Installation](#installation)
|
1. [Installation](#installation)
|
||||||
2. [Event Listener](#event-listener)
|
2. [Event Listener](#event-listener)
|
||||||
3. [Configuration](#configuration)
|
3. [Configuration](#configuration)
|
||||||
4. [Implementing Auth](#implementing-auth)
|
4. [General](#general)
|
||||||
5. [General](#general)
|
5. [Examples](#examples)
|
||||||
6. [Examples](#examples)
|
6. [Documentation](#documentation)
|
||||||
7. [Documentation](#documentation)
|
7. [Development](#Development)
|
||||||
8. [Development](#Development)
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -56,13 +55,50 @@ You will need to add an entry to the services configuration file so that after c
|
|||||||
],
|
],
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Registering Middleware
|
||||||
|
|
||||||
|
Append it to the global middleware stack in your application's `bootstrap/app.php` file:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$middleware->web(append: [
|
->withMiddleware(function (Middleware $middleware) {
|
||||||
\Anikeen\Id\Http\Middleware\CreateFreshApiToken::class,
|
$middleware->web(append: [
|
||||||
]);
|
\Anikeen\Id\Http\Middleware\CreateFreshApiToken::class,
|
||||||
|
]);
|
||||||
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
## Implementing Auth
|
### Implementing Billable
|
||||||
|
|
||||||
|
To implement the `Billable` trait, you need to add the `Billable` trait to your user model.
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Anikeen\Id\Billable;
|
||||||
|
|
||||||
|
class User extends Authenticatable
|
||||||
|
{
|
||||||
|
use Billable;
|
||||||
|
|
||||||
|
// Your model code...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
then, you can use the `Billable` trait methods in your user model.
|
||||||
|
|
||||||
|
### Change the default access token / refresh token field name
|
||||||
|
|
||||||
|
If you access / refresh token fields differs from the default `anikeen_id_access_token` / `anikeen_id_refresh_token`, you can specify the field name in the 'AppServiceProvider' boot method:
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Anikeen\Id\AnikeenId;
|
||||||
|
|
||||||
|
public function boot(): void
|
||||||
|
{
|
||||||
|
AnikeenId::useAccessTokenField('anikeen_id_access_token');
|
||||||
|
AnikeenId::useRefreshTokenField('anikeen_id_refresh_token');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Implementing Auth
|
||||||
|
|
||||||
This method should typically be called in the `boot` method of your `AuthServiceProvider` class:
|
This method should typically be called in the `boot` method of your `AuthServiceProvider` class:
|
||||||
|
|
||||||
@@ -71,12 +107,7 @@ use Anikeen\Id\AnikeenId;
|
|||||||
use Anikeen\Id\Providers\AnikeenIdSsoUserProvider;
|
use Anikeen\Id\Providers\AnikeenIdSsoUserProvider;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
/**
|
public function boot(): void
|
||||||
* Register any authentication / authorization services.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function boot()
|
|
||||||
{
|
{
|
||||||
Auth::provider('sso-users', function ($app, array $config) {
|
Auth::provider('sso-users', function ($app, array $config) {
|
||||||
return new AnikeenIdSsoUserProvider(
|
return new AnikeenIdSsoUserProvider(
|
||||||
@@ -84,7 +115,6 @@ public function boot()
|
|||||||
$app->make(Request::class),
|
$app->make(Request::class),
|
||||||
$config['model'],
|
$config['model'],
|
||||||
$config['fields'] ?? [],
|
$config['fields'] ?? [],
|
||||||
$config['access_token_field'] ?? null
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -119,7 +149,6 @@ reference the provider in the `providers` configuration of your `auth.php` confi
|
|||||||
'driver' => 'sso-users',
|
'driver' => 'sso-users',
|
||||||
'model' => App\Models\User::class,
|
'model' => App\Models\User::class,
|
||||||
'fields' => ['first_name', 'last_name', 'email'],
|
'fields' => ['first_name', 'last_name', 'email'],
|
||||||
'access_token_field' => 'sso_access_token',
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
```
|
```
|
||||||
|
|||||||
63
README.stub
63
README.stub
@@ -11,11 +11,10 @@ PHP Anikeen ID API Client for Laravel 11+
|
|||||||
1. [Installation](#installation)
|
1. [Installation](#installation)
|
||||||
2. [Event Listener](#event-listener)
|
2. [Event Listener](#event-listener)
|
||||||
3. [Configuration](#configuration)
|
3. [Configuration](#configuration)
|
||||||
4. [Implementing Auth](#implementing-auth)
|
4. [General](#general)
|
||||||
5. [General](#general)
|
5. [Examples](#examples)
|
||||||
6. [Examples](#examples)
|
6. [Documentation](#documentation)
|
||||||
7. [Documentation](#documentation)
|
7. [Development](#Development)
|
||||||
8. [Development](#Development)
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -56,13 +55,50 @@ You will need to add an entry to the services configuration file so that after c
|
|||||||
],
|
],
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Registering Middleware
|
||||||
|
|
||||||
|
Append it to the global middleware stack in your application's `bootstrap/app.php` file:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$middleware->web(append: [
|
->withMiddleware(function (Middleware $middleware) {
|
||||||
\Anikeen\Id\Http\Middleware\CreateFreshApiToken::class,
|
$middleware->web(append: [
|
||||||
]);
|
\Anikeen\Id\Http\Middleware\CreateFreshApiToken::class,
|
||||||
|
]);
|
||||||
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
## Implementing Auth
|
### Implementing Billable
|
||||||
|
|
||||||
|
To implement the `Billable` trait, you need to add the `Billable` trait to your user model.
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Anikeen\Id\Billable;
|
||||||
|
|
||||||
|
class User extends Authenticatable
|
||||||
|
{
|
||||||
|
use Billable;
|
||||||
|
|
||||||
|
// Your model code...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
then, you can use the `Billable` trait methods in your user model.
|
||||||
|
|
||||||
|
### Change the default access token / refresh token field name
|
||||||
|
|
||||||
|
If you access / refresh token fields differs from the default `anikeen_id_access_token` / `anikeen_id_refresh_token`, you can specify the field name in the 'AppServiceProvider' boot method:
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Anikeen\Id\AnikeenId;
|
||||||
|
|
||||||
|
public function boot(): void
|
||||||
|
{
|
||||||
|
AnikeenId::useAccessTokenField('anikeen_id_access_token');
|
||||||
|
AnikeenId::useRefreshTokenField('anikeen_id_refresh_token');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Implementing Auth
|
||||||
|
|
||||||
This method should typically be called in the `boot` method of your `AuthServiceProvider` class:
|
This method should typically be called in the `boot` method of your `AuthServiceProvider` class:
|
||||||
|
|
||||||
@@ -71,12 +107,7 @@ use Anikeen\Id\AnikeenId;
|
|||||||
use Anikeen\Id\Providers\AnikeenIdSsoUserProvider;
|
use Anikeen\Id\Providers\AnikeenIdSsoUserProvider;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
/**
|
public function boot(): void
|
||||||
* Register any authentication / authorization services.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function boot()
|
|
||||||
{
|
{
|
||||||
Auth::provider('sso-users', function ($app, array $config) {
|
Auth::provider('sso-users', function ($app, array $config) {
|
||||||
return new AnikeenIdSsoUserProvider(
|
return new AnikeenIdSsoUserProvider(
|
||||||
@@ -84,7 +115,6 @@ public function boot()
|
|||||||
$app->make(Request::class),
|
$app->make(Request::class),
|
||||||
$config['model'],
|
$config['model'],
|
||||||
$config['fields'] ?? [],
|
$config['fields'] ?? [],
|
||||||
$config['access_token_field'] ?? null
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -119,7 +149,6 @@ reference the provider in the `providers` configuration of your `auth.php` confi
|
|||||||
'driver' => 'sso-users',
|
'driver' => 'sso-users',
|
||||||
'model' => App\Models\User::class,
|
'model' => App\Models\User::class,
|
||||||
'fields' => ['first_name', 'last_name', 'email'],
|
'fields' => ['first_name', 'last_name', 'email'],
|
||||||
'access_token_field' => 'sso_access_token',
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -54,12 +54,12 @@ class AnikeenId
|
|||||||
/**
|
/**
|
||||||
* The key for the access token.
|
* The key for the access token.
|
||||||
*/
|
*/
|
||||||
private static string $accessTokenKey = 'anikeen_id_token';
|
private static string $accessTokenField = 'anikeen_id_access_token';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The key for the access token.
|
* The key for the access token.
|
||||||
*/
|
*/
|
||||||
private static string $refreshTokenKey = 'anikeen_id_refresh_token';
|
private static string $refreshTokenField = 'anikeen_id_refresh_token';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Guzzle is used to make http requests.
|
* Guzzle is used to make http requests.
|
||||||
@@ -123,24 +123,24 @@ class AnikeenId
|
|||||||
self::$baseUrl = $baseUrl;
|
self::$baseUrl = $baseUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function useAccessTokenKey(string $accessTokenKey): void
|
public static function useAccessTokenField(string $accessTokenField): void
|
||||||
{
|
{
|
||||||
self::$accessTokenKey = $accessTokenKey;
|
self::$accessTokenField = $accessTokenField;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getAccessTokenKey(): string
|
public static function getAccessTokenField(): string
|
||||||
{
|
{
|
||||||
return self::$accessTokenKey;
|
return self::$accessTokenField;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function useRefreshTokenKey(string $refreshTokenKey): void
|
public static function useRefreshTokenField(string $refreshTokenField): void
|
||||||
{
|
{
|
||||||
self::$refreshTokenKey = $refreshTokenKey;
|
self::$refreshTokenField = $refreshTokenField;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getRefreshTokenKey(): string
|
public static function getRefreshTokenField(): string
|
||||||
{
|
{
|
||||||
return self::$refreshTokenKey;
|
return self::$refreshTokenField;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -62,4 +62,9 @@ class UserProvider implements Base
|
|||||||
{
|
{
|
||||||
return $this->providerName;
|
return $this->providerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function rehashPasswordIfRequired(Authenticatable $user, #[\SensitiveParameter] array $credentials, bool $force = false)
|
||||||
|
{
|
||||||
|
// TODO: Implement rehashPasswordIfRequired() method.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ trait Billable
|
|||||||
protected function request(string $method, string $path, null|array $payload = null, array $parameters = [], Paginator $paginator = null): Result
|
protected function request(string $method, string $path, null|array $payload = null, array $parameters = [], Paginator $paginator = null): Result
|
||||||
{
|
{
|
||||||
$anikeenId = new AnikeenId();
|
$anikeenId = new AnikeenId();
|
||||||
$anikeenId->withToken($this->{AnikeenId::getAccessTokenKey()});
|
$anikeenId->withToken($this->{AnikeenId::getAccessTokenField()});
|
||||||
|
|
||||||
return $anikeenId->request($method, $path, $payload, $parameters, $paginator);
|
return $anikeenId->request($method, $path, $payload, $parameters, $paginator);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,28 +13,19 @@ use Illuminate\Support\Arr;
|
|||||||
|
|
||||||
class AnikeenIdSsoUserProvider implements UserProvider
|
class AnikeenIdSsoUserProvider implements UserProvider
|
||||||
{
|
{
|
||||||
private AnikeenId $anikeenId;
|
|
||||||
private ?string $accessTokenField = null;
|
private ?string $accessTokenField = null;
|
||||||
private array $fields;
|
|
||||||
private string $model;
|
|
||||||
private Request $request;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
AnikeenId $anikeenId,
|
private AnikeenId $anikeenId,
|
||||||
Request $request,
|
private Request $request,
|
||||||
string $model,
|
private string $model,
|
||||||
array $fields,
|
private array $fields
|
||||||
?string $accessTokenField = null
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$this->request = $request;
|
$this->accessTokenField = AnikeenId::getAccessTokenField();
|
||||||
$this->model = $model;
|
|
||||||
$this->fields = $fields;
|
|
||||||
$this->accessTokenField = $accessTokenField;
|
|
||||||
$this->anikeenId = $anikeenId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function retrieveById(mixed $identifier): Builder|Model|null
|
public function retrieveById(mixed $identifier): ?Authenticatable
|
||||||
{
|
{
|
||||||
$model = $this->createModel();
|
$model = $this->createModel();
|
||||||
$token = $this->request->bearerToken();
|
$token = $this->request->bearerToken();
|
||||||
@@ -114,4 +105,9 @@ class AnikeenIdSsoUserProvider implements UserProvider
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function rehashPasswordIfRequired(Authenticatable $user, #[\SensitiveParameter] array $credentials, bool $force = false)
|
||||||
|
{
|
||||||
|
// TODO: Implement rehashPasswordIfRequired() method.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user