diff options
8 files changed, 163 insertions, 52 deletions
diff --git a/.zfproject.xml b/.zfproject.xml index 3dcb267..35860e2 100644 --- a/.zfproject.xml +++ b/.zfproject.xml @@ -47,6 +47,7 @@ <dbTableFile dbTableName="Session"/> <dbTableFile dbTableName="PreBoot"/> <dbTableFile dbTableName="PasswordRecovery"/> + <dbTableFile dbTableName="RightCategory"/> </dbTableDirectory> <modelFile modelName="BootIsoMapper"/> <modelFile modelName="BootMenuMapper"/> @@ -96,6 +97,8 @@ <modelFile modelName="PreBootMapper"/> <modelFile modelName="PasswordRecovery"/> <modelFile modelName="PasswordRecoveryMapper"/> + <modelFile modelName="RightCategory"/> + <modelFile modelName="RightCategoryMapper"/> </modelsDirectory> <modulesDirectory> <moduleDirectory moduleName="user"> @@ -339,10 +342,13 @@ <actionMethod actionName="index"/> <actionMethod actionName="login"/> <actionMethod actionName="logout"/> + <actionMethod actionName="selectmembership"/> + <actionMethod actionName="changemembership"/> </controllerFile> </controllersDirectory> <formsDirectory> <formFile formName="Login"/> + <formFile formName="MembershipSelect"/> </formsDirectory> <layoutsDirectory enabled="false"/> <modelsDirectory> @@ -352,15 +358,10 @@ <viewScriptsDirectory> <viewControllerScriptsDirectory forControllerName="Index"> <viewScriptFile forActionName="index"/> - </viewControllerScriptsDirectory> - <viewControllerScriptsDirectory forControllerName="Auth"> - <viewScriptFile forActionName="index"/> - </viewControllerScriptsDirectory> <viewControllerScriptsDirectory forControllerName="Auth"> <viewScriptFile forActionName="login"/> - </viewControllerScriptsDirectory> <viewControllerScriptsDirectory forControllerName="Auth"> - <viewScriptFile forActionName="logout"/> + <viewScriptFile forActionName="selectmembership"/> </viewControllerScriptsDirectory> </viewScriptsDirectory> <viewHelpersDirectory/> diff --git a/application/modules/dev/controllers/AuthController.php b/application/modules/dev/controllers/AuthController.php index 41952a2..0edb78c 100644 --- a/application/modules/dev/controllers/AuthController.php +++ b/application/modules/dev/controllers/AuthController.php @@ -110,8 +110,9 @@ class dev_AuthController extends Zend_Controller_Action $this->_helper-> viewRenderer-> setNoRender(); $auth = Zend_Auth::getInstance(); $auth->clearIdentity(); - $this->_helper->redirector('login', 'auth'); + Zend_Session::namespaceUnset('userIDs'); Zend_Session::forgetMe(); + $this->_helper->redirector('login', 'auth'); return; } diff --git a/application/modules/fbgui/controllers/AuthController.php b/application/modules/fbgui/controllers/AuthController.php index e9b6666..f5c3a27 100644 --- a/application/modules/fbgui/controllers/AuthController.php +++ b/application/modules/fbgui/controllers/AuthController.php @@ -3,27 +3,27 @@ class Fbgui_AuthController extends Zend_Controller_Action { - public function init() - { + public function init() + { $this->db = Zend_Db_Table::getDefaultAdapter(); $this->personmapper = new Application_Model_PersonMapper(); - } + } - public function indexAction() - { + public function indexAction() + { $this->_helper-> viewRenderer-> setNoRender(); $this->_helper->redirector('login', 'auth'); - } + } - public function loginAction() - { + public function loginAction() + { if (Zend_Auth::getInstance()->hasIdentity()) { - $this->_redirect('/user/'); + $this->_redirect('/fbgui/'); } else { if (!isset($_POST["login"])){ - $loginForm = new user_Form_Login(); + $loginForm = new fbgui_Form_Login(); } else { - $loginForm = new user_Form_Login($_POST); + $loginForm = new fbgui_Form_Login($_POST); if ($loginForm->isValid($_POST)) { @@ -31,48 +31,107 @@ class Fbgui_AuthController extends Zend_Controller_Action $adapter = new Zend_Auth_Adapter_DbTable( $this->db, - 'pbs_person', - 'email', - 'password', - 'MD5(CONCAT(?, password_salt))' - ); - - - $adapter->setIdentity($loginForm->getValue('email')); - $adapter->setCredential($loginForm->getValue('password')); - - $result = $auth->authenticate($adapter); - - // TODO: erweiterte fehlerbeschreibung des Users - - if ($result->isValid()) { - $this->personmapper = new Application_Model_PersonMapper(); - $result = $this->personmapper->findBy('email', Zend_Auth::getInstance()->getIdentity()); - $person = new Application_Model_Person($result[0]); - $person->setID($result[0]['personID']); - $date = new DateTime(); - $person->setLogindate($date->getTimestamp()); - $this->personmapper->save($person); - $this->_helper->redirector('selectmembership', 'person'); - return; - } else { - echo "Wrong Email or Password."; - } + 'pbs_person', + 'email', + 'password', + 'MD5(CONCAT(?, password_salt))' + ); + + + $adapter->setIdentity($loginForm->getValue('email')); + $adapter->setCredential($loginForm->getValue('password')); + + $result = $auth->authenticate($adapter); + + // TODO: erweiterte fehlerbeschreibung des Users + + if ($result->isValid()) { + $this->personmapper = new Application_Model_PersonMapper(); + $result = $this->personmapper->findBy('email', Zend_Auth::getInstance()->getIdentity()); + $person = new Application_Model_Person($result[0]); + $person->setID($result[0]['personID']); + $date = new DateTime(); + $person->setLogindate($date->getTimestamp()); + $this->personmapper->save($person); + $this->_helper->redirector('selectmembership', 'auth'); + return; + } else { + echo "Wrong Email or Password."; + } } } $this->view->loginForm = $loginForm; } - } + } - public function logoutAction() - { + public function logoutAction() + { $this->_helper-> viewRenderer-> setNoRender(); $auth = Zend_Auth::getInstance(); $auth->clearIdentity(); Zend_Session::namespaceUnset('userIDs'); + Zend_Session::forgetMe(); $this->_helper->redirector('login', 'auth'); return; - } + } + + public function selectmembershipAction() + { + if (Zend_Auth::getInstance()->hasIdentity()) { + $userIDsNamespace = Zend_Session::namespaceGet('userIDs'); + if(isset($userIDsNamespace['membershipID'])) { + $this->_redirect('/fbgui/'); + } else { + $personmapper = new Application_Model_PersonMapper(); + $result = $personmapper->findBy('email', Zend_Auth::getInstance()->getIdentity()); + $person = new Application_Model_Person($result[0]); + $person->setID($result[0]['personID']); + $membershipMapper = new Application_Model_MembershipMapper(); + $memberships = $membershipMapper->findBy("personID",$person->getID()); + if(count($memberships) > 0) { + if(isset($_POST['selectmembership'])) { + $roleSession = new Zend_Session_Namespace('userIDs'); + $roleSession->membershipID = $_POST['membershipID']; + $roleSession->personID = $person->getID(); + $membership = $membershipMapper->find($_POST['membershipID']); + $roleSession->groupID = $membership->getGroupID(); + $roleSession->roleID = $membership->getRoleID(); + $this->_redirect('/fbgui/'); + return; + } else { + $groupMapper = new Application_Model_GroupMapper(); + $roleMapper = new Application_Model_RoleMapper(); + if(isset($memberships)) { + foreach($memberships as $membership) { + $group = $groupMapper->find($membership['groupID']); + $role = $roleMapper->find($membership['roleID']); + $membershipList[] = array( + 'membershipID' => $membership['membershipID'], + 'group' => $group->getTitle(), + 'role' => $role->getTitle() + ); + } + } + $membershipSelectForm = new fbgui_Form_MembershipSelect(array('membershiplist' => $membershipList)); + $this->view->membershipSelectForm = $membershipSelectForm; + } + } else { + $this->_redirect('/fbgui/'); + } + } + + } else { + $this->_helper->redirector('login', 'auth'); + } + } + + public function changemembershipAction() + { + $this->_helper-> viewRenderer-> setNoRender(); + Zend_Session::namespaceUnset('userIDs'); + $this->_helper->redirector('selectmembership', 'auth'); + return; + } } @@ -81,3 +140,7 @@ class Fbgui_AuthController extends Zend_Controller_Action + + + + diff --git a/application/modules/fbgui/forms/MembershipSelect.php b/application/modules/fbgui/forms/MembershipSelect.php new file mode 100644 index 0000000..5b21fa7 --- /dev/null +++ b/application/modules/fbgui/forms/MembershipSelect.php @@ -0,0 +1,42 @@ +<?php + +class fbgui_Form_MembershipSelect extends Zend_Form +{ + private $membershiplist; + + public function setMembershiplist($membershiplist){ + $this->membershiplist = $membershiplist; + + } + + public function getMembershiplist(){ + return $this->membershiplist; + } + + public function init() + { + $this->setName("MembershipSelect"); + $this->setMethod('post'); + + $membershipfield = $this->createElement('select','membershipID'); + $membershipfield ->setLabel('Membership:'); + + if(count($this->membershiplist)>0){ + foreach($this->membershiplist as $membership => $m){ + $membershipfield->addMultiOption($m['membershipID'], $m['group'] . ' - ' . $m['role']); + } + } + + $membershipfield->setRegisterInArrayValidator(false); + $this->addElement($membershipfield); + + $this->addElement('submit', 'selectmembership', array( + 'required' => false, + 'ignore' => true, + 'label' => 'Select Membership', + )); + } + + +} + diff --git a/application/modules/fbgui/views/scripts/auth/login.phtml b/application/modules/fbgui/views/scripts/auth/login.phtml index d68d2af..17b1c16 100644 --- a/application/modules/fbgui/views/scripts/auth/login.phtml +++ b/application/modules/fbgui/views/scripts/auth/login.phtml @@ -1,5 +1,4 @@ <?php $this->loginForm->setAction($this->url()); echo $this->loginForm; -?> -<div><button onclick="location.href='/user/auth/recoverpassword'">Recover Password</button></div>
\ No newline at end of file +?>
\ No newline at end of file diff --git a/application/modules/fbgui/views/scripts/auth/selectmembership.phtml b/application/modules/fbgui/views/scripts/auth/selectmembership.phtml new file mode 100644 index 0000000..2bfe4d6 --- /dev/null +++ b/application/modules/fbgui/views/scripts/auth/selectmembership.phtml @@ -0,0 +1,4 @@ +<?php +$this->membershipSelectForm->setAction($this->url()); +echo $this->membershipSelectForm; +?>
\ No newline at end of file diff --git a/application/modules/user/controllers/AuthController.php b/application/modules/user/controllers/AuthController.php index db47f44..13ad7f4 100644 --- a/application/modules/user/controllers/AuthController.php +++ b/application/modules/user/controllers/AuthController.php @@ -74,6 +74,7 @@ class User_AuthController extends Zend_Controller_Action $auth = Zend_Auth::getInstance(); $auth->clearIdentity(); Zend_Session::namespaceUnset('userIDs'); + Zend_Session::forgetMe(); $this->_helper->redirector('login', 'auth'); return; } diff --git a/application/modules/user/forms/MembershipSelect.php b/application/modules/user/forms/MembershipSelect.php index fbf8b8a..fe6870a 100644 --- a/application/modules/user/forms/MembershipSelect.php +++ b/application/modules/user/forms/MembershipSelect.php @@ -33,7 +33,7 @@ class user_Form_MembershipSelect extends Zend_Form $this->addElement('submit', 'selectmembership', array( 'required' => false, 'ignore' => true, - 'label' => 'Select Group', + 'label' => 'Select Membership', )); } |