<?php
namespace App\Security\Voter;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use Symfony\Component\Security\Core\User\UserInterface;
class CollaborateurVoter extends Voter
{
protected function supports(string $attribute, $subject): bool
{
// replace with your own logic
// https://symfony.com/doc/current/security/voters.html
return in_array($attribute, [
'HOME_VEHICLE', 'CREATE_COLLABORATEUR','EDIT_COLLABORATEUR', 'VIEW_COLLABORATEUR', 'REMOVE_COLLABORATEUR',
'ACTIVED','EDIT_FONCTION', 'VIEW_FONCTION','REMOVE_FONCTION','CREATE_FONCTION', 'EDIT_AQUISITION',
'VIEW_AQUISITION', 'CREATE_AQUISITION', 'REMOVE_AQUISITION', 'EDIT_ATTACHMENT', 'VIEW_ATTACHMENT',
'CREATE_ATTACHMENT', 'REMOVE_ATTACHMENT', 'EDIT_CARBURANT', 'VIEW_CARBURANT', 'CREATE_CARBURANT',
'REMOVE_CARBURANT', 'EDIT_ASSURANCE', 'VIEW_ASSURANCE', 'CREATE_ASSURANCE', 'REMOVE_ASSURANCE',
'EDIT_VIGNETTE', 'VIEW_VIGNETTE', 'CREATE_VIGNETTE', 'REMOVE_VIGNETTE', 'EDIT_TAXE', 'VIEW_TAXE',
'CREATE_TAXE', 'REMOVE_TAXE', 'EDIT_AUTORISATION', 'VIEW_AUTORISATION', 'CREATE_AUTORISATION',
'REMOVE_AUTORISATION', 'EDIT_CARNET', 'VIEW_CARNET', 'CREATE_CARNET', 'REMOVE_CARNET',
'EDIT_ACCIDENT', 'VIEW_ACCIDENT', 'CREATE_ACCIDENT', 'REMOVE_ACCIDENT', 'EDIT_SERVICE',
'VIEW_SERVICE', 'CREATE_SERVICE', 'REMOVE_SERVICE', 'EDIT_PNEUMATIQUE', 'VIEW_PNEUMATIQUE',
'CREATE_PNEUMATIQUE', 'REMOVE_PNEUMATIQUE', 'EDIT_EXTINCTEUR', 'VIEW_EXTINCTEUR',
'CREATE_EXTINCTEUR', 'REMOVE_EXTINCTEUR', 'EDIT_MARQUE', 'VIEW_MARQUE', 'CREATE_MARQUE',
'REMOVE_MARQUE', 'EDIT_ACHAT', 'VIEW_ACHAT', 'CREATE_ACHAT', 'REMOVE_ACHAT', 'EDIT_CLIENT',
'VIEW_CLIENT', 'CREATE_CLIENT', 'REMOVE_CLIENT', 'EDIT_VOYAGE', 'VIEW_VOYAGE', 'CREATE_VOYAGE',
'REMOVE_VOYAGE', 'EDIT_GEOFENCES', 'VIEW_GEOFENCES', 'CREATE_GEOFENCES', 'REMOVE_GEOFENCES',
'VIEW_SUIVI', 'VIEW_MODULE', 'EDIT_AGENDA', 'VIEW_AGENDA', 'CREATE_AGENDA', 'REMOVE_AGENDA'])
&& $subject instanceof \App\Entity\Collaborateur;
}
protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool
{
$user = $token->getUser();
// if the user is anonymous, do not grant access
if (!$user instanceof UserInterface) {
return false;
}
if ($user->getCollaborateur()) {
$subject = $user->getCollaborateur();
}
// ... (check conditions and return true to grant permission) ...
switch ($attribute) {
case 'HOME_VEHICLE':
if ($subject) {
$roles = $subject->getFonction()->getRoleVehicle();
if (in_array("VIEW", $roles)) {
return true;
}
return false;
}
if(in_array("ROLE_TRANSPORTEUR", $user->getRoles())){
return true;
}
return false;
break;
case 'EDIT_COLLABORATEUR':
$roles = $subject->getFonction()->getRoleCollaborateur();
if (in_array("EDIT", $roles)) {
return true;
} else {
return false;
}
break;
case 'VIEW_COLLABORATEUR':
if ($subject->getFonction()) {
$roles = $subject->getFonction()->getRoleCollaborateur();
if (in_array("VIEW", $roles)) {
return true;
} else {
return false;
}
} else {
return false;
}
break;
case 'REMOVE_COLLABORATEUR':
$roles = $subject->getFonction()->getRoleCollaborateur();
if (in_array("REMOVE", $roles)) {
return true;
} else {
return false;
}
break;
case 'CREATE_COLLABORATEUR':
$roles = $subject->getFonction()->getRoleCollaborateur();
if (in_array("CREATE", $roles)) {
return true;
} else {
return false;
}
break;
case 'ACTIVED':
if ($subject->getFonction()) {
return $subject->getFonction()->getEtat();
} else {
return false;
}
break ;
case 'EDIT_FONCTION':
$roles = $subject->getFonction()->getRoleGestionCollaborateurs();
if (in_array("EDIT", $roles)) {
return true;
} else {
return false;
}
break;
case 'VIEW_FONCTION':
$roles = $subject->getFonction()->getRoleGestionCollaborateurs();
if (in_array("VIEW", $roles)) {
return true;
} else {
return false;
}
break ;
case 'REMOVE_FONCTION':
$roles = $subject->getFonction()->getRoleGestionCollaborateurs();
if (in_array("REMOVE", $roles)) {
return true;
} else {
return false;
}
break;
case 'CREATE_FONCTION':
$roles = $subject->getFonction()->getRoleGestionCollaborateurs();
if (in_array("CREATE", $roles)) {
return true;
} else {
return false;
}
break;
case 'EDIT_AQUISITION':
$roles = $subject->getFonction()->getRoleAtelieraquisition();
if (in_array("EDIT", $roles)) {
return true;
} else {
return false;
}
break;
case 'VIEW_AQUISITION':
$roles = $subject->getFonction()->getRoleAtelieraquisition();
if (in_array("VIEW", $roles)) {
return true;
} else {
return false;
}
break ;
case 'REMOVE_AQUISITION':
$roles = $subject->getFonction()->getRoleAtelieraquisition();
if (in_array("REMOVE", $roles)) {
return true;
} else {
return false;
}
break;
case 'CREATE_AQUISITION':
$roles = $subject->getFonction()->getRoleAtelieraquisition();
if (in_array("CREATE", $roles)) {
return true;
} else {
return false;
}
break;
case 'EDIT_ATTACHMENT':
$roles = $subject->getFonction()->getRoleAtelierattachment();
if (in_array("EDIT", $roles)) {
return true;
} else {
return false;
}
break;
case 'VIEW_ATTACHMENT':
$roles = $subject->getFonction()->getRoleAtelierattachment();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_ATTACHMENT':
$roles = $subject->getFonction()->getRoleAtelierattachment();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_ATTACHMENT':
$roles = $subject->getFonction()->getRoleAtelierattachment();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_CARBURANT':
$roles = $subject->getFonction()->getRoleAteliercarburant();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_CARBURANT':
$roles = $subject->getFonction()->getRoleAteliercarburant();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_CARBURANT':
$roles = $subject->getFonction()->getRoleAteliercarburant();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_CARBURANT':
$roles = $subject->getFonction()->getRoleAteliercarburant();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_ASSURANCE':
$roles = $subject->getFonction()->getRoleAtelierassurances();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_ASSURANCE':
$roles = $subject->getFonction()->getRoleAtelierassurances();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_ASSURANCE':
$roles = $subject->getFonction()->getRoleAtelierassurances();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_ASSURANCE':
$roles = $subject->getFonction()->getRoleAtelierassurances();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_VIGNETTE':
$roles = $subject->getFonction()->getRoleAteliervignettes();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_VIGNETTE':
$roles = $subject->getFonction()->getRoleAteliervignettes();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_VIGNETTE':
$roles = $subject->getFonction()->getRoleAteliervignettes();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_VIGNETTE':
$roles = $subject->getFonction()->getRoleAteliervignettes();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_TAXE':
$roles = $subject->getFonction()->getRoleAteliertaxes();
if (in_array("EDIT", $roles)) {
return true;
} else {
return false;
}
break;
case 'VIEW_TAXE':
$roles = $subject->getFonction()->getRoleAteliertaxes();
if (in_array("VIEW", $roles)) {
return true;
} else {
return false;
}
break ;
case 'REMOVE_TAXE':
$roles = $subject->getFonction()->getRoleAteliertaxes();
if (in_array("REMOVE", $roles)) {
return true;
} else {
return false;
}
break;
case 'CREATE_TAXE':
$roles = $subject->getFonction()->getRoleAteliertaxes();
if (in_array("CREATE", $roles)) {
return true;
} else {
return false;
}
break;
case 'EDIT_AUTORISATION':
$roles = $subject->getFonction()->getRoleAtelierautorisation();
if (in_array("EDIT", $roles)) {
return true;
} else {
return false;
}
break;
case 'VIEW_AUTORISATION':
$roles = $subject->getFonction()->getRoleAtelierautorisation();
if (in_array("VIEW", $roles)) {
return true;
} else {
return false;
}
break ;
case 'REMOVE_AUTORISATION':
$roles = $subject->getFonction()->getRoleAtelierautorisation();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_AUTORISATION':
$roles = $subject->getFonction()->getRoleAtelierautorisation();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_CARNET':
$roles = $subject->getFonction()->getRoleAteliercarnet();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_CARNET':
$roles = $subject->getFonction()->getRoleAteliercarnet();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_CARNET':
$roles = $subject->getFonction()->getRoleAteliercarnet();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_CARNET':
$roles = $subject->getFonction()->getRoleAteliercarnet();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_ACCIDENT':
$roles = $subject->getFonction()->getRoleAtelieraccidents();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_ACCIDENT':
$roles = $subject->getFonction()->getRoleAtelieraccidents();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_ACCIDENT':
$roles = $subject->getFonction()->getRoleAtelieraccidents();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_ACCIDENT':
$roles = $subject->getFonction()->getRoleAtelieraccidents();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_SERVICE':
$roles = $subject->getFonction()->getRoleAtelierservices();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_SERVICE':
$roles = $subject->getFonction()->getRoleAtelierservices();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_SERVICE':
$roles = $subject->getFonction()->getRoleAtelierservices();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_SERVICE':
$roles = $subject->getFonction()->getRoleAtelierservices();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_PNEUMATIQUE':
$roles = $subject->getFonction()->getRoleAtelierpneumatique();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_PNEUMATIQUE':
$roles = $subject->getFonction()->getRoleAtelierpneumatique();
if (in_array("VIEW", $roles)) {
return true;
} else {
return false;
}
break ;
case 'REMOVE_PNEUMATIQUE':
$roles = $subject->getFonction()->getRoleAtelierpneumatique();
if (in_array("REMOVE", $roles)) {
return true;
} else {
return false;
}
break;
case 'CREATE_PNEUMATIQUE':
$roles = $subject->getFonction()->getRoleAtelierpneumatique();
if (in_array("CREATE", $roles)) {
return true;
} else {
return false;
}
break;
case 'EDIT_EXTINCTEUR':
$roles = $subject->getFonction()->getRoleAtelierextincteurs();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_EXTINCTEUR':
$roles = $subject->getFonction()->getRoleAtelierextincteurs();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_EXTINCTEUR':
$roles = $subject->getFonction()->getRoleAtelierextincteurs();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_EXTINCTEUR':
$roles = $subject->getFonction()->getRoleAtelierextincteurs();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_MARQUE':
$roles = $subject->getFonction()->getRoleAteliermarques();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_MARQUE':
$roles = $subject->getFonction()->getRoleAteliermarques();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_MARQUE':
$roles = $subject->getFonction()->getRoleAteliermarques();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_MARQUE':
$roles = $subject->getFonction()->getRoleAteliermarques();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_ACHAT':
$roles = $subject->getFonction()->getRoleAchat();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_ACHAT':
$roles = $subject->getFonction()->getRoleAchat();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_ACHAT':
$roles = $subject->getFonction()->getRoleAchat();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_ACHAT':
$roles = $subject->getFonction()->getRoleAchat();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_CLIENT':
$roles = $subject->getFonction()->getRoleClient();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_CLIENT':
$roles = $subject->getFonction()->getRoleClient();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_CLIENT':
$roles = $subject->getFonction()->getRoleClient();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_CLIENT':
$roles = $subject->getFonction()->getRoleClient();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_VOYAGE':
$roles = $subject->getFonction()->getRoleVoyage();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_VOYAGE':
$roles = $subject->getFonction()->getRoleVoyage();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_VOYAGE':
$roles = $subject->getFonction()->getRoleVoyage();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_VOYAGE':
$roles = $subject->getFonction()->getRoleVoyage();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'EDIT_GEOFENCES':
$roles = $subject->getFonction()->getRoleGeofences();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_GEOFENCES':
$roles = $subject->getFonction()->getRoleGeofences();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_GEOFENCES':
$roles = $subject->getFonction()->getRoleGeofences();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_GEOFENCES':
$roles = $subject->getFonction()->getRoleGeofences();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_SUIVI':
$roles = $subject->getFonction()->getRoleSuivi();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'VIEW_MODULE':
$roles = $subject->getFonction()->getRoleModule();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'EDIT_AGENDA':
$roles = $subject->getFonction()->getRoleAgenda();
if (in_array("EDIT", $roles)) {
return true;
}
else {
return false;
}
break;
case 'VIEW_AGENDA':
$roles = $subject->getFonction()->getRoleAgenda();
if (in_array("VIEW", $roles)) {
return true;
}
else {
return false;
}
break ;
case 'REMOVE_AGENDA':
$roles = $subject->getFonction()->getRoleAgenda();
if (in_array("REMOVE", $roles)) {
return true;
}
else {
return false;
}
break;
case 'CREATE_AGENDA':
$roles = $subject->getFonction()->getRoleAgenda();
if (in_array("CREATE", $roles)) {
return true;
}
else {
return false;
}
break;
}
return false;
}
}