Move status messages into new class

This commit is contained in:
Joseph Haig 2016-07-09 00:55:03 +01:00
parent 2c86f262ba
commit a28b926b3a
2 changed files with 30 additions and 16 deletions

View file

@ -1,38 +1,30 @@
<?php <?php
function Status($message, $level='success', $dismissable=true) { include_once( 'includes/status_messages.php' );
$status = '<div class="alert alert-'.$level;
if ($dismissable) $status .= ' alert-dismissable';
$status .= '">'.$message;
if ($dismissable) $status .= '<button type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>';
$status .= '</div>';
return $status;
}
function DisplayAuthConfig($username, $password){ function DisplayAuthConfig($username, $password){
$status = ''; $status = new StatusMessages();
if (isset($_POST['UpdateAdminPassword'])) { if (isset($_POST['UpdateAdminPassword'])) {
if (CSRFValidate()) { if (CSRFValidate()) {
if (password_verify($_POST['oldpass'], $password)) { if (password_verify($_POST['oldpass'], $password)) {
$new_username=trim($_POST['username']); $new_username=trim($_POST['username']);
if ($_POST['newpass'] != $_POST['newpassagain']) { if ($_POST['newpass'] != $_POST['newpassagain']) {
$status = Status('New passwords do not match', 'danger'); $status->addMessage('New passwords do not match', 'danger');
} else if ($new_username == '') { } else if ($new_username == '') {
$status = Status('Username must not be empty', 'danger'); $status->addMessage('Username must not be empty', 'danger');
} else { } else {
if ($auth_file = fopen(RASPI_ADMIN_DETAILS, 'w')) { if ($auth_file = fopen(RASPI_ADMIN_DETAILS, 'w')) {
fwrite($auth_file, $new_username.PHP_EOL); fwrite($auth_file, $new_username.PHP_EOL);
fwrite($auth_file, password_hash($_POST['newpass'], PASSWORD_BCRYPT).PHP_EOL); fwrite($auth_file, password_hash($_POST['newpass'], PASSWORD_BCRYPT).PHP_EOL);
fclose($auth_file); fclose($auth_file);
$username = $new_username; $username = $new_username;
$status = Status('Admin password updated'); $status->addMessage('Admin password updated');
} else { } else {
$status = Status('Failed to update admin password', 'danger'); $status->addMessage('Failed to update admin password', 'danger');
} }
} }
} else { } else {
$status = Status('Old password does not match', 'danger'); $status->addMessage('Old password does not match', 'danger');
} }
} else { } else {
error_log('CSRF violation'); error_log('CSRF violation');
@ -44,7 +36,7 @@ function DisplayAuthConfig($username, $password){
<div class="panel panel-primary"> <div class="panel panel-primary">
<div class="panel-heading"><i class="fa fa-lock fa-fw"></i>Configure Auth</div> <div class="panel-heading"><i class="fa fa-lock fa-fw"></i>Configure Auth</div>
<div class="panel-body"> <div class="panel-body">
<p><?php echo $status; ?></p> <p><?php $status->showMessages(); ?></p>
<form role="form" action="/?page=auth_conf" method="POST"> <form role="form" action="/?page=auth_conf" method="POST">
<?php CSRFToken() ?> <?php CSRFToken() ?>
<div class="row"> <div class="row">

View file

@ -0,0 +1,22 @@
<?php
class StatusMessages {
public $messages = array();
public function addMessage($message, $level='success', $dismissable=true) {
$status = '<div class="alert alert-'.$level;
if ($dismissable) $status .= ' alert-dismissable';
$status .= '">'.$message;
if ($dismissable) $status .= '<button type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>';
$status .= '</div>';
array_push($this->messages, $status);
}
public function showMessages($clear = true) {
foreach($this->messages as $message) {
echo $message;
}
if ( $clear ) $this->messages = array();
}
}
?>