piko / user
A lightweight user session manager to login/logout and retrieve user identity.
v2.0.1
2022-11-04 14:33 UTC
Requires
- php: >=7.1.0
- piko/core: ^2.2
Requires (Dev)
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
README
A lightweight user session manager to login/logout, check permissions and retrieve user identity between sessions.
Installation
It's recommended that you use Composer to install Piko User.
composer require piko/user
Usage
Basic exemple:
require 'vendor/autoload.php'; use Piko\User; use Piko\User\IdentityInterface; // Define first your user identity class class Identity implements IdentityInterface { private static $users = [ 1 => 'paul', 2 => 'pierre', ]; public $id; public $username; public static function findIdentity($id) { if (isset(static::$users[$id])) { $user = new static(); $user->id = $id; $user->username = static::$users[$id]; return $user; } return null; } public function getId() { return $this->id; } } $user = new User([ 'identityClass' => Identity::class, 'checkAccess' => function($id, $permission) { return $id == 1 && $permission == 'test'; } ]); // Login $user->login(Identity::findIdentity(1)); if (!$user->isGuest()) { echo $user->getIdentity()->username; // paul } if ($user->can('test')) { echo 'I can test'; } $user->logout(); if ($user->isGuest()) { var_dump($user->getIdentity()); // null echo 'Not Authenticated'; } if (!$user->can('test')) { echo 'I cannot test'; }
Advanced example: See UserTest.php