Ejemplo n.º 1
0
 /**
  * @internal
  */
 public function setEditRights(User $user, TravelRequest $travelRequest, $isNewTravelRequest, $currentStatusId)
 {
     $isEditLocked = true;
     $isStatusLocked = false;
     $userId = $user->getId();
     if (false === $isNewTravelRequest) {
         // the currently logged in user is always set as default
         $isStatusLocked = true;
         $isEditLocked = false;
     } else {
         if ($this->securityContext->isGranted('ROLE_ADMIN')) {
             $isEditLocked = false;
             $isStatusLocked = false;
             if (in_array($currentStatusId, array(Status::APPROVED, Status::REJECTED))) {
                 $isEditLocked = true;
                 $isStatusLocked = true;
             } elseif ($currentStatusId === Status::FOR_APPROVAL) {
                 $isEditLocked = true;
             }
         } elseif ($userId === $travelRequest->getUser()->getId()) {
             if (Status::CREATED !== $currentStatusId && Status::REVISE !== $currentStatusId) {
                 return false;
             }
             $isEditLocked = false;
         } elseif ($userId === $travelRequest->getGeneralManager()->getId()) {
             if (Status::FOR_APPROVAL !== $currentStatusId) {
                 return false;
             }
         }
     }
     return array('isEditLocked' => $isEditLocked, 'isStatusLocked' => $isStatusLocked);
 }
Ejemplo n.º 2
0
 /**
  * @internal
  */
 public function setEditRights(TravelRequest $travelRequest, TravelRequestUserInterface $currentUser, $currentStatusId)
 {
     $isEditLocked = true;
     $isStatusLocked = true;
     if (!$this->securityContext->isGranted('ROLE_ADMIN')) {
         // If request was created by current user
         if ($travelRequest->getUser()->getId() === $currentUser->getId()) {
             if (in_array($currentStatusId, array(Status::CREATED, Status::REVISE))) {
                 $isEditLocked = false;
                 $isStatusLocked = false;
             } elseif ($travelRequest->getGeneralManager()->getId() === $travelRequest->getUser()->getId()) {
                 $isStatusLocked = false;
             }
         } elseif ($travelRequest->getGeneralManager()->getId() === $currentUser->getId()) {
             if (!in_array($currentStatusId, array(Status::CREATED, Status::REVISE))) {
                 $isStatusLocked = false;
             }
         }
     } else {
         $isEditLocked = false;
         $isStatusLocked = false;
         if (in_array($currentStatusId, array(Status::APPROVED, Status::REJECTED))) {
             $isEditLocked = true;
             $isStatusLocked = true;
         } elseif ($currentStatusId === Status::FOR_APPROVAL) {
             $isEditLocked = true;
         }
     }
     return array('isStatusLocked' => $isStatusLocked, 'isEditLocked' => $isEditLocked);
 }
Ejemplo n.º 3
0
 /**
  * Method to check if a travel request can be viewed
  * 
  * @param \Symfony\Component\Security\Core\User\UserInterface $user
  * @param \Opit\OpitHrm\TravelBundle\Entity\TravelRequest $travelRequest
  * @param type $isAdmin
  * @param type $isGeneralManager
  * @param type $travelRequestStatusId
  * @return type
  */
 protected function isTRViewable(UserInterface $user, TravelRequest $travelRequest, $isAdmin, $isGeneralManager, $travelRequestStatusId)
 {
     // Check if tr has an id
     if (null === $travelRequest->getId()) {
         return VoterInterface::ACCESS_GRANTED;
     }
     $generalManagerId = $travelRequest->getGeneralManager()->getId();
     // If user has admin role show tr
     if ($isAdmin) {
         return VoterInterface::ACCESS_GRANTED;
     } elseif ($isGeneralManager) {
         // If tr has not got the status created and gm is gm of it show tr
         if (Status::CREATED !== $travelRequestStatusId && $generalManagerId === $user->getId()) {
             return VoterInterface::ACCESS_GRANTED;
         }
     }
     if ($travelRequest->getUser() === $user) {
         return VoterInterface::ACCESS_GRANTED;
     }
     return VoterInterface::ACCESS_DENIED;
 }