diff options
author | Björn Geiger | 2011-04-13 15:05:53 +0200 |
---|---|---|
committer | Björn Geiger | 2011-04-13 15:05:53 +0200 |
commit | 63b4fb51d481e4376f60f188c171d57970abbd46 (patch) | |
tree | 0c5ef7afcae61c36d1b0cb2657598bf2d381b5af | |
parent | Zweiter Teil der Rechte in Group Controller (diff) | |
download | pbs2-63b4fb51d481e4376f60f188c171d57970abbd46.tar.gz pbs2-63b4fb51d481e4376f60f188c171d57970abbd46.tar.xz pbs2-63b4fb51d481e4376f60f188c171d57970abbd46.zip |
Suspend und Resume Account
-rw-r--r-- | .zfproject.xml | 3 | ||||
-rw-r--r-- | application/models/Person.php | 60 | ||||
-rw-r--r-- | application/models/PersonMapper.php | 6 | ||||
-rw-r--r-- | application/modules/user/controllers/AuthController.php | 12 | ||||
-rw-r--r-- | application/modules/user/controllers/PersonController.php | 49 | ||||
-rw-r--r-- | application/modules/user/forms/PersonEdit.php | 2 | ||||
-rw-r--r-- | application/modules/user/forms/Register.php | 2 | ||||
-rw-r--r-- | application/modules/user/views/scripts/person/index.phtml | 39 | ||||
-rw-r--r-- | application/modules/user/views/scripts/person/owndetails.phtml | 48 | ||||
-rw-r--r-- | application/modules/user/views/scripts/person/show.phtml | 29 | ||||
-rw-r--r-- | pbs.sql | 1 | ||||
-rw-r--r-- | public/media/img/resume.png | bin | 0 -> 355 bytes | |||
-rw-r--r-- | public/media/img/suspend.png | bin | 0 -> 335 bytes |
13 files changed, 184 insertions, 67 deletions
diff --git a/.zfproject.xml b/.zfproject.xml index b90455d..09c216a 100644 --- a/.zfproject.xml +++ b/.zfproject.xml @@ -126,6 +126,7 @@ <actionMethod actionName="owndetails"/> <actionMethod actionName="show"/> <actionMethod actionName="deleterequest"/> + <actionMethod actionName="suspend"/> </controllerFile> <controllerFile controllerName="Group"> <actionMethod actionName="index"/> @@ -136,6 +137,8 @@ <actionMethod actionName="delete"/> <actionMethod actionName="grantperson"/> <actionMethod actionName="revokeperson"/> + <actionMethod actionName="decline"/> + <actionMethod actionName="suspendmembership"/> </controllerFile> <controllerFile controllerName="Role"> <actionMethod actionName="index"/> diff --git a/application/models/Person.php b/application/models/Person.php index aea348d..6a591cf 100644 --- a/application/models/Person.php +++ b/application/models/Person.php @@ -16,6 +16,7 @@ class Application_Model_Person protected $_login; protected $_password; protected $_password_salt; + protected $_suspended; public function __construct(array $options = null) { @@ -183,39 +184,48 @@ class Application_Model_Person { return $this->_password_salt; } - /** - * Returns current data as associative array using ReflectionClass - * - * @return array Returns associative array containing model data + public function getSuspended() + { + return $this->_suspended; + } + public function setSuspended($_suspended) + { + $this->_suspended = $_suspended; + return $this; + } + /** + * Returns current data as associative array using ReflectionClass + * + * @return array Returns associative array containing model data * If "get"-method not available (our primary keys) the function getID() is called - */ - public function toArray() - { - $reflectionClass = new ReflectionClass($this); - $properties = $reflectionClass->getProperties(); - $result = array(); - foreach ($properties as $property) { - $key = $property->name; - if (substr($key, 0, 1) != '_' && $this->$key !== null) { - $method = 'get' . ucfirst($key); - if ($reflectionClass->hasMethod($method)) { - $result[$key] = $this->$method(); - } else { - $result[$key] = $this->$key; - } - } + */ + public function toArray() + { + $reflectionClass = new ReflectionClass($this); + $properties = $reflectionClass->getProperties(); + $result = array(); + foreach ($properties as $property) { + $key = $property->name; + if (substr($key, 0, 1) != '_' && $this->$key !== null) { + $method = 'get' . ucfirst($key); + if ($reflectionClass->hasMethod($method)) { + $result[$key] = $this->$method(); + } else { + $result[$key] = $this->$key; + } + } elseif(substr($key, 0, 1) == '_' && $this->$key !== null) { $key = substr($key, 1); - $method = 'get' . ucfirst($key); + $method = 'get' . ucfirst($key); if ($reflectionClass->hasMethod($method)) { $result[$key] = $this->$method(); }else{ $result[$key] = $this->getID(); } - + } - } - return $result; - } + } + return $result; + } } diff --git a/application/models/PersonMapper.php b/application/models/PersonMapper.php index 537d862..4093c07 100644 --- a/application/models/PersonMapper.php +++ b/application/models/PersonMapper.php @@ -74,7 +74,7 @@ class Application_Model_PersonMapper public function save(Application_Model_Person $person) { - $data = array('personID'=> $person->getID() ,'title'=> $person->getTitle() ,'name'=> $person->getName() ,'firstname'=> $person->getFirstname() ,'street'=> $person->getStreet() ,'housenumber'=> $person->getHousenumber() ,'city'=> $person->getCity() ,'postalcode'=> $person->getPostalcode() ,'logindate'=> $person->getLogindate() ,'registerdate'=> $person->getRegisterdate() ,'email'=> $person->getEmail() ,'login'=> $person->getLogin() ,'password'=> $person->getPassword() ,'password_salt'=> $person->getPasswordSalt() ); + $data = array('personID'=> $person->getID() ,'title'=> $person->getTitle() ,'name'=> $person->getName() ,'firstname'=> $person->getFirstname() ,'street'=> $person->getStreet() ,'housenumber'=> $person->getHousenumber() ,'city'=> $person->getCity() ,'postalcode'=> $person->getPostalcode() ,'logindate'=> $person->getLogindate() ,'registerdate'=> $person->getRegisterdate() ,'email'=> $person->getEmail() ,'login'=> $person->getLogin() ,'password'=> $person->getPassword() ,'password_salt'=> $person->getPasswordSalt() ,'suspended'=> $person->getSuspended() ); if (null === ($id = $person->getID()) ) { unset($data['personID']); @@ -110,7 +110,7 @@ class Application_Model_PersonMapper $row = $result->current(); - $person->setID($row->personID)->setTitle($row->title)->setName($row->name)->setFirstname($row->firstname)->setStreet($row->street)->setHousenumber($row->housenumber)->setCity($row->city)->setPostalcode($row->postalcode)->setLogindate($row->logindate)->setRegisterdate($row->registerdate)->setEmail($row->email)->setLogin($row->login)->setPassword($row->password)->setPasswordSalt($row->password_salt); + $person->setID($row->personID)->setTitle($row->title)->setName($row->name)->setFirstname($row->firstname)->setStreet($row->street)->setHousenumber($row->housenumber)->setCity($row->city)->setPostalcode($row->postalcode)->setLogindate($row->logindate)->setRegisterdate($row->registerdate)->setEmail($row->email)->setLogin($row->login)->setPassword($row->password)->setPasswordSalt($row->password_salt)->setSuspended($row->suspended); if($return){ return $person; } @@ -123,7 +123,7 @@ class Application_Model_PersonMapper foreach ($resultSet as $row) { $entry = new Application_Model_Person(); - $entry->setID($row->personID)->setTitle($row->title)->setName($row->name)->setFirstname($row->firstname)->setStreet($row->street)->setHousenumber($row->housenumber)->setCity($row->city)->setPostalcode($row->postalcode)->setLogindate($row->logindate)->setRegisterdate($row->registerdate)->setEmail($row->email)->setLogin($row->login)->setPassword($row->password)->setPasswordSalt($row->password_salt); + $entry->setID($row->personID)->setTitle($row->title)->setName($row->name)->setFirstname($row->firstname)->setStreet($row->street)->setHousenumber($row->housenumber)->setCity($row->city)->setPostalcode($row->postalcode)->setLogindate($row->logindate)->setRegisterdate($row->registerdate)->setEmail($row->email)->setLogin($row->login)->setPassword($row->password)->setPasswordSalt($row->password_salt)->setSuspended($row->suspended); $entries[] = $entry; } diff --git a/application/modules/user/controllers/AuthController.php b/application/modules/user/controllers/AuthController.php index d1596ae..a90c8db 100644 --- a/application/modules/user/controllers/AuthController.php +++ b/application/modules/user/controllers/AuthController.php @@ -52,9 +52,14 @@ class User_AuthController extends Zend_Controller_Action $person->setID($result[0]['personID']); $date = new DateTime(); $person->setLogindate($date->getTimestamp()); - $this->personmapper->save($person); - $this->_helper->redirector('selectmembership', 'person'); - return; + if($person->getSuspended()) { + $pbsNotifier = new Pbs_Notifier(); + $this->view->notification = $pbsNotifier->notify('Your Account is suspended', 'error'); + } else { + $this->personmapper->save($person); + $this->_helper->redirector('selectmembership', 'person'); + return; + } } else { $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('Wrong Email or Password', 'error'); @@ -95,6 +100,7 @@ class User_AuthController extends Zend_Controller_Action $person = new Application_Model_Person($_POST); $this->personmapper = new Application_Model_PersonMapper(); $date = new DateTime(); + $person->setSuspended(0); $person->setRegisterdate($date->getTimestamp()); $person->setPasswordSalt(MD5($date->getTimestamp())); $person->setPassword(MD5($person->getPassword() . $person->getPasswordSalt())); diff --git a/application/modules/user/controllers/PersonController.php b/application/modules/user/controllers/PersonController.php index bbdf232..975b10e 100644 --- a/application/modules/user/controllers/PersonController.php +++ b/application/modules/user/controllers/PersonController.php @@ -63,6 +63,7 @@ class user_PersonController extends Zend_Controller_Action $this->view->showOtherRight = Pbs_Acl::checkRight('psood'); $this->view->editOtherRight = Pbs_Acl::checkRight('peoa'); $this->view->deleteOtherRight = Pbs_Acl::checkRight('pdo'); + $this->view->suspendRight = Pbs_Acl::checkRight('psa'); $this->view->userIDsNamespace = $this->userIDsNamespace; $this->view->personList = $this->personmapper->fetchAll(); @@ -123,6 +124,7 @@ class user_PersonController extends Zend_Controller_Action $this->view->groupRequestRight = true; $this->view->editRight = Pbs_Acl::checkRight('peod'); $this->view->leaveRight = Pbs_Acl::checkRight('gl'); + $this->view->suspendRight = Pbs_Acl::checkRight('psa'); $this->view->userIDsNamespace = Zend_Session::namespaceGet('userIDs'); } @@ -386,6 +388,7 @@ class user_PersonController extends Zend_Controller_Action $this->view->personID = $personID; $this->view->editRight = Pbs_Acl::checkRight('peoa'); $this->view->deleteRight = Pbs_Acl::checkRight('pd'); + $this->view->suspendRight = Pbs_Acl::checkRight('psa'); $this->view->userIDsNamespace = Zend_Session::namespaceGet('userIDs'); } else { $this->_helper->redirector('', 'person'); @@ -409,6 +412,52 @@ class user_PersonController extends Zend_Controller_Action return; } + public function suspendAction() + { + if(!Pbs_Acl::checkRight('psa')) { + $this->_redirect('/user'); + } + $this->_helper->viewRenderer->setNoRender(); + $personID = $this->_request->getParam('personID'); + if(isset($personID)) { + $person = $this->personmapper->find($personID); + $person->setSuspended(1); + if(isset($person)) { + try { + $this->personmapper->save($person); + } catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "<br/>"; + echo "Message: " . $e->getMessage() . "<br/>"; + return; + } + $this->_redirect("/user/person/"); + } + } + } + public function resumeAction() + { + if(!Pbs_Acl::checkRight('psa')) { + $this->_redirect('/user'); + } + $this->_helper->viewRenderer->setNoRender(); + $personID = $this->_request->getParam('personID'); + if(isset($personID)) { + $person = $this->personmapper->find($personID); + $person->setSuspended(0); + if(isset($person)) { + try { + $this->personmapper->save($person); + } catch(Zend_Exception $e) + { + echo "Caught exception: " . get_class($e) . "<br/>"; + echo "Message: " . $e->getMessage() . "<br/>"; + return; + } + $this->_redirect("/user/person/"); + } + } + } } diff --git a/application/modules/user/forms/PersonEdit.php b/application/modules/user/forms/PersonEdit.php index 7175691..392174c 100644 --- a/application/modules/user/forms/PersonEdit.php +++ b/application/modules/user/forms/PersonEdit.php @@ -92,7 +92,7 @@ class user_Form_PersonEdit extends Zend_Form $this->addElement('password', 'newpassword', array( 'filters' => array('StringTrim'), 'validators' => array( - array('StringLength', false, array(0, 50)), + array('StringLength', false, array(5, 50)), ), 'required' => false, 'label' => 'Neues Password:', diff --git a/application/modules/user/forms/Register.php b/application/modules/user/forms/Register.php index 9c2a42d..1a054c4 100644 --- a/application/modules/user/forms/Register.php +++ b/application/modules/user/forms/Register.php @@ -84,7 +84,7 @@ class user_Form_Register extends Zend_Form $this->addElement('password', 'password', array( 'filters' => array('StringTrim'), 'validators' => array( - array('StringLength', false, array(0, 50)), + array('StringLength', false, array(5, 50)), ), 'required' => true, 'label' => 'Password:', diff --git a/application/modules/user/views/scripts/person/index.phtml b/application/modules/user/views/scripts/person/index.phtml index 1304299..93dfd78 100644 --- a/application/modules/user/views/scripts/person/index.phtml +++ b/application/modules/user/views/scripts/person/index.phtml @@ -15,14 +15,12 @@ $class=''; if($person->getID() == $this->userIDsNamespace['personID']) $class= 'highlight checked'; ?> -<div class='element<?php echo " $class";?>'> -<?php if($person->getID() != $this->userIDsNamespace['personID']) { +<div class='element<?php echo " $class";?>'><?php if($person->getID() != $this->userIDsNamespace['personID']) { ?> - <div class='number'> - <div class='smallnumber'>Person</div> - <?php echo $k+1; ?> - </div> -<?php +<div class='number'> +<div class='smallnumber'>Person</div> + <?php echo $k+1; ?></div> + <?php } ?> <div class='content'> @@ -103,6 +101,33 @@ if($person->getID() == $this->userIDsNamespace['personID']) { <?php } } +if($this->suspendRight === true) { + if($person->getSuspended() == 1) { + ?> <a + href=" <?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'person', + 'action' => 'resume', + 'personID' => $person->getID() + ), + 'default', + true); ?>"> <img src='/media/img/resume.png' alt='Resume Account' /></a> + <?php + } else { + ?> <a + href=" <?php echo $this->url( + array( + 'module' => 'user', + 'controller' => 'person', + 'action' => 'suspend', + 'personID' => $person->getID() + ), + 'default', + true); ?>"> <img src='/media/img/suspend.png' + alt='Suspend Account' /></a> <?php + } +} ?></div> <div class='title'><?php echo $person->getTitle(); ?> <?php echo $person->getFirstname(); ?> <?php echo $person->getName(); ?></div> <div class='subtitle'><?php echo $person->getEmail(); ?></div> diff --git a/application/modules/user/views/scripts/person/owndetails.phtml b/application/modules/user/views/scripts/person/owndetails.phtml index db9221d..dc6e9aa 100644 --- a/application/modules/user/views/scripts/person/owndetails.phtml +++ b/application/modules/user/views/scripts/person/owndetails.phtml @@ -1,27 +1,40 @@ <h1>Own Details</h1> <style> -label{width:150px !important;} +label { + width: 150px !important; +} </style> <?php if($this->editRight === true) echo $this->formButton('editperson', 'Edit', array( 'onclick' => 'self.location="/user/person/edit/"', 'class' => 'rightbutton'))?> <div class='listelement'> <div class='element'> - <div class='content'> - <div class='title'><?php echo $this->person->getTitle()." ".$this->person->getFirstname()." ".$this->person->getName(); ?></div> - <div class='subtitle'><?php echo $this->person->getEmail(); ?></div> - <div class='details'> - <label>Street:</label><div class='item'><?php echo $this->person->getStreet(); ?> </div> - <label>Housenumber:</label><div class='item'><?php echo $this->person->getHousenumber(); ?> </div> - <label>City:</label><div class='item'><?php echo $this->person->getCity(); ?> </div> - <label>Postalcode:</label><div class='item'><?php echo $this->person->getPostalcode(); ?> </div> - <label>Email:</label><div class='item'><?php echo $this->person->getEmail(); ?> </div> - <label>Last Login:</label><div class='item'><?php if( $this->person->getLogindate()) echo date ('d. F Y - H:i', $this->person->getLogindate()) . " Uhr"; ?> </div> - <label>Register Date:</label><div class='item'><?php echo date ('d. F Y - H:i', $this->person->getRegisterdate()) . ' Uhr'; ?> </div> - </div> - </div> - <div class='clear'> +<div class='content'> +<div class='title'><?php echo $this->person->getTitle()." ".$this->person->getFirstname()." ".$this->person->getName(); ?></div> +<div class='subtitle'><?php echo $this->person->getEmail(); ?></div> +<div class='details'><label>Street:</label> +<div class='item'><?php echo $this->person->getStreet(); ?> </div> +<label>Housenumber:</label> +<div class='item'><?php echo $this->person->getHousenumber(); ?> </div> +<label>City:</label> +<div class='item'><?php echo $this->person->getCity(); ?> </div> +<label>Postalcode:</label> +<div class='item'><?php echo $this->person->getPostalcode(); ?> </div> +<label>Email:</label> +<div class='item'><?php echo $this->person->getEmail(); ?> </div> +<label>Last Login:</label> +<div class='item'><?php if( $this->person->getLogindate()) echo date ('d. F Y - H:i', $this->person->getLogindate()) . " Uhr"; ?> </div> +<label>Register Date:</label> +<div class='item'><?php echo date ('d. F Y - H:i', $this->person->getRegisterdate()) . ' Uhr'; ?> </div> +<?php if($this->suspendRight === true) +{ + ?> <label>Suspended:</label> +<div class='item'><?php if($this->person->getSuspended() == 1) echo "yes"; else echo "no"; ?></div> + <?php +} +?></div> </div> +<div class='clear'></div> </div> <br /> <h2>Member in the following Groups:</h2> @@ -65,8 +78,7 @@ $class= 'highlight checked'; <?php endforeach ?></div> <?php echo $this->pagination; if(isset($this->groupRequestList)) { - ?> -<br /> + ?> <br /> <h2>Requests:</h2> <div class='listelement'><?php foreach($this->groupRequestList as $grouprequest) { @@ -103,4 +115,4 @@ foreach($this->groupRequestList as $grouprequest) { ?></div> <?php } - ?> + ?>
\ No newline at end of file diff --git a/application/modules/user/views/scripts/person/show.phtml b/application/modules/user/views/scripts/person/show.phtml index c43bde3..2f2ef56 100644 --- a/application/modules/user/views/scripts/person/show.phtml +++ b/application/modules/user/views/scripts/person/show.phtml @@ -66,7 +66,18 @@ </div> <div class='clear'></div> </div> +<?php if($this->suspendRight === true) +{ + ?> +<div class='element'> +<div class='content'> +<div class="title">Suspended: <span class="noBold"><?php if($this->person->getSuspended() == 1) echo "yes"; else echo "no"; ?></span></div> +</div> +<div class='clear'></div> </div> + <?php +} +?></div> <br /> <h2>Member in the following Groups:</h2> <div class='listelement'><?php if(count($this->groups)==0) @@ -105,18 +116,18 @@ foreach($this->groupRequestList as $grouprequest) { <div class='element'> <div class='content'> <div class='title'><?php echo $group->getTitle(); ?></div> - <?php if($group->getDescription()) { - ?> + <?php if($group->getDescription()) { + ?> <div class='subtitle'><?php echo $group->getDescription(); ?></div> - <?php - } else { - ?> + <?php + } else { + ?> <div class='subtitle'> </div> - <?php - } - ?></div> + <?php + } + ?></div> </div> - <?php + <?php } ?></div> <?php @@ -81,6 +81,7 @@ CREATE TABLE IF NOT EXISTS `pbs_person` ( `login` varchar(30) COLLATE utf8_unicode_ci, `password` varchar(64) COLLATE utf8_unicode_ci NOT NULL, `password_salt` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `suspended` tinyint(1) NOT NULL, PRIMARY KEY (`personID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; diff --git a/public/media/img/resume.png b/public/media/img/resume.png Binary files differnew file mode 100644 index 0000000..a921ebc --- /dev/null +++ b/public/media/img/resume.png diff --git a/public/media/img/suspend.png b/public/media/img/suspend.png Binary files differnew file mode 100644 index 0000000..54e23c5 --- /dev/null +++ b/public/media/img/suspend.png |