Commit 40f8201d authored by THEO GUILLON's avatar THEO GUILLON

Merge branch '316-verifier-ce-qu-il-ce-passe-quand-on-supprimer-un-utilisateur-4' into '1.1.1'

Resolve "Vérifier ce qu'il ce passe quand on supprimer un utilisateur"

See merge request web-DPO/web-DPO!293
parents 08519ac0 3ea4901d
......@@ -13,7 +13,9 @@ Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/
- Date de l'année en cours dans le footer
### Corrections
- Lors de suppressions d'un utilisateur, les traitements ne sont plus supprimés. Quand un traitement n'est pas encore au registre, il est attribué au DPO
- Lors de suppressions d'un utilisateur, les traitements ne sont plus supprimés. Quand un traitement n'est pas encore au
registre, il est attribué au DPO.
- Acceptation des adresses e-mail avec des zéros dans l'adresse.
### Suppressions
......
......@@ -91,7 +91,7 @@ define('FORMAT_DATE_HEURE', '%e-%m-%Y à %H:%M');
define('REGEXP_ALPHA_FR', '/^[a-zA-Z\-ÂÀâàÇçÉÊÈËéêèëÎÏîïÔÖôöÛÙûù ]*$/i');
//Validation champs email
define('REGEXP_EMAIL_FR', '/^[a-zA-Z1-9\-@.]*$/i');
define('REGEXP_EMAIL_FR', '/^[a-zA-Z0-9\-@.]*$/i');
Configure::write('logoAcceptedTypes', [
'image/png', // .png
......
......@@ -699,56 +699,97 @@ class UsersController extends AppController {
throw new NotFoundException('User invalide');
}
// On check que l'utilisateur qui va être supprimer n'est pas DPO dans une entité
$userIsDpo = $this->Organisation->find('count', [
'conditions' => [
'dpo' => $id
]
]);
if ($id != 1 && $userIsDpo == 0) {
/**
* Si l'utilisateur n'est pas le premier utilisateur (superadmin) et que l'utilisateur en question n'est
* DPO d'une entité alors on peux le supprimer
**/
if ($id != 1 && $userIsDpo == false) {
$success = true;
$this->User->begin();
$userFiches = $this->Fiche->find('all', [
$query = [
'joins' => [
$this->Fiche->join(
'EtatFiche',
[
'type' => 'INNER',
'conditions' => [
'EtatFiche.actif' => true
]
]
),
$this->Fiche->join(
'Organisation',
[
'type' => 'INNER'
]
)
],
'conditions' => [
'user_id' => $id
'OR' => [
[
'Fiche.user_id' => $id,
],
[
'EtatFiche.user_id' => $id
]
]
],
'fields' => [
'id',
'user_id',
'organisation_id'
'Fiche.id',
'Fiche.user_id',
'EtatFiche.id',
'EtatFiche.fiche_id',
'EtatFiche.user_id',
'EtatFiche.previous_user_id',
'Organisation.id',
'Organisation.dpo'
],
'order' => [
'Fiche.id' => 'ASC'
]
]);
];
$userFiches = $this->Fiche->find('all', $query);
if (!empty($userFiches)) {
foreach($userFiches as $userFiche) {
$dpo = $this->getDpoId($userFiche['Fiche']['organisation_id']);
$success = $success && $this->Fiche->updateAll([
'user_id' => $dpo['Organisation']['dpo']
], [
'id' => $userFiche['Fiche']['id']
]) !== false;
$dpo = $userFiche['Organisation']['dpo'];
if ($success === true) {
$etatFiche = $this->EtatFiche->find('first', [
'conditions' => [
'fiche_id' => $userFiche['Fiche']['id'],
'user_id' => $id,
'actif' => true
],
'fields' => [
'id'
]
]);
if (!empty($etatFiche)) {
$success = $success && $this->EtatFiche->updateAll([
'user_id' => $dpo['Organisation']['dpo']
], [
'id' => $etatFiche['EtatFiche']['id']
if ($userFiche['Fiche']['user_id'] == $id) {
$success = $success && $this->Fiche->updateAll([
'user_id' => $dpo
], [
'id' => $userFiche['Fiche']['id']
]) !== false;
}
if ($success === true) {
if ($userFiche['EtatFiche']['user_id'] == $id ) {
$success = $success && $this->EtatFiche->updateAll([
'user_id' => $dpo
], [
'id' => $userFiche['EtatFiche']['id']
]) !== false;
}
if ($success === true) {
if ($userFiche['EtatFiche']['previous_user_id'] == $id) {
$success = $success && $this->EtatFiche->updateAll([
'previous_user_id' => $dpo
], [
'id' => $userFiche['EtatFiche']['id']
]) !== false;
}
}
}
}
}
}
......@@ -793,20 +834,6 @@ class UsersController extends AppController {
}
}
protected function getDpoId($organisation_id)
{
$dpo = $this->Organisation->find('first', [
'conditions' => [
'id' => $organisation_id
],
'fields' => [
'dpo'
]
]);
return($dpo);
}
/**
* @access public
* @return type
......
......@@ -36,7 +36,7 @@
</div>
<div class='tuilesStatutsNom'>
<?php
if (empty($value['User']['nom_complet'])) {
if (!empty($value['User']['nom_complet'])) {
echo __d('element', 'element.CreePar'); ?>
<b>
<?php echo $value['User']['nom_complet']; ?>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment