find()->where(['id =' => 1])->first(); $role = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first()['role']; $action = $this->request->params['action']; if($this->userHasRole('Responsable')) return true; //Pour un "utilisateur" if (in_array($action, ['edit', 'delete'])) { $id = (int)$this->request->params['pass'][0]; if($this->isOwnedBy($id, $user['givenname'][0].' '.$user['sn'][0])) return true; } return parent::isAuthorized($user); } public function isOwnedBy($id, $nomCreateur) { return $this->Suivis->exists(['id' => $id, 'nom_createur' => $nomCreateur]); } /** * Index method * * @return \Cake\Network\Response|null */ public function index() { $this->paginate = [ 'contain' => ['Materiels', 'TypeSuivis'] ]; $suivis = $this->paginate($this->Suivis); $this->set('nbSuivis', $this->Suivis->find('all')->count()); $this->set(compact('suivis')); $this->set('_serialize', ['suivis']); } /** * View method * * @param string|null $id Suivi id. * @return \Cake\Network\Response|null * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function view($id = null) { $suivi = $this->Suivis->get($id, [ 'contain' => ['Materiels', 'Documents', 'TypeSuivis'] ]); $this->set('suivi', $suivi); $this->set('_serialize', ['suivi']); } /** * Add method * * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. */ public function add() { $suivi = $this->Suivis->newEntity(); if ($this->request->is('post')) { $suivi = $this->Suivis->patchEntity($suivi, $this->request->data); $suivi->panne_resolu = false; if ($this->Suivis->save($suivi)) { $this->Flash->success(__('Le suivi a bien été ajouté.')); return $this->redirect(['controller' => 'Materiels', 'action' => 'view', $this->passedArgs[0]]); } else { $this->Flash->error(__('Le suivi n\'a pas pu être ajouté.')); } } $materiels = $this->Suivis->Materiels->find('list'); $numMateriel = $this->Suivis->Materiels->find()->select('numero_laboratoire')->where(['id =' => $this->passedArgs[0]])->first()['numero_laboratoire']; $typeSuivis = $this->Suivis->TypeSuivis->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); $this->set(compact('suivi', 'materiels', 'typeSuivis', 'numMateriel')); $this->set('_serialize', ['suivi']); } /** * Edit method * * @param string|null $id Suivi 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) { $suivi = $this->Suivis->get($id, [ 'contain' => [] ]); if ($this->request->is(['patch', 'post', 'put'])) { $suivi = $this->Suivis->patchEntity($suivi, $this->request->data); if ($this->Suivis->save($suivi)) { $this->Flash->success(__('Le suivi a bien été édité.')); return $this->redirect(['action' => 'view', $id]); } else { $this->Flash->error(__('Le suivi n\'a pas pu être édité.')); } } $materiels = $this->Suivis->Materiels->find('list'); $numMateriel = $this->Suivis->Materiels->find()->select('numero_laboratoire')->where(['id =' => $suivi->get('materiel_id')])->first()['numero_laboratoire']; $typeSuivis = $this->Suivis->TypeSuivis->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); $this->set(compact('suivi', 'materiels', 'typeSuivis', 'numMateriel')); $this->set('_serialize', ['suivi']); } /** * Delete method * * @param string|null $id Suivi id. * @return \Cake\Network\Response|null Redirects to index. * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function delete($id = null) { $this->request->allowMethod(['post', 'delete']); $suivi = $this->Suivis->get($id); if ($this->Suivis->delete($suivi)) { $this->Flash->success(__('Le suivi a bien été supprimé.')); } else { $this->Flash->error(__('Le suivi n\'a pas pu être supprimé.')); } return $this->redirect(['action' => 'index']); } }