Files
Lesstime/src/Module/TimeTracking/TimeTrackingModule.php
T
Matthieu 4a7fd46493
Pull Request — Quality gate / Frontend (build) (pull_request) Successful in 1m15s
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m32s
fix(rbac) : add dedicated time-tracking.entries.manage permission
La revue de sécurité a relevé que les écritures de TimeEntry (Post/Patch/Delete)
étaient gardées par time-tracking.entries.view : une permission de lecture
accordait l'écriture (confusion lecture/écriture, least-privilege).

- Ajout de la permission time-tracking.entries.manage (catalogue cohérent avec
  les autres modules en view/manage).
- Écritures TimeEntry recâblées sur entries.manage ; self-service conservé
  (object.getUser() == user). Lecture inchangée (entries.view).
2026-06-23 17:10:58 +02:00

40 lines
951 B
PHP

<?php
declare(strict_types=1);
namespace App\Module\TimeTracking;
use App\Shared\Domain\Module\ModuleInterface;
final class TimeTrackingModule implements ModuleInterface
{
public static function id(): string
{
return 'time-tracking';
}
public static function label(): string
{
return 'Suivi des temps';
}
public static function isRequired(): bool
{
return false;
}
/**
* Permissions RBAC fin du Module TimeTracking (2.1).
*
* @return list<array{code: string, label: string}>
*/
public static function permissions(): array
{
return [
['code' => 'time-tracking.entries.view', 'label' => 'Voir les saisies de temps'],
['code' => 'time-tracking.entries.manage', 'label' => 'Gérer les saisies de temps'],
['code' => 'time-tracking.entries.export', 'label' => 'Exporter les saisies de temps'],
];
}
}