Commit ebc31592 authored by Christian BUFFIN's avatar Christian BUFFIN
Browse files

Retour à la révision 9b491eb7

parent 1bcf4930
......@@ -176,7 +176,7 @@ class CronShell extends Shell {
$cron['Cron']['last_execution_end_time'] = date('Y-m-d H:i:s');
$cron['Cron']['last_execution_report'] = $rappExecution;
if ($this->Cron->save($cron, ['atomic' => true])) {
if ($this->Cron->save($cron)) {
return $output;
} else {
return Cron::EXECUTION_STATUS_FAILED . "\n" . $output;
......
......@@ -31,18 +31,6 @@ class AdminsController extends AppController {
'User'
];
/**
* Vérification de l'accès aux actions en fonction du profil de l'utilisateur connecté.
*/
public function beforeFilter() {
parent::beforeFilter();
// Seul le rôle Superutilisateur peut accéder à ce contrôleur.
if ($this->Droits->isSu() !== true) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
}
/**
* Fonction index pour l'affichage de tous les "super-admin" de l'application.
*
......@@ -54,6 +42,10 @@ class AdminsController extends AppController {
* @version V1.1.0
*/
public function index() {
if (true !== $this->Droits->isSu()) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', __d('admin', 'admin.titreSuperAdministrateur'));
$query = [
......@@ -91,6 +83,10 @@ class AdminsController extends AppController {
* @version V1.0.0
*/
public function edit($id = null) {
if (true !== ($this->Droits->isSu())) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', __d('admin', 'admin.titreAjouterSuperAdmin'));
if ($this->request->is('post') || $this->request->is('put')) {
......@@ -186,32 +182,26 @@ class AdminsController extends AppController {
* @version V1.0.0
*/
public function delete($idAdmin, $idUser) {
// La même logique que dans la vue et que dans UsersController
if ($idUser == 1 || $idUser == $this->Session->read('Auth.User.id')) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
if ($this->Admin->exists($idAdmin) === false) {
throw new NotFoundException();
}
$success = true;
$this->Admin->begin();
$success = $success && false !== $this->Admin->delete($idAdmin);
if ($this->Admin->exists($idAdmin)) {
$success = true;
$this->Admin->begin();
if ($success == true) {
$success = $success && false !== $this->User->delete($idUser);
}
$success = $success && false !== $this->Admin->delete($idAdmin);
if ($success == true) {
$success = $success && false !== $this->User->delete($idUser);
}
if ($success == true) {
$this->Admin->commit();
$this->Session->setFlash(__d('admin', 'admin.flashsuccessPrivilegeRetire'), 'flashsuccess');
if ($success == true) {
$this->Admin->commit();
$this->Session->setFlash(__d('admin', 'admin.flashsuccessPrivilegeRetire'), 'flashsuccess');
} else {
$this->EtatFiche->rollback();
$this->Session->setFlash(__d('default', 'default.flasherrorEnregistrementErreur'), 'flasherror');
}
} else {
$this->EtatFiche->rollback();
$this->Session->setFlash(__d('default', 'default.flasherrorEnregistrementErreur'), 'flasherror');
$this->Session->setFlash(__d('admin', 'admin.flasherrorUserInexistant'), 'flasherror');
}
$this->redirect([
'controller' => 'admins',
'action' => 'index'
......@@ -223,6 +213,10 @@ class AdminsController extends AppController {
*/
public function changeViewLogin()
{
if (true !== ($this->Droits->isSu())) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', "Personnalisation de la page de connexion");
$configLoginExistante = '';
......
......@@ -337,7 +337,7 @@ class ArticlesController extends AppController {
'article_id' => $articleId,
'organisation_id' => $organisationId
]);
$success = $success && false !== $this->ArticleOrganisation->save(null, ['atomic' => false]);
$success = $success && false !== $this->ArticleOrganisation->save();
}
}
}
......
......@@ -27,23 +27,7 @@ class AuthentificationsController extends AppController {
public $uses = [
'Authentification'
];
/**
* 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();
$action = Inflector::underscore($this->request->params['action']);
if ($action === 'add') {
$this->Droits->assertAuthorized([ListeDroit::GESTION_MAINTENACE]);
} else {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
}
/**
* Permets l'ajout et la modification du connecteur LDAP
*
......@@ -53,6 +37,10 @@ class AuthentificationsController extends AppController {
* @version V1.0.0
*/
public function add() {
if (true !== $this->Droits->authorized(ListeDroit::GESTION_MAINTENACE)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', __d('authentification', 'authentification.titreAuthentification'));
$this->set('options', $this->Authentification->enums());
......@@ -75,10 +63,10 @@ class AuthentificationsController extends AppController {
$this->request->data['Authentification']['organisation_id'] = $this->Session->read('Organisation.id');
$this->Authentification->create($this->request->data);
$success = $success && false !== $this->Authentification->save(null, ['atomic' => false]);
$success = $success && false !== $this->Authentification->save();
if (!empty($file)) {
$success = $success && $this->Authentification->saveFile($file, $this->request->data['Authentification']['id']);
$saveFile = $this->Authentification->saveFile($file, $this->request->data['Authentification']['id']);
}
if ($success === true) {
......
......@@ -32,20 +32,12 @@ class ChecksController extends AppController {
'className' => 'LibricielChecks.LibricielChecks'
]
];
/**
* Vérification de l'accès aux actions en fonction du profil de l'utilisateur connecté.
*/
public function beforeFilter() {
parent::beforeFilter();
// Seul le rôle Superutilisateur peut accéder à ce contrôleur.
if ($this->Droits->isSu() !== true) {
public function index() {
if (true !== $this->Droits->authorized($this->Droits->isSu())) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
}
public function index() {
$this->set('title', __d('checks', 'checks.titreIndex'));
$results = WebdpoChecks::results();
......
......@@ -212,7 +212,7 @@ class DroitsComponent extends Component {
$infoFiche = $Fiche->find('first', [
'conditions' => ['id' => $id]
]);
$infoEtat = $EtatFiche->find('count', [
'conditions' => [
'fiche_id' => $id,
......@@ -238,15 +238,12 @@ class DroitsComponent extends Component {
return true;
}
}
$organisation_id = Hash::get($infoFiche, 'Fiche.organisation_id');
$user_id = Hash::get($infoFiche, 'Fiche.user_id');
if ($organisation_id == $this->Session->read('Organisation.id') && $user_id == $this->Session->read('Auth.User.id') && $infoEtat < 1) {
if ($infoFiche['Fiche']['organisation_id'] == $this->Session->read('Organisation.id') && $infoFiche['Fiche']['user_id'] == $this->Session->read('Auth.User.id') && $infoEtat < 1) {
return true;
}
if ($organisation_id == $this->Session->read('Organisation.id') && ($this->Session->read('Auth.User.id') == $this->Session->read('Organisation.dpo') || $this->isSu())) {
if ($infoFiche['Fiche']['organisation_id'] == $this->Session->read('Organisation.id') && ($this->Session->read('Auth.User.id') == $this->Session->read('Organisation.dpo') || $this->isSu())) {
return true;
}
......
......@@ -27,17 +27,7 @@ class ConnecteurLdapsController extends AppController {
public $uses = [
'ConnecteurLdap'
];
/**
* 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]);
}
/**
* Permets l'ajout et la modification du connecteur LDAP
*
......@@ -47,6 +37,10 @@ class ConnecteurLdapsController extends AppController {
* @version V1.0.0
*/
public function add() {
if (true !== $this->Droits->authorized(ListeDroit::GESTION_MAINTENACE)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', __d('connecteur_ldap', 'connecteur_ldap.titreLdap'));
$this->set('options', $this->ConnecteurLdap->enums());
......@@ -58,11 +52,17 @@ class ConnecteurLdapsController extends AppController {
'action' => 'index'
]);
}
$success = true;
$this->ConnecteurLdap->begin();
$this->request->data['ConnecteurLdap']['organisation_id'] = $this->Session->read('Organisation.id');
$this->ConnecteurLdap->create($this->request->data);
if (false !== $this->ConnecteurLdap->save(null, ['atomic' => true])) {
$success = $success && false !== $this->ConnecteurLdap->save();
if ($success === true) {
$this->ConnecteurLdap->commit();
$this->Session->setFlash(__d('connecteur_ldap', 'connecteur_ldap.flashsuccessConnecteurEnregistrer'), 'flashsuccess');
$this->redirect([
......@@ -70,6 +70,7 @@ class ConnecteurLdapsController extends AppController {
'action' => 'index'
]);
} else {
$this->ConnecteurLdap->rollback();
$this->Session->setFlash(__d('connecteur_ldap', 'connecteur_ldap.flasherrorErreurEnregistrementConnecteur'), 'flasherror');
}
} else {
......
......@@ -37,15 +37,6 @@ class ConnecteursController extends AppController {
],
];
/**
* 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]);
}
/**
* Permet l'affichage de la liste des connecteurs
......@@ -58,6 +49,10 @@ class ConnecteursController extends AppController {
* @version V1.0.0
*/
public function index() {
if (true !== $this->Droits->authorized(ListeDroit::GESTION_MAINTENACE)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', __d('connecteur', 'connecteur.titreGestionConnecteurs'));
$this->set('connecteurs', $this->connecteurs);
......
......@@ -29,17 +29,7 @@ class CronsController extends AppController {
public $uses = [
'Cron'
];
/**
* 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]);
}
/**
* Vue détaillée des crons (tâches planifiées)
*
......@@ -48,6 +38,10 @@ class CronsController extends AppController {
* @return type
*/
public function index() {
if (true !== $this->Droits->authorized(ListeDroit::GESTION_MAINTENACE)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', __d('cron', 'cron.titreListeTachesAutomatiques'));
$tachesAutos = $this->Cron->find('all', [
......@@ -70,7 +64,9 @@ class CronsController extends AppController {
* @version V1.0.0
*/
public function toggle($id, $state = null) {
$this->Droits->assertRecordAuthorized('Cron', $id);
if (true !== $this->Droits->authorized(ListeDroit::GESTION_MAINTENACE)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$success = true;
$this->Cron->begin();
......@@ -100,7 +96,9 @@ class CronsController extends AppController {
* @throws ForbiddenException
*/
public function deverrouiller($id) {
$this->Droits->assertRecordAuthorized('Cron', $id);
if (true !== $this->Droits->authorized(ListeDroit::GESTION_MAINTENACE)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$success = true;
$this->Cron->begin();
......@@ -132,7 +130,9 @@ class CronsController extends AppController {
* @return type
*/
public function planifier($id) {
$this->Droits->assertRecordAuthorized('Cron', $id);
if (true !== $this->Droits->authorized(ListeDroit::GESTION_MAINTENACE)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$tacheAuto = $this->Cron->find('first', [
'conditions' => [
......@@ -197,9 +197,7 @@ class CronsController extends AppController {
/**
* Fonction d'exécution du cron $id
*/
public function executer($id) {
$this->Droits->assertRecordAuthorized('Cron', $id);
function executer($id) {
$cron = $this->Cron->find('first', [
'conditions' => [
'id' => $id
......
......@@ -765,43 +765,43 @@ class EtatFichesController extends AppController
'controller' => 'pannel',
'action' => 'index'
]);
}
$success = true;
$this->EtatFiche->begin();
$this->requestAction([
'controller' => 'pannel',
'action' => 'supprimerLaNotif',
$id
]);
$success = $success && $this->EtatFiche->updateAll([
'actif' => false
], [
'fiche_id' => $id
]
) !== false;
} else {
$success = true;
$this->EtatFiche->begin();
if ($success == true) {
$this->EtatFiche->create([
'EtatFiche' => [
'fiche_id' => $id,
'etat_id' => 8,
'previous_user_id' => $this->Auth->user('id'),
'user_id' => $this->Auth->user('id')
]
$this->requestAction([
'controller' => 'pannel',
'action' => 'supprimerLaNotif',
$id
]);
$success = $success && false !== $this->EtatFiche->save(null, ['atomic' => false]);
if ($success == true) {
$this->Historique->create([
'Historique' => [
'content' => $this->Auth->user('prenom') . ' ' . $this->Auth->user('nom') . ' replace le traitement en rédaction',
$success = $success && $this->EtatFiche->updateAll([
'actif' => false
], [
'fiche_id' => $id
]
) !== false;
if ($success == true) {
$this->EtatFiche->create([
'EtatFiche' => [
'fiche_id' => $id,
'etat_id' => 8,
'previous_user_id' => $this->Auth->user('id'),
'user_id' => $this->Auth->user('id')
]
]);
$success = $success && false !== $this->Historique->save(null, ['atomic' => false]);
$success = $success && false !== $this->EtatFiche->save(null, ['atomic' => false]);
if ($success == true) {
$this->Historique->create([
'Historique' => [
'content' => $this->Auth->user('prenom') . ' ' . $this->Auth->user('nom') . ' replace le traitement en rédaction',
'fiche_id' => $id
]
]);
$success = $success && false !== $this->Historique->save(null, ['atomic' => false]);
}
}
}
......@@ -989,12 +989,11 @@ class EtatFichesController extends AppController
if ($success === true) {
$this->Fiche->id = $id;
$record = [
$success = $success && $this->Fiche->save([
'id' => $id,
'numero' => $numero,
'norme_id' => $norme
];
$success = $success && $this->Fiche->save($record, ['atomic' => false]) !== false;
]) !== false;
}
if ($success === true) {
......@@ -1058,11 +1057,10 @@ class EtatFichesController extends AppController
if ($success === true && $saveNumeroRegistre === true) {
$this->Organisation->id = $organisation_id;
$record = [
$success = $success && $this->Organisation->save([
'id' => $organisation_id,
'numeroregistre' => $numeroregistre
];
$success = $success && $this->Organisation->save($record, ['atomic' => false]) !== false;
]) !== false;
}
}
}
......@@ -1174,7 +1172,7 @@ class EtatFichesController extends AppController
'valeur' => $entite[$val],
'champ_name'=> $prefixChampName.$val
]);
$success = $success && false !== $this->Valeur->save(null, ['atomic' => false]);
$success = $success && false !== $this->Valeur->save();
}
}
}
......@@ -1219,7 +1217,7 @@ class EtatFichesController extends AppController
'valeur' => $userDPO[$val],
'champ_name'=> $prefixChampName.$champ_name
]);
$success = $success && false !== $this->Valeur->save(null, ['atomic' => false]);
$success = $success && false !== $this->Valeur->save();
}
}
}
......@@ -1246,13 +1244,13 @@ class EtatFichesController extends AppController
//On met EtatFiche.actif a false en fonction de l'id
$success = $success && $this->EtatFiche->updateAllIfFound(
[
'actif' => false
],
[
'id' => $this->request->data['EtatFiche']['etatFiche'],
]
) !== false;
[
'actif' => false
],
[
'id' => $this->request->data['EtatFiche']['etatFiche'],
]
) !== false;
if ($success === true) {
$messageHistorique = __d('historique', 'historique.envoieTraitementInitialiserAuRedacteur');
......@@ -1391,20 +1389,18 @@ class EtatFichesController extends AppController
}
$this->Valeur->id = $valeurFiche['Valeur']['id'];
$record = [
$success = $success && $this->Valeur->save([
'id' => $valeurFiche['Valeur']['id'],
'valeur' => $valeurChamp
];
$success = $success && $this->Valeur->save($record, ['atomic' => false]) !== false;
]) !== false;
}
}
$this->Fiche->id = $fiche_id;
$record = [
$success = $success && $this->Fiche->save([
'id' => $fiche_id,
'user_id' => $user['User']['id']
];
$success = $success && $this->Fiche->save($record, ['atomic' => false]) !== false;
]) !== false;
return ($success);
}
......
......@@ -66,32 +66,6 @@ class FichesController extends AppController
'WebdpoSoustraitance'
];
/**
* 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();
$action = Inflector::underscore($this->request->params['action']);
// Pour les autres que index et les download, aucune idée sur la façon de restreindre les droits
//$anyone = ['index', 'delete_file', 'delete_recording_file', 'download', 'download_file_extrait', 'download_file_traitement'];
if (in_array($action, ['add', 'archive']) === true) {
$this->Droits->assertAuthorized([ListeDroit::REDIGER_TRAITEMENT]);
$this->Droits->assertNotSu();
} elseif ($action === 'delete') {
$this->Droits->assertAuthorized([ListeDroit::REDIGER_TRAITEMENT]);
$this->Droits->assertNotSu();
} elseif ($action === 'dupliquer_traitement_in_organisations') {
$this->Droits->assertDpo();
} elseif ($action === 'edit') {
$this->Droits->assertNotSu();
} /*elseif (in_array($action, $anyone) === false) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}*/
}
/**
* La page d'accueil des fiches est celle du pannel général
*
......@@ -207,7 +181,7 @@ class FichesController extends AppController
if ($success == true) {
$this->Fiche->commit();
$this->_deleteFileDisk($this->request->data('urlFile'));
$this->deleteFileDisk($this->request->data('urlFile'));
$this->Session->setFlash(__d('fiche', 'fiche.flashsuccessTraitementSupprimer'), 'flashsuccess');
} else {
$this->Fiche->rollback();
......@@ -224,7 +198,7 @@ class FichesController extends AppController
* @created 19/10/2018
* @version V1.0.1
*/
protected function _deleteFileDisk($urlFile)
protected function deleteFileDisk($urlFile)
{
$targetFileDelete = CHEMIN_PIECE_JOINT . $urlFile;
......@@ -260,6 +234,10 @@ class FichesController extends AppController