PHP code example of marcel-maqsood / session-auth-middleware

1. Go to this page and download the library: Download marcel-maqsood/session-auth-middleware library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

marcel-maqsood / session-auth-middleware example snippets


use MazeDEV\DatabaseConnector\PersistentPDO;
use MazeDEV\DatabaseConnector\PersistentPDOFactory;
use MazeDEV\SessionAuth\Repository\PDORepository;
use MazeDEV\SessionAuth\Repository\PDORepositoryFactory;
use Mezzio\Authentication\AuthenticationInterface;
use Mezzio\Authentication\Session\PhpSession;
use Mezzio\Authentication\UserRepositoryInterface;
use Mezzio\Session\SessionMiddleware;
use Mezzio\Session\SessionMiddlewareFactory;

return [
    'dependencies' => [
        'aliases' => [
            AuthenticationInterface::class => PhpSession::class,
            UserRepositoryInterface::class => PDORepository::class,
        ],
        'factories' => [
            PersistentPDO::class => PersistentPDOFactory::class,
            PDORepository::class => PDORepositoryFactory::class,
            SessionMiddleware::class => SessionMiddlewareFactory::class,
        ],
    ],
];

$app->pipe(ErrorHandler::class);
$app->pipe(ServerUrlMiddleware::class);
$app->pipe(SessionMiddleware::class);

$app->route('/admin/dashboard[/]', [
    MazeDEV\SessionAuth\SessionAuthMiddleware::class,
    App\Handler\AdminDashboardHandler::class,
], ['GET'], 'adminDashboard');

$app->pipe(UrlHelperMiddleware::class);
$app->pipe(SessionAuthMiddleware::class);

'loginHandling' => [
    'adminLogin' => [
        'name' => 'Admin',
        'destination' => 'adminDashboard',
        'resetDestination' => 'adminPasswordReset',
    ],
    'userLogin' => [
        'name' => 'Benutzer',
        'destination' => 'userDashboard',
        'resetDestination' => 'userPasswordReset',
    ],
],

$app->route('/admin/login[/]', [
    MazeDEV\SessionAuth\SessionAuthMiddleware::class,
    MazeDEV\SessionAuth\Handler\GlobalLoginHandler::class,
], ['GET', 'POST'], 'adminLogin');

$app->route('/admin/dashboard[/]', [
    MazeDEV\SessionAuth\SessionAuthMiddleware::class,
    App\Handler\AdminDashboardHandler::class,
], ['GET'], 'adminDashboard');

$app->route('/logout[/]', [
    MazeDEV\SessionAuth\Handler\LogoutHandler::class,
], ['GET', 'POST'], 'logout');

'no-auth-routes' => [
    'adminPasswordReset' => 'adminLogin',
    'userPasswordReset' => 'userLogin',
],

'authentication' => [
    'redirect' => '/',
    'username-forwarding' => true,
    'permission-forwarding' => false,
    'passwordResetOffset' => 2592000,
    'allowWildcard' => true,

    'username' => 'username',
    'password' => 'password',

    'repository' => [
        'table' => 'user',
        'fields' => [
            'identities' => [
                'username',
                'email',
            ],
            'password' => 'passwordhash',
        ],
        'disable-check' => true,

        'table_override' => [
            'user' => [
                'tableKey' => 'user',
                'display' => 'Benutzer',
                'loginAt' => 'userLogin',
            ],
            'admin' => [
                'tableKey' => 'admin',
                'display' => 'Admin',
                'loginAt' => 'adminLogin',
            ],
        ],
    ],

    'security' => [
        'algo' => 'sha256',
        'salt' => 'change-this-salt',
        'fields' => [
            'session' => 'sessionhash',
            'stamp' => 'sessionstart',
        ],
    ],
],

'session' => [
    'config' => [
        'cookie_lifetime' => 60 * 60,
        'gc_lifetime' => 60 * 60 * 24,
    ],
],

'tables' => [
    'user' => [
        'tableName' => 'users',
        'identifier' => 'loginId',
        'loginName' => 'username',
        'loginMail' => 'email',
        'disabled' => 'disabled',
        'hidden' => 'hidden',
        'resetHash' => 'forgothash',
        'resetValid' => 'forgotvalid',
    ],
    'user_settings' => [
        'tableName' => 'user_settings',
        'identifier' => 'settingId',
        'user_identifier' => 'loginId',
        'icon_path' => 'icon_path',
        'language' => 'language',
    ],
    'user_group_relation' => [
        'tableName' => 'user_has_groups',
        'identifier' => 'lhgId',
        'group_identifier' => 'groupId',
        'login_identifier' => 'loginId',
    ],
    'user_groups' => [
        'tableName' => 'user_groups',
        'identifier' => 'groupId',
        'name' => 'name',
        'hidden' => 'hidden',
    ],
    'user_permissions' => [
        'tableName' => 'user_permissions',
        'identifier' => 'permissionId',
        'name' => 'name',
        'value' => 'value',
        'noPermFallback' => 'noPermFallback',
        'allowBypass' => 'allowBypass',
        'hidden' => 'hidden',
    ],
    'user_group_permission_relation' => [
        'tableName' => 'user_group_has_permissions',
        'identifier' => 'ghpId',
        'permission_identifier' => 'permissionId',
        'group_identifier' => 'groupId',
    ],
],

'messages' => [
    'error' => [
        'session-detail-error' => 'Ihre Sitzung scheint fehlerhaft zu sein, bitte melden Sie sich erneut an.',
        'session-set-error' => 'Ihre Sitzung konnte nicht eingetragen werden, bitte probieren Sie es erneut.',
        'session-expired-error' => 'Ihre Sitzung ist ausgelaufen, bitte melden Sie sich erneut an.',
        'another-device-logon-error' => 'Ein anderes Gerät hat sich angemeldet.',
        'logon-

$user = MazeDEV\SessionAuth\SessionAuthMiddleware::$permissionManager::getUser();
$groups = MazeDEV\SessionAuth\SessionAuthMiddleware::$permissionManager->getGroups();
$hasPermission = MazeDEV\SessionAuth\SessionAuthMiddleware::$permissionManager->userHasPermission('adminDashboard');