mindtwo / px-user-laravel
Package for handling PX User authentication for Laravel.
Requires
- php: ^8.0|^8.1|^8.2
- laravel/framework: ^9.0|^10.0|^11.0
- mindtwo/laravel-decorator: ^3.0
- mindtwo/two-tility: ^0.2
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/pint: ^1.2
- laravel/sanctum: ^3.2
- mockery/mockery: ^1.5
- orchestra/testbench: ^7.15|^8.0|^9.0
- pestphp/pest: ^1.23|^2.0
- pestphp/pest-plugin-laravel: ^1.3|^2.0
Suggests
- laravel/sanctum: The package provides a custom AuthToken Model which may be used by your application
- dev-master
- 2.7.2
- 2.7.1
- 2.7.0
- 2.6.0
- 2.5.2
- 2.5.1
- 2.5
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.2
- 2.3.1
- 2.3
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0
- 1.9.2.x-dev
- 1.9.1
- 1.9
- 1.8.1
- 1.8
- 1.7.1
- 1.7
- 1.6.1
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5
- 1.4
- 1.3.8
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3
- 1.2.1
- 1.2
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1
- 1.0
- 0.10.3
- 0.10.2
- 0.10.1
- 0.10
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.2
- 0.8.1
- 0.8.0
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7
- 0.6.1
- 0.6
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4
- 0.3.0
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2
- 0.1
- dev-feature/eip-client
- dev-update-2.0.1
- dev-wip
- dev-feature/cache-admin-request
- dev-feature/make-request-throw-by-default
This package is auto-updated.
Last update: 2024-10-19 12:27:57 UTC
README
Installation
You can install the package via composer:
composer require mindtwo/px-user-laravel
How to use?
Publish config
To publish the modules config file simply run
php artisan vendor:publish px-user
This publishes the px-user.php
config file to your projects config folder.
Configure the package
After that you should add the following keys to your .env-file:
- PX_USER_M2M
- PX_USER_TENANT
- PX_USER_DOMAIN
This keys will auto populate the respective config values.
Inside your configuration you will also find the keys:
stage
which will use your APP_ENV variable and px_user_cache_time
which
simply determines for how long the package is allowed to cache the user data in
minutes.
Prepare the User model
First you will need to add a column px_user_id
to your users table. This value is
used to retrieve the cached user data.
This is necessary since PX User only allows us to cache the user data and not to store them inside
a database, we rely on caching the data. This is done using Laravel Cache
facade.
To seemlessly integrate the data for use with your User
model the package provides
a trait.
use mindtwo\PxUserLaravel\Traits\UseUserDataCache; class User extends Model { use UseUserDataCache; }
This trait overrides the models getAttribute($name)
method so you can use $user->lastname
even though there is no lastname column inside your users table.
Login a user
To login a user the package provides an action called PxUserLoginAction
. Utilize this action
inside a controller to retrieve the user data from PX Users api.
An example for such a controller is given below:
use App\Http\Controllers\Controller; use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use mindtwo\PxUserLaravel\Actions\PxUserLoginAction; class LoginController extends Controller { public function __construct( protected PxUserLoginAction $pxUserLoginAction, ) { } /** * @param Request $request * @return \Illuminate\Http\JsonResponse * * @throws Exception */ public function login(Request $request) { // received token auth data via PX User widgets $tokenData = $request->only([ 'access_token', 'access_token_lifetime_minutes', 'access_token_expiration_utc', 'refresh_token', 'refresh_token_lifetime_minutes', 'refresh_token_expiration_utc', ]); $result = $this->pxUserLoginAction->execute($tokenData); return response()->json(['success' => $result]); } }
If the value for $result
is true you can now access authenticated user
via Laravel's Auth
facade.
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email info@mindtwo.de instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.