Powerful and extremely flexible authentication
- Framework agnostic:
Can work with any framework and any ORM / database layer. Implement two classes to integrate with your tools of choice and Auth will do the rest.
Learn more about Integration - Multiple Instances:
No statics or manky global scope. Every auth instance is totally self contained and can talk to entirely different backends and session handlers.
Learn more about Multiple Instances - Powerful Permissions:
Package based permissions allow you to define broad access control groups, and Overrides allow you to allow/disallow permissions on a per-user basis
Learn more about Permissions
Installation is as you'd expect, simply via a Composer requirement:
{
"require": {
"solution10/auth": "^1.2"
}
}
Note: Auth provides absolutely no storage capability (no database layer / access). You will need to provide this by implementing a StorageDelegate. This approach might seem awkward at first, but it allows you to take completely control over the logic of data-retrieval, whilst Auth handles the actual mechanics for you. Learn more about Integration
Your first step should be to complete everything in the Integration guide, but that doesn't make for a sexy demo, so we'll assume you've done that!
Let's pretend that I have fully implemented a StorageDelegate called "PDOStorageDelegate".
// The storage delegate handles reading/writing User data from
// your data store. That could be a database, REST service, whatever.
$storageDelegate = new PDOStorageDelegate();
// The session delegate handles maintaining state between
// page loads. Essentially, it's a front to the $_SESSION array,
// but if you do it different, you can re-implement!
$sessionDelegate = new Solution10\Auth\Driver\Session();
// Fire up a new instance called "MyAuth"
$auth = new Solution10\Auth\Auth('MyAuth', $sessionDelegate, $storageDelegate);
// Play with some API methods:
if ($auth->loggedIn()) {
echo 'Hi, '.$auth->user()->username.', welcome to the site!';
}
As you may have noticed, we give auth instances names. This gives us a way of referencing them later. More on that in the Instances chapter.
if ($auth->login($username, $password)) {
echo 'User was logged in!';
} else {
echo 'Please check your username and password.';
}
$auth->logout();
if ($auth->loggedIn())) {
echo "You're logged in!";
} else {
echo "You are not logged in :(";
}
$user = $auth->user();
This should be used with extreme caution, it will allow you to log a user in without their password. Probably only useful after registration.
// The $user object needs to be a class that implements the
// Solution10\Auth\UserRepresentation interface.
// It's a tiny interface, but it just gives us enough info to
// do our work.
$user = new UserRepresentationInstance();
$user->forceLogin($user);
You can read more about UserRepresentation in the Integration guide
- PHP >= 5.4
For a user guide: Check out the Wiki here on GitHub.