public function hasDatacenterCredential($credential, $useAnd = true) { if ($this->isSuperAdmin()) { return true; } $p_permtype = $credential[0]; $p_user_id = $this->getId(); //$p_cluster_id = $credential[1]; if (is_array($credential[1])) { $p_type_credential = (array) $credential[1]; if ($p_type_credential['node']) { error_log("MYUSER:[INFO]Node id: " . $p_type_credential['node']); $dc_c = new Criteria(); $dc_c->add(EtvaNodePeer::ID, $p_type_credential['node']); $node = EtvaNodePeer::doSelectOne($dc_c); $p_cluster_id = $node->getClusterId(); } elseif ($p_type_credential['server']) { error_log("MYUSER:[INFO]Server id: " . $p_type_credential['server']); $dc_c = new Criteria(); $dc_c->add(EtvaServerPeer::ID, (int) $p_type_credential['server'], Criteria::EQUAL); $server = EtvaServerPeer::doSelectOne($dc_c); $p_cluster_id = $server->getClusterId(); } elseif ($p_type_credential['cluster']) { error_log("MYUSER:[INFO]Cluster id: " . $p_type_credential['cluster']); $p_cluster_id = (int) $p_type_credential['cluster']; } else { error_log('MYUSER:[ERROR] hasDatacenterCredential invalid parameters'); return false; } } else { $p_cluster_id = $credential[1]; } // Check if user has permission $c = new Criteria(); $c->add(EtvaPermissionUserPeer::USER_ID, $p_user_id, Criteria::EQUAL); $c->addJoin(EtvaPermissionUserPeer::ETVAPERM_ID, EtvaPermissionPeer::ID); $c->add(EtvaPermissionPeer::PERM_TYPE, $p_permtype, Criteria::EQUAL); $c->addJoin(EtvaPermissionPeer::ID, EtvaPermissionClusterPeer::ETVAPERM_ID); $c->add(EtvaPermissionClusterPeer::CLUSTER_ID, $p_cluster_id); //error_log($c->toString()); $permission = EtvaPermissionUserPeer::doSelect($c); if ($permission) { return true; } // Check if user groups have permission $grps = $this->getGroups(); foreach ($grps as $value) { foreach ($value->getEtvaPermissionGroups() as $relObj) { $perm = $relObj->getEtvaPermission(); // validates the permission type if ($perm->getPermType() == $p_permtype) { // check if user has permission on the cluster foreach ($perm->getEtvaPermissionClusters() as $clusters) { if ($clusters->getClusterId() == $p_cluster_id) { error_log("Permission: " . $clusters->getClusterId()); return true; } } } } } // Permission not found return false; }
public function getEtvaServer(PropelPDO $con = null) { $criteria = new Criteria(); $criteria->add(EtvaServerLogicalPeer::LOGICALVOLUME_ID, $this->getId()); $criteria->addJoin(EtvaServerPeer::ID, EtvaServerLogicalPeer::SERVER_ID); return EtvaServerPeer::doSelectOne($criteria, $con); }
/** * returns json array encoded list of vlans * */ public function executeJsonList(sfWebRequest $request) { $isAjax = $request->isXmlHttpRequest(); if (!$isAjax) { return $this->redirect('@homepage'); } $p_cluster_id = $this->getRequestParameter('id'); $p_level = $this->getRequestParameter('level'); if ($p_level) { if (!$p_cluster_id) { $error_msg = 'No cluster id defined.'; $error = array('success' => false, 'error' => $error_msg, 'info' => $error_msg); return $error; } if ($p_level == 'node') { $dc_c = new Criteria(); //convert node id in cluster id $dc_c->add(EtvaNodePeer::ID, $p_cluster_id); $node = EtvaNodePeer::doSelectOne($dc_c); $p_cluster_id = $node->getClusterId(); } elseif ($p_level == 'server') { $dc_c = new Criteria(); //convert server id in cluster id $dc_c->add(EtvaServerPeer::ID, $p_cluster_id, Criteria::EQUAL); $server = EtvaServerPeer::doSelectOne($dc_c); $p_cluster_id = $server->getClusterId(); } elseif ($p_level == 'cluster') { //do nothing } else { error_log('NETWORK:[ERROR] executejsonlist invalid parameters'); } } elseif (!$p_cluster_id) { $defaultCluster = EtvaClusterPeer::retrieveDefaultCluster(); $p_cluster_id = $defaultCluster->getId(); } $c = new Criteria(); $c->add(EtvaVlanPeer::CLUSTER_ID, $p_cluster_id, Criteria::EQUAL); $vlan_nodes = EtvaVlanPeer::doSelect($c); $list = array(); foreach ($vlan_nodes as $vlan) { $list[] = $vlan->toArray(BasePeer::TYPE_FIELDNAME); } $untagged_vlan = EtvaVlanPeer::retrieveUntagged($p_cluser_id); $hasUntagged = 0; if ($untagged_vlan) { $hasUntagged = 1; } $result = array('total' => count($list), 'data' => $list, 'hasUntagged' => $hasUntagged); $result = json_encode($result); if (sfConfig::get('sf_environment') == 'soap') { $soap_result = array(success => true, 'total' => count($list), 'response' => $list); return json_encode($soap_result); } $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($result); }