diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index c95ad9afe82..c7d59db13da 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -252,6 +252,7 @@ function restrictedArea($user, $features, $objectid=0, $tableandshare='', $featu $tmpreadok=1; foreach($feature2 as $subfeature) { + if ($subfeature == 'user' && $user->id == $objectid) continue; // A user can always read its own card if (! empty($subfeature) && empty($user->rights->$feature->$subfeature->lire) && empty($user->rights->$feature->$subfeature->read)) { $tmpreadok=0; } else if (empty($subfeature) && empty($user->rights->$feature->lire) && empty($user->rights->$feature->read)) { $tmpreadok=0; } else { $tmpreadok=1; break; } // Break is to bypass second test if the first is ok diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php index 2eb2ede000b..e504f5ed8e2 100644 --- a/htdocs/user/agenda_extsites.php +++ b/htdocs/user/agenda_extsites.php @@ -57,10 +57,7 @@ $object->getrights(); $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); -if ($user->id == $id) // A user can always read its own card -{ - $feature2=''; -} + $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); // If user is not user that read and no permission to read other users, we stop diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 8db719c62d4..c5c2e77a4b8 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -85,11 +85,8 @@ if ($id) $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2='user'; -if ($user->id == $id) { $feature2=''; $canreaduser=1; } // A user can always read its own card -if (! $canreaduser) { - $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); -} +$result = restrictedArea($user, 'user', $id, 'user&user', $feature2); if ($user->id <> $id && ! $canreaduser) accessforbidden(); diff --git a/htdocs/user/clicktodial.php b/htdocs/user/clicktodial.php index a6618f3a7c0..21342704524 100644 --- a/htdocs/user/clicktodial.php +++ b/htdocs/user/clicktodial.php @@ -35,10 +35,7 @@ $id=GETPOST('id','int'); $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); -if ($user->id == $id) // A user can always read its own card -{ - $feature2=''; -} + $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context diff --git a/htdocs/user/document.php b/htdocs/user/document.php index 6f7e27b13dd..13975dff97c 100644 --- a/htdocs/user/document.php +++ b/htdocs/user/document.php @@ -66,10 +66,9 @@ if ($id) $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2='user'; -if ($user->id == $id) { $feature2=''; $canreaduser=1; } // A user can always read its own card -if (!$canreaduser) { - $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); -} + +$result = restrictedArea($user, 'user', $id, 'user&user', $feature2); + if ($user->id <> $id && ! $canreaduser) accessforbidden(); // Get parameters diff --git a/htdocs/user/info.php b/htdocs/user/info.php index 5e1bfaddc4c..5936c36e2d2 100644 --- a/htdocs/user/info.php +++ b/htdocs/user/info.php @@ -43,10 +43,7 @@ if ($id > 0 || ! empty($ref)) $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); -if ($user->id == $id) // A user can always read its own card -{ - $feature2=''; -} + $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); // If user is not user that read and no permission to read other users, we stop diff --git a/htdocs/user/ldap.php b/htdocs/user/ldap.php index 45b575b9843..d120e7334b4 100644 --- a/htdocs/user/ldap.php +++ b/htdocs/user/ldap.php @@ -37,7 +37,7 @@ $contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'userldap'; $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); -if ($user->id == $id) $feature2=''; // A user can always read its own card + $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); $object = new User($db); diff --git a/htdocs/user/note.php b/htdocs/user/note.php index c4f657a29bc..3d2880b99a5 100644 --- a/htdocs/user/note.php +++ b/htdocs/user/note.php @@ -45,7 +45,7 @@ if (($object->id != $user->id) && (! $user->rights->user->user->lire)) accessfor $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); -if ($user->id == $id) $feature2=''; // A user can always read its own card + $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index 0e53db2c954..48e6674a031 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -49,11 +49,7 @@ if ($id) $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); -if ($user->id == $id) // A user can always read its own card -{ - $feature2=''; - $canreaduser=1; -} + $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); if ($user->id <> $id && ! $canreaduser) accessforbidden(); diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index 17666183319..c74178609aa 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -58,10 +58,9 @@ if (! empty($conf->global->MAIN_USE_ADVANCED_PERMS)) $socid=0; if (isset($user->societe_id) && $user->societe_id > 0) $socid = $user->societe_id; $feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); -if ($user->id == $id && (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->user->self_advance->readperms)) // A user can always read its own card if not advanced perms enabled, or if he has advanced perms +if ($user->id == $id && (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->user->self_advance->readperms))) // A user can always read its own card if not advanced perms enabled, or if he has advanced perms { - $feature2=''; - $canreaduser=1; + accessforbidden(); } $result = restrictedArea($user, 'user', $id, 'user&user', $feature2);