]> dev.renevier.net Git - syj.git/blobdiff - application/controllers/UserController.php
use cookies instead of session to manage login
[syj.git] / application / controllers / UserController.php
index ed078ad9688f2442965301f61e06964249735daa..ef7f7be1d2e50da98e10f6f6423febade9c54731 100644 (file)
@@ -1,10 +1,25 @@
 <?php
-/*  This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
+/*  This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
     and is published under the AGPL license. */
 
 class UserController extends Zend_Controller_Action
 {
 
+    public function existsAction() {
+        $name = $this->getRequest()->getUserParam('name');
+
+        $userMapper = new Syj_Model_UserMapper();
+        $user = new Syj_Model_User();
+
+        if ($userMapper->findByPseudo($name, $user)) {
+            $this->_helper->SyjApi->setCode(200);
+        } else {
+            // opera needs some body content with 404 code, otherwise, it
+            // reports a xmlhttprequest.status of 0
+            $this->_helper->SyjApi->setCode(404)->setBody(' ');
+        }
+    }
+
     public function userAction() {
         $formData = $this->_helper->SyjPostData->getPostData('Syj_Form_User');
 
@@ -19,7 +34,6 @@ class UserController extends Zend_Controller_Action
         $user->pseudo = $formData["user_pseudo"];
         $user->password = sha1($formData["user_password"]);
         $user->email = $formData["user_email"];
-        $user->creationAddr = $this->getRequest()->getClientIp(true);
 
         if (Zend_Registry::isRegistered('Zend_Translate')) {
             $translator = Zend_Registry::get('Zend_Translate');
@@ -47,7 +61,9 @@ class UserController extends Zend_Controller_Action
             }
         }
 
-        $this->_helper->SyjSession->login($user->id);
-        $this->_helper->SyjApi->setCode(200);
+        $this->_helper->SyjUserManager->validate($user->pseudo, $user->password);
+
+        $data = array('pseudo' => $user->pseudo);
+        $this->_helper->SyjApi->setBodyJson($data)->setCode(200);
     }
 }