From bee5fcbe24b90ae8b70845296ffe6078f9f33df6 Mon Sep 17 00:00:00 2001
From: David Goodwin
Date: Tue, 13 Aug 2019 09:19:22 +0100
Subject: [PATCH] improve setup form - only display "add superadmin account" if
setup password is configured; change verbs depending on context etc; see
https://github.com/postfixadmin/postfixadmin/issues/263
---
public/setup.php | 217 +++++++++++++++++++++++------------------------
1 file changed, 105 insertions(+), 112 deletions(-)
diff --git a/public/setup.php b/public/setup.php
index 508c3001..0f6c18d3 100644
--- a/public/setup.php
+++ b/public/setup.php
@@ -276,91 +276,99 @@ require(dirname(__FILE__) . '/../templates/header.php');
if ($error != 0) {
print "Please fix the errors listed above.
";
} else {
- print "Everything seems fine... attempting to create/update database structure
\n";
- require_once(dirname(__FILE__) . '/upgrade.php');
+ print "Everything seems fine... attempting to create/update database structure
\n";
+ require_once(dirname(__FILE__) . '/upgrade.php');
- $tUsername = '';
- $setupMessage = '';
- $lostpw_error = 0;
+ $tUsername = '';
+ $setupMessage = '';
+ $lostpw_error = 0;
- $setuppw = "";
- if (isset($CONF['setup_password'])) {
- $setuppw = $CONF['setup_password'];
- }
-
- if (safepost("form") == "setuppw") {
- # "setup password" form submitted
- if (safepost('setup_password') != safepost('setup_password2')) {
- $setupMessage = "The two passwords differ!";
- $lostpw_error = 1;
- } else {
- list($lostpw_error, $lostpw_result) = check_setup_password(safepost('setup_password'), 1);
- $setupMessage = $lostpw_result;
- $setuppw = "changed";
- }
- } elseif (safepost("form") == "createadmin") {
- # "create admin" form submitted
- list($pw_check_error, $pw_check_result) = check_setup_password(safepost('setup_password'));
- if ($pw_check_result != 'pass_OK') {
- $error += 1;
- $setupMessage = $pw_check_result;
+ $setuppw = "";
+ if (isset($CONF['setup_password'])) {
+ $setuppw = $CONF['setup_password'];
}
- if ($error == 0 && $pw_check_result == 'pass_OK') {
- // XXX need to ensure domains table includes an 'ALL' entry.
- $table_domain = table_by_key('domain');
- $rows = db_query_all("SELECT * FROM $table_domain WHERE domain = 'ALL'");
- if (empty($rows)) {
- db_insert('domain', array('domain' => 'ALL', 'description' => '', 'transport' => '')); // all other fields should default through the schema.
+ if (safepost("form") == "setuppw") {
+ # "setup password" form submitted
+ if (safepost('setup_password') != safepost('setup_password2')) {
+ $setupMessage = "The two passwords differ!";
+ $lostpw_error = 1;
+ } else {
+ list($lostpw_error, $lostpw_result) = check_setup_password(safepost('setup_password'), 1);
+ $setupMessage = $lostpw_result;
+ $setuppw = "changed";
+ }
+ } elseif (safepost("form") == "createadmin") {
+ # "create admin" form submitted
+ list($pw_check_error, $pw_check_result) = check_setup_password(safepost('setup_password'));
+ if ($pw_check_result != 'pass_OK') {
+ $error += 1;
+ $setupMessage = $pw_check_result;
}
- $values = array(
- 'username' => safepost('username'),
- 'password' => safepost('password'),
- 'password2' => safepost('password2'),
- 'superadmin' => 1,
- 'domains' => array(),
- 'active' => 1,
- );
+ if ($error == 0 && $pw_check_result == 'pass_OK') {
+ // XXX need to ensure domains table includes an 'ALL' entry.
+ $table_domain = table_by_key('domain');
+ $rows = db_query_all("SELECT * FROM $table_domain WHERE domain = 'ALL'");
+ if (empty($rows)) {
+ db_insert('domain', array('domain' => 'ALL', 'description' => '', 'transport' => '')); // all other fields should default through the schema.
+ }
+
+ $values = array(
+ 'username' => safepost('username'),
+ 'password' => safepost('password'),
+ 'password2' => safepost('password2'),
+ 'superadmin' => 1,
+ 'domains' => array(),
+ 'active' => 1,
+ );
+
+ list($error, $setupMessage, $errormsg) = create_admin($values);
+
+ if ($error != 0) {
+ $tUsername = htmlentities($values['username']);
+ } else {
+ $setupMessage .= "You are done with your basic setup. ";
+ $setupMessage .= "
You can now login to PostfixAdmin using the account you just created.";
+ }
+ }
+ }
- list($error, $setupMessage, $errormsg) = create_admin($values);
- if ($error != 0) {
- $tUsername = htmlentities($values['username']);
- } else {
- $setupMessage .= "
You are done with your basic setup. ";
- $setupMessage .= "
You can now login to PostfixAdmin using the account you just created.";
- }
+ if (!isset($_SERVER['HTTPS'])) {
+ echo "
Warning: connection not secure, switch to https if possible
";
}
- }
- if (($setuppw == "" || $setuppw == "changeme" || safeget("lostpw") == 1 || $lostpw_error != 0) /* && $_SERVER['REQUEST_METHOD'] != "POST" */) {
- # show "create setup password" form?>
+ ?>
+
+ For a new installation, you need to generate a 'setup_password' to go into your config.local.php file.
+ You can use the form below, or run something like
php -r 'echo "somesalt:" . sha1("somesalt:" . "password");' in a shell, after changing the salt.
+EOF;
+ $change = "Generate";
+ }
+ ?>
+
+
= $change ?> $CONF['setup_password']
+