From 30d66bcdd84239f06c55faf5bf4d4e7ed0d31549 Mon Sep 17 00:00:00 2001 From: Pierre Ardoin <32256817+mapiolca@users.noreply.github.com> Date: Wed, 1 Oct 2025 17:49:35 +0200 Subject: [PATCH] UIUX adds a new permission that restricts the user to seeing their salaries and only those. (#35293) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update admin.lang Add translate "Permission511=Lire les salaires et leur paiement (les vôtres et ceux de vos subordonnées)" and move old 511->512 and 512->513. * Update modSalaries.class.php Add the new permission 'Read employee salaries and payments (yours only)' * Update list.php add the new permission filter "read child" * Update payments.php Add the new permission "readchild" * Update index.php Add support off new permission * Update index.php * Update index.php * Update index.php * Update list.php * Update list.php * Update list.php * Update payments.php --- htdocs/core/modules/modSalaries.class.php | 12 ++++++++++-- htdocs/langs/fr_FR/admin.lang | 5 +++-- htdocs/salaries/list.php | 4 ++++ htdocs/salaries/payments.php | 5 ++++- htdocs/salaries/stats/index.php | 15 +++++++++++---- 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/htdocs/core/modules/modSalaries.class.php b/htdocs/core/modules/modSalaries.class.php index d82d9b4f048..6eb7860e07b 100644 --- a/htdocs/core/modules/modSalaries.class.php +++ b/htdocs/core/modules/modSalaries.class.php @@ -98,14 +98,22 @@ class modSalaries extends DolibarrModules $r++; $this->rights[$r][0] = 511; - $this->rights[$r][1] = 'Read employee salaries and payments (yours and your subordinates)'; + $this->rights[$r][1] = 'Read employee salaries and payments (yours only)'; $this->rights[$r][2] = 'r'; $this->rights[$r][3] = 0; $this->rights[$r][4] = 'read'; $this->rights[$r][5] = ''; $r++; - $this->rights[$r][0] = 512; + $this->rights[$r][0] = 511; + $this->rights[$r][1] = 'Read employee salaries and payments (yours and your subordinates)'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'readchild'; + $this->rights[$r][5] = ''; + + $r++; + $this->rights[$r][0] = 513; $this->rights[$r][1] = 'Create/modify payments of empoyee salaries'; $this->rights[$r][2] = 'w'; $this->rights[$r][3] = 0; diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 3ce725f46c2..1d254809ebb 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -920,8 +920,9 @@ Permission402=Créer/modifier les avoirs Permission403=Valider les avoirs Permission404=Supprimer les avoirs Permission431=Utilisez la barre de débogage -Permission511=Lire les salaires et leur paiement (les vôtres et ceux de vos subordonnées) -Permission512=Créer/modifier les salaires et leur paiement +Permission511=Lire les salaires et leur paiement (les vôtres seulement) +Permission512=Lire les salaires et leur paiement (les vôtres et ceux de vos subordonnées) +Permission513=Créer/modifier les salaires et leur paiement Permission514=Supprimer les salaires et leur paiement Permission517=Lire les salaires et leur paiement de tout le monde Permission519=Exporter les salaires diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index d46a59b26fc..68348ae2fb3 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -361,9 +361,13 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account ba ON (ba.rowid = s.fk_accoun $sql .= " ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE u.rowid = s.fk_user"; $sql .= " AND s.entity IN (".getEntity('salaries').")"; +if (!$user->hasRight('salaries', 'readchild')) { + $sql .= " AND s.fk_user = ".(int) $user->id; +} if (!$user->hasRight('salaries', 'readall')) { $sql .= " AND s.fk_user IN (".$db->sanitize(implode(',', $childids)).")"; } + //print $sql; // Search criteria diff --git a/htdocs/salaries/payments.php b/htdocs/salaries/payments.php index 59f31d1e747..7990f3b6491 100644 --- a/htdocs/salaries/payments.php +++ b/htdocs/salaries/payments.php @@ -255,8 +255,11 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON b.fk_account = ba.ro $sql .= " ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE u.rowid = sal.fk_user"; $sql .= " AND s.entity IN (".getEntity('payment_salaries').")"; +if (!$user->hasRight('salaries', 'readchild')) { + $sql .= " AND s.fk_user = ".(int) $user->id; +} if (!$user->hasRight('salaries', 'readall')) { - $sql .= " AND sal.fk_user IN (".$db->sanitize(implode(',', $childids)).")"; + $sql .= " AND s.fk_user IN (".$db->sanitize(implode(',', $childids)).")"; } // Search criteria diff --git a/htdocs/salaries/stats/index.php b/htdocs/salaries/stats/index.php index 39b8558e9de..87fbe395c7f 100644 --- a/htdocs/salaries/stats/index.php +++ b/htdocs/salaries/stats/index.php @@ -85,6 +85,9 @@ dol_mkdir($dir); $useridtofilter = $userid; // Filter from parameters +if (!$user->hasRight('salaries', 'readchild') && empty($useridtofilter)) { + $useridtofilter = $user->id; +} if (!$user->hasRight('salaries', 'readall') && empty($useridtofilter)) { $useridtofilter = $user->getAllChildIds(1); } @@ -216,14 +219,19 @@ print '