_genericModel = new Application_Model_Generic(); } public function getUser() { if (Zend_Registry::isRegistered('TOKEN')) { return $this->_genericModel->getByColumnName('Users', 'token', Zend_Registry::get('TOKEN')); } else { return null; } } public function controllaPermessiSuOrdine($ordineMapping, $user = null) { if (!$user) { $user = $this->getUser(); } switch ($user['role']) { case 'admin': return true; case 'user': return $user['id'] === $ordineMapping['ID_Utente']; case 'attivita': return $user['id'] === $ordineMapping['ID_Attivita']; case 'rider': return $user['id'] === $ordineMapping['ID_UserRider']; default: return false; } } /** * Controlla se il permesso passatto o i permessi sono validi per l'utente loggato * @param array $role * @param null $user * @return bool */ public function controllaPermessiByRole(array $role, $user = null) { if (!$user) { $user = $this->getUser(); } return in_array($user['role'], $role); } public function getPermissionWhere($user = null) { if (!$user) { $user = $this->getUser(); } switch ($user['role']) { case 'admin': return []; case 'user': return ['ID_Utente = ?' => $user['id']]; case 'attivita': return ['ID_Attivita = ?' => $user['id']]; case 'rider': return ['ID_UserRider = ?' => $user['id']]; default: return ['id < ?' => '0']; // forza a non restituire nulla } } }