anikeen / id
PHP AnikeenId API Client for Laravel 10+
Requires
- php: ^8.1
- ext-json: *
- firebase/php-jwt: ^6.0
- guzzlehttp/guzzle: ^6.3|^7.0
- illuminate/console: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
- socialiteproviders/manager: ^3.4|^4.0.1
Requires (Dev)
- phpunit/phpunit: ^8.0|^9.0
This package is auto-updated.
Last update: 2025-05-02 05:30:17 UTC
README
PHP Anikeen ID API Client for Laravel 11+
Table of contents
Installation
composer require anikeen/id
Configuration
Add environmental variables to your .env
file:
ANIKEEN_ID_KEY=
ANIKEEN_ID_SECRET=
ANIKEEN_ID_CALLBACK_URL=http://localhost/auth/callback
To switch from production
to staging
use following variable:
ANIKEEN_ID_MODE=staging
You will need to add an entry to the services configuration file so that after config files are cached for usage in production environment (Laravel command artisan config:cache
) all config is still available.
Add to config/services.php
file:
'anikeen' => [ 'mode' => env('ANIKEEN_ID_MODE'), 'client_id' => env('ANIKEEN_ID_KEY'), 'client_secret' => env('ANIKEEN_ID_SECRET'), 'redirect' => env('ANIKEEN_ID_CALLBACK_URL'), 'base_url' => env('ANIKEEN_ID_BASE_URL'), ],
Event Listener
In Laravel 11, the default EventServiceProvider provider was removed. Instead, add the listener using the listen method on the Event facade, in your AppServiceProvider
boot method:
public function boot(): void { Event::listen(function (\SocialiteProviders\Manager\SocialiteWasCalled $event) { $event->extendSocialite('anikeen', \Anikeen\Id\Socialite\Provider::class); }); }
Registering Middleware
Append it to the global middleware stack in your application's bootstrap/app.php
file:
->withMiddleware(function (Middleware $middleware) { $middleware->web(append: [ \Anikeen\Id\Http\Middleware\CreateFreshApiToken::class, ]); })
Implementing Billable
To implement the Billable
trait, you need to add the Billable
trait to your user model.
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:
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 AppServiceProvider
class:
use Anikeen\Id\AnikeenId; use Anikeen\Id\Providers\AnikeenIdUserProvider; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; public function boot(): void { Auth::provider('anikeen', function ($app, array $config) { return new AnikeenIdUserProvider( $app->make(AnikeenId::class), $app->make(Request::class), $config['model'], $config['fields'] ?? [], ); }); }
reference the guard in the guards
configuration of your auth.php
configuration file:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'anikeen', 'provider' => 'anikeen', ], ],
reference the provider in the providers
configuration of your auth.php
configuration file:
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], 'anikeen' => [ 'driver' => 'anikeen', 'model' => App\Models\User::class, 'fields' => ['first_name', 'last_name', 'email'], ], ],
General
Setters and Getters
$anikeenId = new Anikeen\Id\AnikeenId(); $anikeenId->setClientId('abc123'); $anikeenId->setClientSecret('abc456'); $anikeenId->setToken('abcdef123456'); $anikeenId = $anikeenId->withClientId('abc123'); $anikeenId = $anikeenId->withClientSecret('abc123'); $anikeenId = $anikeenId->withToken('abcdef123456');
Error handling for an unsuccessful query:
$result = $anikeenId->sshKeysByUserId('someInvalidId'); // Check, if the query was successfully if (!$result->success()) { die('Ooops: ' . $result->error()); }
Shift result to get single key data:
$result = $anikeenId->sshKeysByUserId('someValidId'); $sshKey = $result->shift(); echo $sshKey->name;
Examples
Get User SSH Key
$anikeenId = new Anikeen\IdAnikeenId(); $anikeenId->setClientId('abc123'); // Get SSH Key by User ID $result = $anikeenId->sshKeysByUserId('someValidId'); // Check, if the query was successfully if (!$result->success()) { die('Ooops: ' . $result->error()); } // Shift result to get single key data $sshKey = $result->shift(); echo $sshKey->name;
Create Order Preview
$anikeenId = new \Anikeen\Id\AnikeenId(); // Create new Order Preview $result = $anikeenId->createOrderPreview([ 'country_iso' => 'de', 'items' => [ [ 'type' => 'physical', 'name' => 'Test', 'price' => 2.99, 'unit' => 'onetime', 'units' => 1, ] ] ])->shift(); echo $preview->gross_total;
OAuth Tokens
$anikeenId = new Anikeen\Id\AnikeenId(); $anikeenId->setClientId('abc123'); $anikeenId->setToken('abcdef123456'); $result = $anikeenId->getAuthedUser(); $user = $userResult->shift();
$anikeenId->setToken('uvwxyz456789'); $result = $anikeenId->getAuthedUser();
$result = $anikeenId->withToken('uvwxyz456789')->getAuthedUser();
Facade
use Anikeen\Id\Facades\AnikeenId; AnikeenId::withClientId('abc123')->withToken('abcdef123456')->getAuthedUser();
Documentation
AnikeenId
Oauth
public function retrievingToken(string $grantType, array $attributes): Result
ManagesPricing
public function createOrderPreview(array $attributes = []): Result
ManagesSshKeys
public function sshKeysByUserId(string $sskKeyId): SshKeys
ManagesUsers
public function getAuthedUser(): Result public function createUser(array $attributes): Result public function isEmailExisting(string $email): Result public function setParent(?mixed $parent): self public function getParent()
Billable
ManagesAddresses
public function addresses(): Addresses public function hasDefaultBillingAddress(): bool
ManagesBalance
public function balance(): float public function charges(): float public function charge(float $amount, string $paymentMethodId, array $options = []): Transaction
ManagesCountries
public function countries(): Countries
ManagesInvoices
public function invoices(array $parameters = []): Invoices
ManagesOrders
public function orders(array $parameters = []): Orders
ManagesPaymentMethods
public function paymentMethods(): PaymentMethods public function hasPaymentMethod(): ?PaymentMethod public function defaultPaymentMethod(): ?PaymentMethod public function hasDefaultPaymentMethod(): bool public function billingPortalUrl(?string $returnUrl = null, array $options = []): string public function createSetupIntent(array $options = []): Result
ManagesProfile
public function profilePortalUrl(?string $returnUrl = null, array $options = []): string
ManagesSubscriptions
public function subscriptions(): Subscriptions
ManagesTaxation
public function vat(): float
ManagesTransactions
public function transactions(): Transactions
Development
Run Tests
composer test
BASE_URL=xxxx CLIENT_ID=xxxx CLIENT_KEY=yyyy CLIENT_ACCESS_TOKEN=zzzz composer test
Generate Documentation
composer docs