This package is abandoned and no longer maintained. The author suggests using the rootwork/phalcon-extras package instead.

Phalcon Extras

0.3.0 2019-05-20 10:14 UTC

This package is auto-updated.

Last update: 2019-05-20 10:20:30 UTC


A growing collection of useful Phalcon classes


composer require rootwork/phalcon-extras:dev-master

Authorization Component

Uses Phalcon\Acl, see acl.example.php.

cp acl.example.php app/config/acl.php

The AuthComponent uses events for your custom logic after allowing or denying a session role.

 * Setup the auth component
$di->setShared('auth', function () {
    /** @var \Phalcon\Config $aclConfig */
    $aclConfig  = include APP_PATH . '/config/acl.php';
    $auth       = new AuthComponent($aclConfig->toArray());

    $eventsManager = new EventsManager();

    $eventsManager->attach('auth:afterAllowed', function (Event $event, AuthComponent $auth) {
        if ($auth->persistent->role == 'Guest') {
            return true; // If the ACL allows a Guest at this route, no additional steps

        // Load authorized user from the DB
        if ($user = User::findFirstById($auth->persistent->userId)) {
            $auth->di->setShared('user', $user);
            return true;

        return false;

    $eventsManager->attach('auth:afterDenied', function (Event $event, AuthComponent $auth) {
        // Redirect unathorized users
        return false;


    return $auth;

 * Register a dispatcher
$di->setShared('dispatcher', function () use ($config, $di) {
    $eventsManager = new EventsManager();
    $eventsManager->attach('dispatch:beforeExecuteRoute', $di->get('auth'));

    $dispatcher = new Dispatcher();

    return $dispatcher;

 * Make the current user available to the app
$di->setShared('user', function () {
    return null;

Create an authorized session

In your login code, you must set the user role. You can optionally persist other auth data.

// In a login action... 
$auth = $this->getDI()->get('auth');

// Optional persisted auth data
$auth->persistent->userId   = $user->id;
$auth->persistent->name     = $user->name;


  • Document usage with Micro app