PHPackages                             coretrekas/idp - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. coretrekas/idp

ActiveLibrary[API Development](/categories/api)

coretrekas/idp
==============

SDK to interact with the Coretrek IDP service with Laravel support

v1.1.0(1y ago)32.2k↓66.7%MITPHPPHP ^8.2.0

Since Feb 13Pushed 1y ago3 watchersCompare

[ Source](https://github.com/coretrekas/idp)[ Packagist](https://packagist.org/packages/coretrekas/idp)[ RSS](/packages/coretrekas-idp/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (5)Versions (14)Used By (0)

Coretrek IDP SDK
================

[](#coretrek-idp-sdk)

SDK to interact with the Coretrek IDP service with Laravel support.

Installation
------------

[](#installation)

First require the package through composer.

```
composer require coretrekas/idp
```

### Manually setup the sdk

[](#manually-setup-the-sdk)

Generate or create a token instance based on your credentials.

```
$token = \Coretrek\Idp\Token::make('https://idp-server.com', 'client_id', 'client_secret', ['*']);

// Or...

$token = new \Coretrek\Idp\Token('Bearer', 'ACCESS-TOKEN', 10000);

// Properties.
$token->type;
$token->accessToken;
$token->expiresIn;

$token->toArray();

// Returns:
// [
//     'token_type' => 'Bearer',
//     'expires_in' => 10000,
//     'access_token' => 'ACCESS-TOKEN',
// ]
```

You should store the token in your application to prevent it from beeing generate each time. The token is valid for the amount of seconds defined in `expires_in` part of the token. The `toArray()` or `toJson()` method can help with storing the token.

When you have a valid token instance you can instantiate the sdk.

```
$sdk = new \Coretrek\Idp\Sdk($token, 'https://idp-server.com', 'nb');
```

### Setup Sdk with laravel

[](#setup-sdk-with-laravel)

With laravel the service provider will automatically be found by the framework. It will also automatically take care of storing the token and refreshing it when needed by the cache driver of your choice.

Usage
-----

[](#usage)

### Users

[](#users)

List all users.

```
// Plain sdk
$sdk->users()->list();
$sdk->users()->list($perPage = 25);
$sdk->users()->list($filters = ['first_name' => 'John']);
$sdk->users()->list($perPage = 25, $filters = ['first_name' => 'John']);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->list();
```

Get a single user.

```
// Plain sdk
$sdk->users()->show('986b24bb-655a-4fc5-9608-8a8aba83b2dd');
$sdk->users()->show('986b24bb-655a-4fc5-9608-8a8aba83b2dd', $includes = ['groups']);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->show('986b24bb-655a-4fc5-9608-8a8aba83b2dd');
```

Create a new user.

```
// Plain sdk
$sdk->users()->create([
    'first_name' => 'John',
    'last_name' => 'Doe',
    'email' => 'john@example.com',
    'mobile' => '+4795916561',
    'password' => 'Password1',
    'locale' => 'nb',
    'email_verified_at' => '2023-01-01 10:00:00',
    'two_factor_secret' => 'abc123',
    'two_factor_recovery_codes' => 'abc123 acd 321',
    'meta' => [
        'foo' => 'bar',
    ],
]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->create();
```

Validate a new user without creating it.

```
// Plain sdk
$sdk->users()->onlyValidate()->create([
    'first_name' => 'John',
    'last_name' => 'Doe',
    'email' => 'john@example.com',
    'mobile' => '+4795916561',
    'password' => 'Password1',
    'locale' => 'nb',
    'email_verified_at' => '2023-01-01 10:00:00',
    'two_factor_secret' => 'abc123',
    'two_factor_recovery_codes' => 'abc123 acd 321',
    'meta' => [
        'foo' => 'bar',
    ],
]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->onlyValidate()->create();
```

Update user.

```
// Plain sdk
$sdk->users()->update('986b24bb-655a-4fc5-9608-8a8aba83b2dd', [
    'first_name' => 'John',
    'last_name' => 'Doe',
    'email' => 'john@example.com',
    'mobile' => '+4795916561',
    'password' => 'Password1',
    'locale' => 'nb',
    'email_verified_at' => '2023-01-01 10:00:00',
    'two_factor_secret' => 'abc123',
    'two_factor_recovery_codes' => 'abc123 acd 321',
    'meta' => [
        'foo' => 'bar',
    ],
]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->update();
```

Validate an update request for a given user.

```
// Plain sdk
$sdk->users()->onlyValidate()->update('986b24bb-655a-4fc5-9608-8a8aba83b2dd', [
    'first_name' => 'John',
    'last_name' => 'Doe',
    'email' => 'john@example.com',
    'mobile' => '+4795916561',
    'password' => 'Password1',
    'locale' => 'nb',
    'email_verified_at' => '2023-01-01 10:00:00',
    'two_factor_secret' => 'abc123',
    'two_factor_recovery_codes' => 'abc123 acd 321',
    'meta' => [
        'foo' => 'bar',
    ],
]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->onlyValidate()->update();
```

Delete a user.

```
// Plain sdk
$sdk->users()->delete('986b24bb-655a-4fc5-9608-8a8aba83b2dd');

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->delete('986b24bb-655a-4fc5-9608-8a8aba83b2dd');
```

### Groups

[](#groups)

List all groups.

```
// Plain sdk
$sdk->groups()->list();
$sdk->groups()->list($perPage = 25);
$sdk->groups()->list($filters = ['identifier' => 123]);
$sdk->groups()->list($perPage = 25, $filters = ['identifier' => 123]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::groups()->list();
```

Get a single group.

```
// Plain sdk
$sdk->groups()->show('986b24bb-655a-4fc5-9608-8a8aba83b2dd');
$sdk->groups()->show('986b24bb-655a-4fc5-9608-8a8aba83b2dd', $includes = ['users']);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::groups()->show('986b24bb-655a-4fc5-9608-8a8aba83b2dd');
```

Create a new group.

```
// Plain sdk
$sdk->groups()->create([
    'name' => 'Group A',
    'description' => 'Description of the group A',
    'identifier' => '000000000',
    'meta' => [
        'foo' => 'bar',
    ],
]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::groups()->create();
```

Only validate a set of group attributes without creating the group.

```
// Plain sdk
$sdk->groups()->onlyValidate()->create([
    'name' => 'Group A',
    'description' => 'Description of the group A',
    'identifier' => '000000000',
    'meta' => [
        'foo' => 'bar',
    ],
]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::groups()->onlyValidate()->create();
```

Update group.

```
// Plain sdk
$sdk->users()->update('986b24bb-655a-4fc5-9608-8a8aba83b2dd', [
    'name' => 'Group A',
    'description' => 'Description of the group A',
    'identifier' => '000000000',
    'meta' => [
        'foo' => 'bar',
    ],
]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->update();
```

Only validate group attributes without updating it.

```
// Plain sdk
$sdk->users()->onlyValidate()->update('986b24bb-655a-4fc5-9608-8a8aba83b2dd', [
    'name' => 'Group A',
    'description' => 'Description of the group A',
    'identifier' => '000000000',
    'meta' => [
        'foo' => 'bar',
    ],
]);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::users()->onlyValidate()->update();
```

Delete a group.

```
// Plain sdk
$sdk->groups()->delete('986b24bb-655a-4fc5-9608-8a8aba83b2dd');

// Laravel facade
\Coretrek\Idp\Facades\Sdk::groups()->delete('986b24bb-655a-4fc5-9608-8a8aba83b2dd');
```

### Group and user relation

[](#group-and-user-relation)

Add a user to the group

```
// Plain sdk
$sdk->groups()->addUser('986b24bb-655a-4fc5-9608-8a8aba83b2dd', '8a8aba83b2dd-655a-4fc5-9608-986b24bb', $meta = ['foo' => 'bar']);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::groups()->addUser('986b24bb-655a-4fc5-9608-8a8aba83b2dd', '8a8aba83b2dd-655a-4fc5-9608-986b24bb', $meta = ['foo' => 'bar']);
```

Update user meta in a group

```
// Plain sdk
$sdk->groups()->updateUser('986b24bb-655a-4fc5-9608-8a8aba83b2dd', '8a8aba83b2dd-655a-4fc5-9608-986b24bb', $meta = ['foo' => 'bar']);

// Laravel facade
\Coretrek\Idp\Facades\Sdk::groups()->updateUser('986b24bb-655a-4fc5-9608-8a8aba83b2dd', '8a8aba83b2dd-655a-4fc5-9608-986b24bb', $meta = ['foo' => 'bar']);
```

Remove user from a group.

```
// Plain sdk
$sdk->groups()->removeUser('986b24bb-655a-4fc5-9608-8a8aba83b2dd', '8a8aba83b2dd-655a-4fc5-9608-986b24bb');

// Laravel facade
\Coretrek\Idp\Facades\Sdk::groups()->removeUser('986b24bb-655a-4fc5-9608-8a8aba83b2dd', '8a8aba83b2dd-655a-4fc5-9608-986b24bb');
```

### Misc

[](#misc)

When using endpoints with pagination the api will return the necessary url to get the following results. In these cases we provide a `get` method on the sdk.

```
// Plain sdk
$sdk->get('https://idp-server.com/api/users?per_page=25&page=2');

// Laravel facade
\Coretrek\Idp\Facades\Sdk::get('https://idp-server.com/api/users?per_page=25&page=2');
```

Laravel Socialite support
-------------------------

[](#laravel-socialite-support)

This package include a socialite provider for authenticating users. Remember to update the service config to make use of it.

```
// /config/services.php
[
    //...
    'coretrek' => [
        'client_id' => '986b2415-d423-447d-8d32-e83ee78d7d66',
        'client_secret' => 'SsEeArd2b8ILJ1TJmDfDyX24PNx6yB6sY86twhO4',
        'redirect' => 'http://coretrek-idp-client.test/auth/callback',
    ]
]
```

```
use Laravel\Socialite\Facades\Socialite;

Route::get('/auth/redirect', function () {
    return Socialite::driver('coretrek')->redirect();
});

Route::get('/auth/callback', function () {
    $user = Socialite::driver('coretrek')->user();

    // $user->token
});
```

Testing
-------

[](#testing)

You can run the tests with:

```
./vendor/bin/phpunit
```

### Changelog

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.

Security
--------

[](#security)

If you discover any security related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Tommy Leirvik](https://github.com/leitom)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance38

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~55 days

Recently: every ~112 days

Total

13

Last Release

531d ago

PHP version history (2 changes)v1.0.0PHP ^8.1.0

v1.1.0PHP ^8.2.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/29a951c4d5299e1375ea57b5d0174981352c2664df175cb4a074a3c0f87128a0?d=identicon)[leitom](/maintainers/leitom)

---

Top Contributors

[![leitom](https://avatars.githubusercontent.com/u/222862?v=4)](https://github.com/leitom "leitom (4 commits)")

---

Tags

sdkidpcoretrek

###  Code Quality

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/coretrekas-idp/health.svg)

```
[![Health](https://phpackages.com/badges/coretrekas-idp/health.svg)](https://phpackages.com/packages/coretrekas-idp)
```

###  Alternatives

[resend/resend-laravel

Resend for Laravel

1191.4M6](/packages/resend-resend-laravel)[simplestats-io/laravel-client

Client for SimpleStats!

4515.5k](/packages/simplestats-io-laravel-client)[jasara/php-amzn-selling-partner-api

A fluent interface for Amazon's Selling Partner API in PHP

1344.8k1](/packages/jasara-php-amzn-selling-partner-api)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
