upd: Libs
Permissions checking * Add checkPermissions method to check the permissions of the user to the case to make sure they have permissions to add or edit.
This commit is contained in:
parent
77d90ed691
commit
e5f09bd8cc
@ -3,8 +3,11 @@
|
|||||||
namespace App\Libs;
|
namespace App\Libs;
|
||||||
|
|
||||||
use App\Entity\Location;
|
use App\Entity\Location;
|
||||||
|
use App\Entity\MemberCase;
|
||||||
use App\Entity\Messages;
|
use App\Entity\Messages;
|
||||||
|
use App\Entity\Supervision;
|
||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
|
use App\Entity\UserCase;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
@ -108,4 +111,41 @@ class Libs extends AbstractController
|
|||||||
|
|
||||||
return $msgs;
|
return $msgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the user has permission to access a case.
|
||||||
|
*
|
||||||
|
* @param User $user
|
||||||
|
* @param MemberCase $case
|
||||||
|
* @param EntityManagerInterface $em
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function checkPermissions(User $user, MemberCase $case, EntityManagerInterface $em): bool
|
||||||
|
{
|
||||||
|
// if user is an admin, allow the action
|
||||||
|
if (in_array('ROLE_ADMIN', $user->getRoles())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if user is assigned to this case, allow the action
|
||||||
|
$uc = $em->getRepository(UserCase::class)->findOneBy(['user' => $user, 'memberCase' => $case]);
|
||||||
|
if ($uc) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get user of the case and check if user is a supervisor of the worker
|
||||||
|
/** @var ?UserCase $uc */
|
||||||
|
$uc = $em->getRepository(UserCase::class)->findOneBy(['memberCase' => $case]);
|
||||||
|
if ($uc) {
|
||||||
|
$sup = $em->getRepository(Supervision::class)->findOneBy(['supervisor' => $user, 'worker' => $uc->getUser()]);
|
||||||
|
|
||||||
|
if ($sup) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// user does not have permissions to the case
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user