leur accès serait de toute façon refusée // => mais bon, c'est au cas où on aurait un jour l'idée d'ajouter ces actions (bien qu'elles n'aient pas de sens) //foreach (['add', 'index', 'find', 'delete'] as $action) $this->setAuthorizationsForAction($action, -1); // Donc, on préfère plutôt supprimer ces actions par défaut : foreach (['add', 'index', 'find', 'delete'] as $action) unset($this->is_authorized_action[$action]); // Actions autorisées seulement à superadmin foreach (['view', 'edit', 'debugOn', 'debugOff'] as $action) $this->setAuthorizationsForAction($action, -1, ['super'=>0]); } /** * * @param * $user * @return boolean Give authorization for configuration */ //public function isAuthorized($user) /* public function isAuthorized($user, $action = null, $id=null, $role=null, $userCname=null) { $this->myDebug("step AVANT 1: ConfigurationsController.isAuthorized(user)"); $this->myDebug("user is:"); $this->myDebug($user); // $configuration = $this->confLabinvent; // $role = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first()['role']; $action = $this->request->getAttribute('params')['action']; $role = $this->getUserRole($user); // TOUS // if ($action == 'view') return true; // Super-Admin peut accéder à chaque action // if ($role == 'Super Administrateur') return true; // return false; return parent::isAuthorized($user); } */ /** * * * !!! ATTENTION !!! * * Nommer la variable configuration transmise à la vue : configurationObj */ /** * 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) { $configurationObj = $this->Configurations->get($id, [ 'contain' => [] ]); $this->set('configurationObj', $configurationObj); $this->set('_serialize', [ 'configurationObj' ]); } /** * 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) { $configurationObj = $this->Configurations->get($id, [ 'contain' => [] ]); if ($this->request->is([ 'patch', 'post', 'put' ])) { $configurationObj = $this->Configurations->patchEntity($configurationObj, $this->request->getData()); // le $this->request->getData() et peut-être déprécié, mais osef on veut TOUT le tableau data if ($this->Configurations->save($configurationObj)) { $this->Flash->success(__('La configuration a bien été sauvegardée.')); // On reload la configuration $this->confLabinvent = TableRegistry::get('Configurations')->find() ->where([ 'id =' => 1 ]) ->first(); if ($configurationObj->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ée.')); } } // 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 = $configurationObj->get('ldap_used'); if ($ldap !== null) { if ($ldap) { $disp = 'display:block'; } else { $disp = 'display:none'; } } $this->set(compact('configurationObj', 'disp')); $this->set('_serialize', [ 'configurationObj' ]); } /** * 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' ]); } }