summaryrefslogtreecommitdiffstats
path: root/application/controllers
diff options
context:
space:
mode:
authorBjörn Geiger2011-07-26 17:23:21 +0200
committerBjörn Geiger2011-07-26 17:23:21 +0200
commit824cdfc7254773006810d6a7fb1cf260ded097c6 (patch)
tree354ab1c2182ae34d288b4a9e4ed62e9511c5a87e /application/controllers
parentgetpool und getbootos api nun auch mit übergabe einer id (diff)
downloadpbs2-824cdfc7254773006810d6a7fb1cf260ded097c6.tar.gz
pbs2-824cdfc7254773006810d6a7fb1cf260ded097c6.tar.xz
pbs2-824cdfc7254773006810d6a7fb1cf260ded097c6.zip
Login API
Diffstat (limited to 'application/controllers')
-rw-r--r--application/controllers/ResourceController.php85
1 files changed, 78 insertions, 7 deletions
diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php
index 46904a1..c477c2c 100644
--- a/application/controllers/ResourceController.php
+++ b/application/controllers/ResourceController.php
@@ -30,17 +30,32 @@ class ResourceController extends Zend_Controller_Action
$alpha = $this->_request->getParam('alpha');
$apikey = $this->_request->getParam('apikey');
- if($apikey != ""){
- $membershipMapper = new Application_Model_MembershipMapper();
- $this->membership = new Application_Model_Membership();
- $this->rightrolesMapper = new Application_Model_RightRolesMapper();
+ if($this->getRequest()->getActionName() == 'login') {
+ $email = $this->_request->getParam('email');
+ $password = $this->_request->getParam('password');
+
+ if(!isset($email)) {
+ header('HTTP/1.0 401 No email is set');
+ die();
+ }
- list($this->membership) = $membershipMapper->findBy(array('apikey' => $apikey));
- if($this->membership == null){
- header('HTTP/1.0 401 Member not found');
+ if(!isset($password)) {
+ header('HTTP/1.0 401 No password is set');
die();
}
+ } else {
+ if($apikey != ""){
+ $membershipMapper = new Application_Model_MembershipMapper();
+ $this->membership = new Application_Model_Membership();
+ $this->rightrolesMapper = new Application_Model_RightRolesMapper();
+
+ list($this->membership) = $membershipMapper->findBy(array('apikey' => $apikey));
+ if($this->membership == null){
+ header('HTTP/1.0 401 Member not found');
+ die();
+ }
+ }
}
if($alpha == "0"){
$bootmenuentryID = $this->_request->getParam('bootmenuentryID');
@@ -81,6 +96,7 @@ class ResourceController extends Zend_Controller_Action
}
+
//TODO Try/Catch + Metadata check
public function addbootosAction()
{
@@ -888,6 +904,61 @@ class ResourceController extends Zend_Controller_Action
echo $xml;
}
+ public function loginAction() {
+ $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ $xml .= "<xml>\n";
+
+ $email = $this->_request->getParam('email');
+ $password = $this->_request->getParam('password');
+
+ $auth = Zend_Auth::getInstance();
+ $adapter = new Zend_Auth_Adapter_DbTable( $this->db, 'pbs_person', 'email', 'password', 'MD5(CONCAT(?, password_salt))');
+ $adapter->setIdentity($email);
+ $adapter->setCredential($password);
+ $result = $auth->authenticate($adapter);
+
+ if(!$result->isValid()) {
+ $xml .= "\t<login>false</login>\n";
+ $xml .= "\t<error>wrong email or password</error>\n";
+ } else {
+ $xml .= "\t<login>true</login>\n";
+
+ $personMapper = new Application_Model_PersonMapper();
+ $result = $personMapper->findBy(array('email' => Zend_Auth::getInstance()->getIdentity()),true);
+ $person = new Application_Model_Person($result[0]);
+ $person->setID($result[0]['personID']);
+ $membershipMapper = new Application_Model_MembershipMapper();
+ $memberships = $membershipMapper->findBy(array('personID' => $person->getID()));
+
+ if(is_array($memberships)) {
+ $xml .= "\t<membershiplist>\n";
+
+ foreach($memberships as $membership) {
+ $xml .= "\t\t<membership>\n";
+ $xml .= "\t\t\t<id>" . $membership->getID() . "</id>\n";
+ $xml .= "\t\t\t<groupid>" . $membership->getGroupID() . "</groupid>\n";
+ $xml .= "\t\t\t<roleid>" . $membership->getRoleID() . "</roleid>\n";
+ $xml .= "\t\t\t<personid>" . $membership->getPersonID() . "</personid>\n";
+ $xml .= "\t\t\t<suspend>" . $membership->getSuspend() . "</suspend>\n";
+ $xml .= "\t\t\t<apikey>" . $membership->getApikey() . "</apikey>\n";
+ $xml .= "\t\t</membership>\n";
+ }
+
+ $xml .= "\t</membershiplist>\n";
+ } else {
+ $xml .= "\t<error>no memberships founded</error>\n";
+ }
+ }
+
+ $xml .= "</xml>";
+
+ header('Content-Type: text/xml');
+ header('Content-Disposition: inline; filename="pool.xml"');
+ header('Pragma: no-cache');
+ header('Expires: 0');
+ echo $xml;
+ }
+
private function generateURL($action, $varname, $varvalue, $filename){
$path = '/resource/'. $action .'/' . $varname .'/' . $varvalue .'/bootmenuentryID/'.$this->thisSession->getBootmenuentryID().'/file/' . $filename ;
$path = "http://" . $_SERVER['SERVER_NAME'] . $path;