fix timesheet permissions for non-admins (#1542)
This commit is contained in:
@@ -527,24 +527,37 @@ class TimesheetRepository extends EntityRepository
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($teams)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// make sure that admins see all timesheet records
|
// make sure that admins see all timesheet records
|
||||||
if (null !== $user && ($user->isSuperAdmin() || $user->isAdmin())) {
|
if (null !== $user && ($user->isSuperAdmin() || $user->isAdmin())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (null !== $user) {
|
||||||
|
$teams = array_merge($teams, $user->getTeams()->toArray());
|
||||||
|
}
|
||||||
|
|
||||||
$qb
|
$qb
|
||||||
->leftJoin('p.teams', 'teams')
|
->leftJoin('p.teams', 'teams')
|
||||||
->leftJoin('c.teams', 'c_teams');
|
->leftJoin('c.teams', 'c_teams');
|
||||||
|
|
||||||
$orTeam = $qb->expr()->orX(
|
if (empty($teams)) {
|
||||||
$qb->expr()->isMemberOf(':teams', 'p.teams'),
|
$qb->andWhere($qb->expr()->isNull('c_teams'));
|
||||||
|
$qb->andWhere($qb->expr()->isNull('teams'));
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$orProject = $qb->expr()->orX(
|
||||||
|
$qb->expr()->isNull('teams'),
|
||||||
|
$qb->expr()->isMemberOf(':teams', 'p.teams')
|
||||||
|
);
|
||||||
|
$qb->andWhere($orProject);
|
||||||
|
|
||||||
|
$orCustomer = $qb->expr()->orX(
|
||||||
|
$qb->expr()->isNull('c_teams'),
|
||||||
$qb->expr()->isMemberOf(':teams', 'c.teams')
|
$qb->expr()->isMemberOf(':teams', 'c.teams')
|
||||||
);
|
);
|
||||||
$qb->andWhere($orTeam);
|
$qb->andWhere($orCustomer);
|
||||||
|
|
||||||
$qb->setParameter('teams', $teams);
|
$qb->setParameter('teams', $teams);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user