Adding edit profile (and change password) option for users.

This commit is contained in:
Dan Cryer 2014-05-08 17:59:08 +00:00
parent 327abf551c
commit f3b0f041a1
3 changed files with 87 additions and 3 deletions

View file

@ -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.
*/

View file

@ -0,0 +1,15 @@
<h1><?php print $this->User()->getName(); ?></h1>
<?php if (isset($updated)): ?>
<p class="alert alert-success">Your details have been updated.</p>
<?php endif; ?>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Update your details</h3>
</div>
<div class="panel-body">
<?php print $form; ?>
</div>
</div>

View file

@ -37,13 +37,27 @@
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><p class="navbar-text"><strong><?php print htmlspecialchars($this->User()->getName()); ?></strong></p></li>
<li><a href="<?php print PHPCI_URL ?>session/logout">Log out</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<img class="pull-left" style="margin-right: 7px; margin-top: -5px; border-radius: 50%" src="http://www.gravatar.com/avatar/<?php print md5($this->User()->getEmail()); ?>?d=mm&amp;s=30">
<strong><?php print htmlspecialchars($this->User()->getName()); ?></strong> <b class="caret"></b>
</a>
<ul class="dropdown-menu" role="menu">
<li><a href="<?php print PHPCI_URL ?>user/profile">Edit Profile</a></li>
<li class="divider"></li>
<li><a href="<?php print PHPCI_URL ?>session/logout">Log out</a></li>
</ul>
</li>
<?php if ($this->User()->getIsAdmin()): ?>
<li>
<div class="btn-group">
<a class="btn btn-success navbar-btn" href="<?php echo PHPCI_URL ?>project/add">Add Project</a>
</div>
<div class="btn-group">
<button type="button" class="btn navbar-btn btn-default dropdown-toggle" data-toggle="dropdown">
Admin <span class="caret"></span>
</button>