AppController.php 2.8 KB
<?php
/**
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link      http://cakephp.org CakePHP(tm) Project
 * @since     0.2.9
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */
namespace App\Controller;

use Cake\Controller\Controller;
use Cake\Event\Event;

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @link http://book.cakephp.org/3.0/en/controllers.html#the-app-controller
 */
class AppController extends Controller
{

    /**
     * Initialization hook method.
     *
     * Use this method to add common initialization code like loading components.
     *
     * e.g. `$this->loadComponent('Security');`
     *
     * @return void
     */
    public function initialize()
    {
        parent::initialize();

        $this->loadComponent('RequestHandler');
        $this->loadComponent('Flash');
        $this->loadComponent('Auth', [
        		'authorize' => ['Controller'],
        		'loginRedirect' => [
        				'controller' => 'Pages',
        				'action' => 'home'
        		],
        		'logoutRedirect' => [
        				'controller' => 'Pages',
        				'action' => 'home',
        		]
        ]);
    }
    
    
    /**
     * @param $user
     * 
     * Give authorization in general
     * 
     * @return boolean
     */
    public function isAuthorized($user)
    {
    	// Super-Admin peuvent accéder à chaque action
    	if (isset($user['role']) && $user['role'] === 'Super Administrateur') {
    		return true;
    	}
    	//
    	if ($this->request->action === 'display') {
    		return true;
    	}
    	// Par défaut refuser
    	return false;
    }
    

    /**
     * {@inheritDoc}
     * @see \Cake\Controller\Controller::beforeFilter()
     */
    public function beforeFilter(Event $event)
    {
    	$this->Auth->allow(['display', 'add']);
    	$this->Auth->config('authError', "Désolé, vous n'êtes pas autorisés à accéder à cette zone.");
    }
    
    
    /**
     * Before render callback.
     *
     * @param \Cake\Event\Event $event The beforeRender event.
     * @return void
     */
    public function beforeRender(Event $event)
    {
        if (!array_key_exists('_serialize', $this->viewVars) &&
            in_array($this->response->type(), ['application/json', 'application/xml'])
        ) {
            $this->set('_serialize', true);
        }
        $this->set('username', $this->Auth->user('username'));
    }
}