ConfigurationsController.php 4.62 KB
<?php
namespace App\Controller;

use App\Controller\AppController;
use Cake\ORM\TableRegistry;

/**
 * Configurations Controller
 *
 * @property \App\Model\Table\ConfigurationsTable $Configurations
 */
class ConfigurationsController extends AppController
{
	
	/**
	 * @param $user
	 *
	 * Give authorization for configuration
	 *
	 * @return boolean
	 */
	public function isAuthorized($user)
	{
		$configuration = $this->Configurations->find()->where(['id =' => 1])->first();
		$role = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first()['role'];
		$action = $this->request->params['action'];
		
    	// Super-Admin peut accéder à chaque action
    	if($role == 'Super Administrateur') return true;
		
		if($action == 'view') return true;
		
		// Par défaut refuser
		return false;
	}
	
    /**
     * View method
     *
     * @param string|null $id Configuration id.
     * @return \Cake\Network\Response|null
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
    public function view($id = null)
    {
        $configuration = $this->Configurations->get($id, [
            'contain' => []
        ]);
        
        $this->set('configuration', $configuration);
        $this->set('_serialize', ['configuration']);
    }


    /**
     * Edit method
     *
     * @param string|null $id Configuration id.
     * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise.
     * @throws \Cake\Network\Exception\NotFoundException When record not found.
     */
    public function edit($id = null)
    {
        $configuration = $this->Configurations->get($id, [
            'contain' => []
        ]);
        if ($this->request->is(['patch', 'post', 'put'])) {
            $configuration = $this->Configurations->patchEntity($configuration, $this->request->data);
            if ($this->Configurations->save($configuration)) {
                $this->Flash->success(__('La configuration a bien été sauvegardé.'));
                if($configuration->get('mode_install')) {
                	return $this->redirect(['controller' => 'pages', 'action' => 'home']);
                } else {
                	return $this->redirect(['action' => 'view', $id]);
                }
            } else {
                $this->Flash->error(__('La configuration n\'a pas pu être sauvegardé.'));
            }
        }
        
        // Gestion du lieu de stockage : soit on cache la DIV 'interne' et on affiche la DIV 'externe', soit on fait l'inverse (par defaut, interne)
        $disp = 'display:block';
        $ldap = $configuration->get('use_ldap');
        if (isset($ldap)) {
        	if ($ldap) {
        		$disp = 'display:block';
        	} else {
        		$disp = 'display:none';
        	}
        }
        
        $this->set(compact('configuration', 'disp'));
        $this->set('_serialize', ['configuration']);
        
    }

    
    /**
     * Activate debug mode
     *
     * @return \Cake\Network\Response|NULL
     */
    public function debugOn() {
    	$config = $this->Configurations->get('1')->set('mode_debug', 1);
    
    	if ($this->Configurations->save($config)) {
    		$this->Flash->success(__('Le mode debug a bien été démarré.'));
    	}
    
    	return $this->redirect(['controller' => 'pages', 'action' => 'tools']);
    }
    
    /**
     * Desactivate debug mode
     *
     * @return \Cake\Network\Response|NULL
     */
    public function debugOff() {
    	$config = $this->Configurations->get('1')->set('mode_debug', 0);
    
    	if ($this->Configurations->save($config)) {
    		$this->Flash->success(__('Le mode debug a bien été arrété.'));
    	}
    
    	return $this->redirect(['controller' => 'pages', 'action' => 'tools']);
    }
    
    
    /**
     * Activate install mode
     *
     * @return \Cake\Network\Response|NULL
     */
    public function installOn() {
    	$config = $this->Configurations->get('1')->set('mode_install', 1);
    	 
    	if ($this->Configurations->save($config)) {
    		$this->Flash->success(__('Le mode install a bien été démarré.'));
    	}
    	 
    	return $this->redirect(['controller' => 'pages', 'action' => 'home']);
    }
    
    /**
     * Desactivate install mode
     *
     * @return \Cake\Network\Response|NULL
     */
    public function installOff() {
        $config = $this->Configurations->get('1')->set('mode_install', 0);
    	 
    	if ($this->Configurations->save($config)) {
    		$this->Flash->success(__('Le mode install a bien été arrété.'));
    	}
    
    	return $this->redirect(['controller' => 'pages', 'action' => 'tools']);
    }
    
    
}