Add user control panel and ability to change own password

This commit is contained in:
2011-12-19 19:30:35 +00:00
parent bd676e558e
commit 0567763fba
4 changed files with 136 additions and 1 deletions

View File

@@ -0,0 +1,47 @@
<?php
$main = StatusBoard_Main::instance();
$request = $main->request();
$auth = $main->auth();
$activity = null;
$success = true;
$errors = array();
$successes = array();
if ($request->exists('do')) {
$activity = $request->get('do');
switch ($activity) {
case 'change-password': {
$current_password = StatusBoard_Main::issetelse($_POST['currentpassword'], 'Sihnon_Exception_InvalidParameters');
$new_password = StatusBoard_Main::issetelse($_POST['newpassword'], 'Sihnon_Exception_InvalidParameters');
$confirm_password = StatusBoard_Main::issetelse($_POST['confirmpassword'], 'Sihnon_Exception_InvalidParameters');
$user = $auth->authenticatedUser();
if ($user->checkPassword($current_password)) {
if ($new_password == $confirm_password) {
$auth->changePassword($new_password);
$successes[] = 'The password has been changed successfully.';
} else {
$success = false;
$errors[] = 'The passwords did not match.';
}
} else {
$success = false;
$errors[] = 'The current password was incorrect.';
}
} break;
default: {
$success = false;
$errors[] = "The activity '{$activity}' was not recognised.";
} break;
}
}
$this->smarty->assign('activity', $activity);
$this->smarty->assign('successes', $successes);
$this->smarty->assign('errors', $errors);
?>

View File

@@ -15,6 +15,6 @@
{if $authenticated}
<p class="pull-right">
Logged in as <a href="#">{$user->username}</a>
Logged in as <a href="{$base_uri}usercp/">{$user->username}</a>
</p>
{/if}

View File

@@ -0,0 +1,62 @@
<div class="container">
{if $activity}
{if $successes}
{foreach from=$successes item=message}
<div class="alert-message success">
{$message|escape:html}
</div>
{/foreach}
{/if}
{if $errors}
{foreach from=$errors item=message}
<div class="alert-message error">
{$message|escape:html}
</div>
{/foreach}
{/if}
{/if}
<div class="row">
<div class="span16">
<form id="usercp_pwchange" method="post" action="{$base_uri}usercp/do/change-password/">
<fieldset>
<legend>Change Password</legend>
<div class="clearfix">
<label for="usercp_currentpassword">Current Password</label>
<div class="password">
<input class="xlarge span5" id="usercp_currentpassword" name="currentpassword" type="password"/>
</div>
</div><!-- /clearfix -->
<div class="clearfix">
<label for="usercp_newpassword">New Password</label>
<div class="password">
<input class="xlarge span5" id="usercp_newpassword" name="newpassword" type="password"/>
</div>
</div><!-- /clearfix -->
<div class="clearfix">
<label for="usercp_confirmpassword">Confirm Password</label>
<div class="password">
<input class="xlarge span5" id="usercp_confirmpassword" name="confirmpassword" type="password"/>
<span class="help-inline" style="display: none" id="usercp_confirmpassword_help">The passwords do not match.</span>
</div>
</div><!-- /clearfix -->
<div class="input">
<div class="clearfix">
<input type="submit" class="btn primary" value="Change Password">&nbsp;<button type="reset" class="btn">Cancel</button>
</div>
</div>
</fieldset>
</form>
</div><!-- /span16 -->
</div><!-- /row -->
</div><!-- /container -->
<script type="text/javascript">
$('document').ready(sb.usercp.init);
</script>