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); }
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); }
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); }
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); }
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); }
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); }
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; }
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; }
/** * * @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; }