ConnecteurLdapsController.php 4.32 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<?php

/**
 * ConnecteurLdapsController
 *
 * web-DPO : Outil de gestion de vos traitements dans le cadre de la 
 * réglementation relative à la protection des données personnelles (RGPD)
 * 
 * Copyright (c) Libriciel SCOP (https://www.libriciel.fr/)
 *
 * Licensed under The CeCiLL V2 License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 * 
 * @copyright   Copyright (c) Libriciel SCOP (https://www.libriciel.fr/)
16
 * @link        https://www.libriciel.fr/web-dpo/
17 18 19 20 21 22 23 24 25 26 27 28 29
 * @since       web-DPO v1.0.0
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html CeCiLL V2 License
 * @version     v1.0.0
 * @package     App.Controller
 */

App::uses('ListeDroit', 'Model');

class ConnecteurLdapsController extends AppController {

    public $uses = [
        'ConnecteurLdap'
    ];
30 31 32 33 34 35 36 37 38 39 40

    /**
     * Vérification de l'accès aux actions en fonction du profil de l'utilisateur connecté.
     * Les vérifications de l'accès aux enregistrements se font dans les méthodes d'actions.
     */
    public function beforeFilter() {
        parent::beforeFilter();

        $this->Droits->assertAuthorized([ListeDroit::GESTION_MAINTENACE]);
    }

41 42 43 44 45 46 47 48
    /**
     * Permets l'ajout et la modification du connecteur LDAP
     * 
     * @author Théo GUILLON <theo.guillon@libriciel.coop>
     * @access public
     * @created 20/03/2018
     * @version V1.0.0
     */
49 50
    public function add()
    {
51 52 53 54 55 56 57 58 59 60 61
        $this->set('title', __d('connecteur_ldap', 'connecteur_ldap.titreLdap'));
        
        $this->set('options', $this->ConnecteurLdap->enums());
        
        if ($this->request->is('post') || $this->request->is('put')) {
            if ('Cancel' === Hash::get($this->request->data, 'submit')) {
                $this->redirect([
                    'controller' => 'connecteurs',
                    'action' => 'index'
                ]);
            }
62

63 64
            $success = true;
            $this->Service->begin();
65

66 67 68 69 70 71 72
            $data = $this->request->data;
            $data['ConnecteurLdap']['organisation_id'] = $this->Session->read('Organisation.id');

            $this->ConnecteurLdap->create($data);
            $success = $success && false !== $this->ConnecteurLdap->save(null, ['atomic' => false]);

            if ($success == true) {
73
                if (!empty($data['ConnecteurLdap']['certificat']['type']) && !empty($data['ConnecteurLdap']['id'])) {
74 75 76 77 78 79
                    $success = $this->ConnecteurLdap->saveFile($data['ConnecteurLdap']['certificat'], $data['ConnecteurLdap']['id']);
                }
            }

            if ($success == true) {
                $this->ConnecteurLdap->commit();
80 81 82 83 84 85 86
                $this->Session->setFlash(__d('connecteur_ldap', 'connecteur_ldap.flashsuccessConnecteurEnregistrer'), 'flashsuccess');
                
                $this->redirect([
                    'controller' => 'connecteurs',
                    'action' => 'index'
                ]);
            } else {
87
                $this->ConnecteurLdap->rollback();
88 89 90 91 92 93 94 95 96 97 98
                $this->Session->setFlash(__d('connecteur_ldap', 'connecteur_ldap.flasherrorErreurEnregistrementConnecteur'), 'flasherror');
            }
        } else {
            $query = [
                'conditions' => [
                    'organisation_id' => $this->Session->read('Organisation.id')
                ]
            ];
            $this->request->data = $this->ConnecteurLdap->find('first', $query);
        }
    }
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124

    public function deleteFile($id, $urlFile) {
        $this->autoRender = false;

        $this->ConnecteurLdap->begin();

        $cheminFile =  CHEMIN_CERTIFICATS . $urlFile;

        $this->ConnecteurLdap->id = $id;
        $record = [
            'certificat_url' => null,
            'certificat_name' => null
        ];
        $success = $this->ConnecteurLdap->save($record, ['atomic' => false]) !== false
            && unlink($cheminFile) === true;

        if ($success == true) {
            $this->ConnecteurLdap->commit();
            $this->Session->setFlash(__d('norme', 'norme.flashsuccessFichierSupprimer'), 'flashsuccess');
        } else {
            $this->ConnecteurLdap->rollback();
            $this->Session->setFlash(__d('norme', 'norme.flasherrorFichierSupprimer'), 'flasherror');
        }

        $this->redirect($this->Referers->get());
    }
125 126
    
}