public function accesstokenlistAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $uid = $this->session->userid; header("Content-Type:text/xml"); echo "<" . "?xml version='1.0'?" . ">"; //Check if user is logged in if ($_SERVER['HTTPS'] != "on") { header("HTTP/1.0 403 Forbidden"); return; } if ($uid == null) { header("HTTP/1.0 403 Forbidden"); echo "<accesstokens error='Not logged in' ></accesstokens>"; return; } if ($_SERVER['REQUEST_METHOD'] == 'PUT') { //Generate new access token //Create an access token for current user $result = AccessTokens::createPersonalAccessToken($uid); if ($result !== true) { echo "<accesstokens error='" . $result . "' ></accesstokens>"; return; } } else { if ($_SERVER['REQUEST_METHOD'] == 'POST') { //Update netfilters of given tokenid //Check if acccess token exists $tokenid = isset($_GET["k"]) ? intval($_GET["k"]) : null; $nfltdata = json_decode($_POST["data"]); $nflts = array_unique($nfltdata->netfilters); $result = AccessTokens::setNetfilters($uid, $tokenid, $nflts); if ($result !== true) { echo "<accesstokens error='" . $result . "' ></accesstokens>"; return; } } else { if ($_SERVER['REQUEST_METHOD'] == 'DELETE') { //Delete given token along with its netfilters $tokenid = isset($_GET["k"]) ? intval($_GET["k"]) : null; $result = AccessTokens::removeAccessToken($uid, $tokenid); if ($result !== true) { echo "<accesstokens error='" . $result . "' ></accesstokens>"; return; } } } } //Return xml representation of access tokens for the current user $acctokenslist = new Default_Model_AccessTokens(); $acctokenslist->filter->addedby->equals($uid)->and($acctokenslist->filter->type->like('personal')); $acctokens = $acctokenslist->items; echo "<accesstokens count='" . count($acctokens) . "' >"; if (count($acctokens) === 0) { echo "</accesstokens>"; return; } foreach ($acctokens as $acctoken) { echo "<accesstoken id='" . $acctoken->id . "' token='" . $acctoken->token . "' addedby='" . $acctoken->addedbyid . "' createdon='" . $acctoken->createdon . "' tokentype='" . $acctoken->type . "' "; $netfilters = new Default_Model_AccessTokenNetfilters(); $netfilters->filter->tokenid->equals($acctoken->id); $nfilters = $netfilters->items; echo "netfilters='" . count($nfilters) . "' >"; foreach ($nfilters as $netfilter) { echo "<netfilter value='" . $netfilter->netfilter . "' ></netfilter>"; } echo "</accesstoken>"; } echo "</accesstokens>"; }