ramosisw / cakephp-jwt-claims
CakePHP plugin for read claims on jwt token
Installs: 11
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:cakephp-component
Requires
- admad/cakephp-jwt-auth: *
- cakephp/cakephp: ^3.5
- firebase/php-jwt: ^5.0
Requires (Dev)
- cakephp/chronos: ^1.1
- phpunit/phpunit: ^5.7.14|^6.0
This package is not auto-updated.
Last update: 2025-03-21 10:34:19 UTC
README
CakePHP 3.6+ Component to read claims of JWT on Authorization
Installation
composer require ramosisw/cakephp-jwt-claims
Configuration:
Setup ClaimsComponent
:
// In your controller, for e.g. src/Controller/AppController.php public function initialize() { parent::initialize(); //Config JWT with ADmad Plugin for more info see https://github.com/ADmad/cakephp-jwt-auth $this->loadComponent('Auth', [/*..*/]); //Load Claims component $this->loadComponent('RamosISW/Jwt.Claims',[ 'claims_key' => 'data', //name where is claims on JWT Payload //Wath claims be read 'data' => [ 'user_id', 'user_email', 'user_name' ] ]); }
Working
To read claims on route that user can access
public function index(){ //read user email sends on token $this->log($this->Claims->user_email); //set claims to use on view $this->set('Claims', $this->Claims); }
Token Generation
You can use \Firebase\JWT\JWT::encode()
of the firebase/php-jwt
lib, which this plugin depends on, to generate tokens.
The payload should have the "sub" (subject) claim whos value is used to query the Users model and find record matching the "id" field.
Generate Claims
public function generateToken($user){ $token = \Firebase\JWT\JWT::encode([ 'sub' => $user['id'], 'exp' => time() + 604800, 'data' => [ 'user_id' => $user['id'], 'user_email' => $user['email'], 'user_name' => $user['username'] ] ], \Cake\Utility\Security::getSalt()); return $token; }