Ejemplo n.º 1
0
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $zaposlitev = null)
 {
     if (parent::assert($authorizationService, $zaposlitev, true)) {
         return true;
     }
     /**
      * vse zaposlitve  so osebni podatki
      */
     return $authorizationService->isGranted("OsebniPodatki-read", $zaposlitev);
 }
Ejemplo n.º 2
0
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $trr = null)
 {
     if (parent::assert($authorizationService, $trr, false)) {
         return true;
     }
     /**
      * trr pri osebah so osebni podatki
      */
     return !$trr->getOseba() || $authorizationService->isGranted("OsebniPodatki-write", $trr);
 }
Ejemplo n.º 3
0
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $naslov = null)
 {
     if (parent::assert($authorizationService, $naslov, true)) {
         return true;
     }
     /**
      * naslovi pri osebah so osebni podatki
      */
     return !$naslov->getOseba() || $authorizationService->isGranted("OsebniPodatki-read", $naslov);
 }
Ejemplo n.º 4
0
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $pogodba = null)
 {
     if (parent::assert($authorizationService, $pogodba, false)) {
         return true;
     }
     /**
      * pogodbe pri osebah so osebni podatki če ni preko poslovnega partnerja
      */
     return $pogodba->getPopa() || !$pogodba->getOseba() || $authorizationService->isGranted("OsebniPodatki-write", $pogodba);
 }
Ejemplo n.º 5
0
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $alternacija = null)
 {
     if (parent::assert($authorizationService, $alternacija, false)) {
         return true;
     }
     /**
      * za področje ne tehnike rabiš posebno dovoljenje
      */
     return !$alternacija->getFunkcija() || $alternacija->getFunkcija()->getPodrocje() == 'tehnik' || $authorizationService->isGranted("Alternacija-vse", $alternacija);
 }
Ejemplo n.º 6
0
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $tel = null)
 {
     if (parent::assert($authorizationService, $tel, FALSE)) {
         return true;
     }
     /**
      * telefonska pri osebah so osebni podatki
      */
     return !$tel->getOseba() || $authorizationService->isGranted("OsebniPodatki-write", $tel);
 }
Ejemplo n.º 7
0
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $oseba = null)
 {
     if (parent::assert($authorizationService, $oseba)) {
         return true;
     }
     //                       'priimek' => 'write protected12345', //to je vrednost, ki je assert ne dovoli
     $isG = $authorizationService->isGranted("OsebniPodatki-write", $oseba);
     //ker je drug perm, se ne bi smel zaciklati
     $priimek = $oseba->getPriimek();
     // za zaščiten zapis potrebujemo dodaten permission OsebniPodatki-write
     $ret = (!('write protected12345' === $priimek) or $isG);
     return $ret;
 }
Ejemplo n.º 8
0
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $dogodek = null)
 {
     /**
      * a la short curcuit
      */
     $permread = true;
     // ker  se permission konča z -read
     if (parent::assert($authorizationService, $dogodek, $permread)) {
         return true;
     }
     // za npr. direktorja in planerja ne glede na status dogodka
     if ($authorizationService->isGranted("Dogodek-readVse", $dogodek)) {
         //ker je drug perm, se ne bi smel zaciklati
         return true;
     }
     $ret = false;
     // init
     // običajni uporabniki
     if ($dogodek->getStatus() >= '500s') {
         // $$ pazi -to primerjanje velja le za vrednosti od '100s' do '999s'
         $ret = true;
     }
     return $ret;
 }
