Skip to content

Anton-Am/phalcon-middleware

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AntonAm\Phalcon\Middleware

Middleware component for Phalcon MVC controllers

Latest Stable Version Total Downloads Build Status

Installing

Install using Composer:

composer require anton-am/phalcon-middleware

or add to your composer.json

"anton-am/phalcon-middleware": "^3.0.0"

You'll need to add the event to the dispatcher DI service:

use AntonAm\Phalcon\Middleware\Event;
use Phalcon\Events\Manager;
use Phalcon\Mvc\Dispatcher;

// ...

$di->set(
    "dispatcher",
    function () use ($di) {
            $eventsManager = new Manager();
            
            //Attach a listener
            $eventsManager->attach(
                'dispatch:beforeExecuteRoute',
                new Event()
            );

            $dispatcher = new Dispatcher();
            $dispatcher->setEventsManager($eventsManager);
            return $dispatcher;
    },
    true
);

Now, you can create middleware classes:

namespace Modules\Frontend\Middlewares;

use Phalcon\Mvc\User\Plugin;
use AntonAm\Phalcon\Middleware\MiddlewareInterface;

/**
 * Class CSRF
 *
 * @package Modules\Frontend\Middlewares
 */
class CSRF extends Plugin implements MiddlewareInterface
{
    /**
     * @param array $params
     * @return bool
     */
    public function handle(array $params = []): bool
    {
        if (!$this->security->checkToken()) {
            $this->flashSession->error('Wrong CSRF');
            $this->response->redirect($this->request->getHTTPReferer(), true)->send();
            return false;
        }

        return true;
    }

Example

Controller

class IndexController extends \Phalcon\Mvc\Controller
{
    /**
     * @Middleware("Modules\Frontend\Middlewares\MustBeLoggedIn")
     * @Middleware("Modules\Frontend\Middlewares\HasProject")
     * @Middleware("Modules\Frontend\Middlewares\MustBeInProjectAs", "Creator")
     * @Middleware("Modules\Frontend\Middlewares\CSRF")
     */
    public function indexAction()
    {
        // ...
    }
}

About

Middleware component for Phalcon

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 76.9%
  • Dockerfile 21.8%
  • Shell 1.3%