From 0654bcccee396cc39dc600c48d9a3e7045597f4b Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Thu, 8 May 2014 17:59:08 +0000 Subject: [PATCH] Adding edit profile (and change password) option for users. --- PHPCI/Controller/UserController.php | 57 ++++++++++++++++++++++++++++- PHPCI/View/User/profile.phtml | 15 ++++++++ PHPCI/View/layout.phtml | 18 ++++++++- 3 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 PHPCI/View/User/profile.phtml diff --git a/PHPCI/Controller/UserController.php b/PHPCI/Controller/UserController.php index c8fade0c..817cb5e8 100644 --- a/PHPCI/Controller/UserController.php +++ b/PHPCI/Controller/UserController.php @@ -29,7 +29,7 @@ class UserController extends Controller public function init() { - $this->userStore = b8\Store\Factory::getStore('User'); + $this->userStore = b8\Store\Factory::getStore('User'); } /** @@ -45,6 +45,61 @@ class UserController extends Controller return $this->view->render(); } + public function profile() + { + $user = $_SESSION['user']; + $values = $user->getDataArray(); + + if ($this->request->getMethod() == 'POST') { + $values = $this->getParams(); + + if (!empty($values['password'])) { + $values['hash'] = password_hash($values['password'], PASSWORD_DEFAULT); + } + + $this->view->updated = true; + + $user->setValues($values); + $_SESSION['user'] = $this->userStore->save($user); + } + + $form = new Form(); + $form->setAction(PHPCI_URL.'user/profile'); + $form->setMethod('POST'); + + $name = new Form\Element\Text('name'); + $name->setClass('form-control'); + $name->setContainerClass('form-group'); + $name->setLabel('Name'); + $name->setRequired(true); + $form->addField($name); + + $email = new Form\Element\Email('email'); + $email->setClass('form-control'); + $email->setContainerClass('form-group'); + $email->setLabel('Email Address'); + $email->setRequired(true); + $form->addField($email); + + $password = new Form\Element\Password('password'); + $password->setClass('form-control'); + $password->setContainerClass('form-group'); + $password->setLabel('Password (leave blank if you don\'t want to change it)'); + $password->setRequired(false); + $form->addField($password); + + $submit = new Form\Element\Submit(); + $submit->setClass('btn btn-success'); + $submit->setValue('Save »'); + $form->addField($submit); + + $form->setValues($values); + + $this->view->form = $form; + + return $this->view->render(); + } + /** * Add a user - handles both form and processing. */ diff --git a/PHPCI/View/User/profile.phtml b/PHPCI/View/User/profile.phtml new file mode 100644 index 00000000..5e006738 --- /dev/null +++ b/PHPCI/View/User/profile.phtml @@ -0,0 +1,15 @@ +

User()->getName(); ?>

+ + +

Your details have been updated.

+ + +
+
+

Update your details

+
+
+ +
+
+ diff --git a/PHPCI/View/layout.phtml b/PHPCI/View/layout.phtml index 58b78cc2..ed3e539e 100644 --- a/PHPCI/View/layout.phtml +++ b/PHPCI/View/layout.phtml @@ -37,13 +37,27 @@