Ejemplo n.º 9
0
 /**
  * 
  * @param \ZfcRbac\Service\AuthorizationService $authorizationService
  * @param Prisotnost\Entity\TerminStoritve      $terminStoritve
  * @return boolean
  */
 public function assert(\ZfcRbac\Service\AuthorizationService $authorizationService, $terminStoritve = null)
 {
     if (parent::assert($authorizationService, $terminStoritve)) {
         return true;
     }
     $iden = $authorizationService->getIdentity();
     $user = $iden->getEmail();
     /* $$ plan:
      * - izjema za tiste dogodke, ki nimajo uprizoritve (npr. oddaja prostora, knjženje ur za hostese, ki pomagajo 
      *   => tisti, ki ima dovoljenje 
      * TerminStoritve-vse, lahko vse zapise popravlja
      *  $$ razčisti, ali bo asociacija na alternacijo, ali le na osebe - verjetno najboljše oboje, redundantno
      * - kontrola za tehničnega vodjo select joini
      * - kontrola za inšpicienta 
      *   . ali vse alternacije  (t.j. tudi funkcija.podrocje je tehnik   (morda bi lahko dali dodatno dovoljenje  ..ure-vodjaekipetehnik
      *   . ali le tiste, kjer je funkcija.podrocje igralec ali umetnik
      * 
      */
     // npr. za vnos tistih dogodkov, ki nimajo uprizoritve , npr. za vnos ur hostes, ki le pomagajo pri prireditvi, ko smo prodali dvorano
     if ($authorizationService->isGranted("TerminStoritve-vse", $terminStoritve)) {
         //ker je drug perm, se ne bi smel zaciklati
         return true;
     }
     $em = $this->getServiceLocator()->getServiceLocator()->get('doctrine.entitymanager.orm_default');
     // najprej najdemo uprizoritev od termina storitve, če le-ta obstaja
     //        $uprizoritevId=""; //$$
     //        termin storitve -> alternacija -> funkcija-> uprizoritev
     // $$ še manager definirati - ali naj se pošlje kot parameter funkciji?
     $altR = $em->getRepository('Produkcija\\Entity\\Alternacija');
     $funR = $em->getRepository('Produkcija\\Entity\\Funkcija');
     $uprR = $em->getRepository('Produkcija\\Entity\\Uprizoritev');
     $oseR = $em->getRepository('App\\Entity\\Oseba');
     /**
      * za dežurnega pri predstavi in gosta ima inšpicient pravico ažurirati
      */
     $fpodrocje = '';
     //init
     if (!empty($terminStoritve->getAlternacija())) {
         $alt = $altR->findOneById($terminStoritve->getAlternacija());
         if (!empty($alt->getFunkcija())) {
             $fun = $funR->findOneById($alt->getFunkcija());
             $fpodrocje = $fun->getPodrocje();
             // ali je tehnik ali netehnik
         }
     }
     /**
      * najdemo uprizoritev, ki pripada temu terminu storitve
      */
     if (!empty($terminStoritve->getDogodek())) {
         $upr = $terminStoritve->getDogodek()->getUprizoritev();
     }
     /**
      * če smo našli uprizoritev, pogledamo še, če je vodja ekipe
      * ident -> oseba -> alternacije ->funkcija -> uprizoritev  (ista kot tista iz terminastoritve)
      */
     if (!empty($upr)) {
         /**
          * ali je uporabnik vodja ekipe inšpicient ali tehnik?
          */
         $qb = $em->createQueryBuilder();
         $e = $qb->expr();
         $qb->select('count(a) c');
         $qb->from('Produkcija\\Entity\\Alternacija', 'a');
         $qb->join('a.funkcija', 'f');
         $qb->join('a.oseba', 'o');
         $qb->where($e->eq('f.uprizoritev', ':upriz'));
         $qb->setParameter('upriz', $upr->getId(), "string");
         $qb->andWhere($e->eq('f.vodjaEkipe', 'TRUE'));
         $qb->andWhere('o.user=:user');
         $qb->setParameter('user', $iden->getId(), "string");
         /**
          * $$ tu bi še lahko kontrolirali, če je še veljavna alternacija 
          */
         // ali vodja ekipe umetnik ali igralec ali inšpicient
         $qbUI = clone $qb;
         $qbUI->andWhere('f.podrocje = :igralec OR f.podrocje = :umetnik OR f.podrocje = :inspicient OR f.podrocje = :sepetalec');
         $qbUI->setParameter('igralec', 'igralec', "string");
         $qbUI->setParameter('umetnik', 'umetnik', "string");
         $qbUI->setParameter('inspicient', 'inspicient', "string");
         $qbUI->setParameter('sepetalec', 'sepetalec', "string");
         $queryUI = $qbUI->getQuery();
         $cntUI = $queryUI->getSingleScalarResult();
         if ($cntUI >= 1) {
             //vodja celotne ekipe
             /**
              * lahko za celotno ekipo - torej tudi za
              * dezurnega in gosta
              */
             return true;
         }
         // ali vodja ekipe tehnik
         $qbT = clone $qb;
         $qbT->andWhere($e->eq('f.podrocje', ':tehnik'));
         $qbT->setParameter('tehnik', 'tehnik', "string");
         $queryT = $qbT->getQuery();
         $cntT = $queryT->getSingleScalarResult();
         if ($cntT >= 1) {
             //vodja tehnične ekipe
             if ($fpodrocje == 'tehnik') {
                 //lahko le za svojo ekipo
                 return true;
             }
         }
     }
     return false;
 }