seablast / auth
No-password authentication and authorisation library for Seablast for PHP
Requires
- php: ^7.2 || ^8.0
- nette/utils: ^2.4.8 || ^3.2.2
- robmorgan/phinx: ^0.10.6 || ^0.12.3
- seablast/interfaces: ^0.1
- symfony/mailer: ^4.4.49 || ^5 || ^6 || ^7
- symfony/security-csrf: ^4.4.37 || ^5 || ^6 || ^7
- tracy/tracy: ^2.4.10
- webmozart/assert: ^1.9.1
Requires (Dev)
- phpunit/phpunit: ^4 || ^5 || ^6 || ^7 || ^8 || ^9 || ^10
- seablast/seablast: ^0.2.3.4
This package is auto-updated.
Last update: 2024-11-10 10:15:17 UTC
README
A no-password authentication and authorization extension for Seablast for PHP apps. This extension facilitates secure user verification and efficient access control.
Optionally, Seablast\Auth
integrates with the HybridAuth library to support social authentication, allowing seamless sign-in through various social media platforms.
Integrable via Composer, it activates only when required, equipping your app with essential security features effortlessly.
If your Seablast-based application necessitates user authentication or resource authorization, incorporating Seablast\Auth
will equip it with these capabilities instantly.
(For applications that do not require these features, Seablast\Auth
can simple be not included to maintain a lighter application footprint.)
Usage
When just getting the identity of a logged-in user is needed:
// Instantiate the IdentityManager class with `\mysqli` $identity = new IdentityManager($this->configuration->dbms()); // If prefix is used, inject it $identity->setTablePrefix($this->configuration->dbmsTablePrefix());
To create the expected database table structure, just add the seablast/auth migration path to the phinx.php configuration, e.g.
'paths' => [ 'migrations' => [ '%%PHINX_CONFIG_DIR%%/db/migrations', '%%PHINX_CONFIG_DIR%%/../vendor/seablast/auth/conf/db/migrations', ], 'seeds' => '%%PHINX_CONFIG_DIR%%/db/seeds' ],
Routing
/user
is expected, so configure it within your conf/app.conf.php
like this:
->setArrayArrayString( SeablastConstant::APP_MAPPING, '/user', [ 'template' => 'user', // your latte template including login-form.latter 'model' => '\Seablast\Auth\UserModel', ] )
View
\Seablast\Auth\UserModel
returns arguments ($configuration, $csrfToken, $message, $showLogin, $showLogout) for the user.latte template:
{include '../vendor/seablast/auth/views/login-form.latte'}
Testing
Run ./test.sh for essential PHPUnit tests:
- create token and use it,
- check its disapperance as it's valid only once,
- invalid emails is not accepted,
- SQL injection attempts is not accepted.
User management
- user MUST have one role (admin, content manager, ordinary user)
- user MAY belong to various groups (based on subscription tariff, a promotion, etc.)