delayed user creation
This commit is contained in:
parent
cffbaac039
commit
b336b5296f
@ -83,10 +83,15 @@ class Index implements Extension {
|
||||
$count = $config->get_int('index_width') * $config->get_int('index_height');
|
||||
$images = Image::find_images($config, $database, ($page_number-1)*$count, $count, $search_terms);
|
||||
|
||||
send_event(new PostListBuildingEvent($event->page, $search_terms));
|
||||
if(!(count($search_terms) == 0 && count($images) == 0)) {
|
||||
send_event(new PostListBuildingEvent($event->page, $search_terms));
|
||||
|
||||
$this->theme->set_page($page_number, $total_pages, $search_terms);
|
||||
$this->theme->display_page($event->page, $images);
|
||||
$this->theme->set_page($page_number, $total_pages, $search_terms);
|
||||
$this->theme->display_page($event->page, $images);
|
||||
}
|
||||
else {
|
||||
$this->theme->display_intro($event->page);
|
||||
}
|
||||
}
|
||||
|
||||
if($event instanceof SetupBuildingEvent) {
|
||||
|
@ -7,6 +7,22 @@ class IndexTheme extends Themelet {
|
||||
$this->search_terms = $search_terms;
|
||||
}
|
||||
|
||||
public function display_intro(Page $page) {
|
||||
$text = <<<EOD
|
||||
<div style="text-align: left;">
|
||||
<p>The first thing you'll probably want to do is create a new account; note
|
||||
that the first account you create will by default be marked as the board's
|
||||
administrator, and any further accounts will be regular users.
|
||||
|
||||
<p>Once logged in you can play with the settings, install extra features,
|
||||
and of course start organising your images :-)
|
||||
</div>
|
||||
EOD;
|
||||
$page->set_title("Welcome to Shimmie ".VERSION);
|
||||
$page->set_heading("Welcome to Shimmie");
|
||||
$page->add_block(new Block("Welcome", $text, "main", 0));
|
||||
}
|
||||
|
||||
public function display_page(Page $page, $images) {
|
||||
global $config;
|
||||
|
||||
|
@ -233,9 +233,13 @@ class UserPage implements Extension {
|
||||
$hash = md5(strtolower($event->username) . $event->password);
|
||||
$email = (!empty($event->email)) ? $event->email : null;
|
||||
|
||||
// if there are currently no admins, the new user should be one
|
||||
$need_admin = ($database->db->GetOne("SELECT COUNT(*) FROM users WHERE admin IN ('Y', 't', '1')") == 0);
|
||||
$admin = $need_admin ? 'Y' : 'N';
|
||||
|
||||
$database->Execute(
|
||||
"INSERT INTO users (name, pass, joindate, email) VALUES (?, ?, now(), ?)",
|
||||
array($event->username, $hash, $email));
|
||||
"INSERT INTO users (name, pass, joindate, email, admin) VALUES (?, ?, now(), ?, ?)",
|
||||
array($event->username, $hash, $email, $admin));
|
||||
}
|
||||
|
||||
private function set_login_cookie($name, $pass) {
|
||||
|
43
install.php
43
install.php
@ -59,16 +59,6 @@ require_once "lib/adodb/adodb-xmlschema03.inc.php";
|
||||
do_install();
|
||||
|
||||
// utilities {{{
|
||||
function installer_write_file($fname, $data) {
|
||||
$fp = fopen($fname, "w");
|
||||
if(!$fp) return false;
|
||||
|
||||
fwrite($fp, $data);
|
||||
fclose($fp);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function check_gd_version() {
|
||||
$gdversion = 0;
|
||||
|
||||
@ -120,8 +110,6 @@ function begin() { // {{{
|
||||
<center>
|
||||
<table>
|
||||
<tr><td>Database:</td><td><input type="text" name="database_dsn" size="40"></td></tr>
|
||||
<tr><td>Admin Name:</td><td><input type="text" name="admin_name" size="40"></td></tr>
|
||||
<tr><td>Admin Pass:</td><td><input type="password" name="admin_pass" size="40"></td></tr>
|
||||
<tr><td colspan="2"><center><input type="submit" value="Go!"></center></td></tr>
|
||||
</table>
|
||||
</center>
|
||||
@ -140,32 +128,13 @@ function begin() { // {{{
|
||||
EOD;
|
||||
} // }}}
|
||||
function install_process() { // {{{
|
||||
if(!isset($_POST['database_dsn']) || !isset($_POST["admin_name"]) || !isset($_POST["admin_pass"])) {
|
||||
die("Install is missing some paramaters (database_dsn, admin_name, or admin_pass)");
|
||||
}
|
||||
else if(strlen($_POST["admin_name"]) < 1 || strlen($_POST["admin_pass"]) < 1) {
|
||||
die("Admin name and password must be at least one character each");
|
||||
}
|
||||
else {
|
||||
$database_dsn = $_POST['database_dsn'];
|
||||
$admin_name = $_POST["admin_name"];
|
||||
$admin_pass = $_POST["admin_pass"];
|
||||
}
|
||||
|
||||
set_admin_cookie($admin_name, $admin_pass);
|
||||
$database_dsn = $_POST['database_dsn'];
|
||||
create_tables($database_dsn);
|
||||
insert_defaults($database_dsn, $admin_name, $admin_pass);
|
||||
insert_defaults($database_dsn);
|
||||
build_dirs();
|
||||
write_config($database_dsn);
|
||||
|
||||
header("Location: index.php?q=setup");
|
||||
} // }}}
|
||||
function set_admin_cookie($admin_name, $admin_pass) { // {{{
|
||||
$addr = $_SERVER['REMOTE_ADDR'];
|
||||
$addr = inet_ntop(inet_pton($addr) & inet_pton("255.255.0.0"));
|
||||
$hash = md5(strtolower($admin_name) . $admin_pass);
|
||||
setcookie("shm_user", $admin_name, time()+60*60*24*365);
|
||||
setcookie("shm_session", md5($hash.$addr), time()+60*60*24*7, "/");
|
||||
header("Location: index.php");
|
||||
} // }}}
|
||||
function create_tables($dsn) { // {{{
|
||||
$db = NewADOConnection($dsn);
|
||||
@ -186,7 +155,7 @@ function create_tables($dsn) { // {{{
|
||||
}
|
||||
$db->Close();
|
||||
} // }}}
|
||||
function insert_defaults($dsn, $admin_name, $admin_pass) { // {{{
|
||||
function insert_defaults($dsn) { // {{{
|
||||
$db = NewADOConnection($dsn);
|
||||
if(!$db) {
|
||||
die("Couldn't connect to \"$dsn\"");
|
||||
@ -194,11 +163,9 @@ function insert_defaults($dsn, $admin_name, $admin_pass) { // {{{
|
||||
else {
|
||||
$config_insert = $db->Prepare("INSERT INTO config(name, value) VALUES(?, ?)");
|
||||
$user_insert = $db->Prepare("INSERT INTO users(name, pass, joindate, admin) VALUES(?, ?, now(), ?)");
|
||||
$admin_pass = md5(strtolower($admin_name).$admin_pass);
|
||||
|
||||
$db->Execute($user_insert, Array('Anonymous', null, 'N'));
|
||||
$db->Execute($config_insert, Array('anon_id', $db->Insert_ID()));
|
||||
$db->Execute($user_insert, Array($admin_name, $admin_pass, 'Y'));
|
||||
|
||||
if(check_im_version() > 0) {
|
||||
$db->Execute($config_insert, Array('thumb_engine', 'convert'));
|
||||
@ -240,7 +207,7 @@ function build_dirs() { // {{{
|
||||
function write_config($dsn) { // {{{
|
||||
$file_content = "<?php \$database_dsn='$dsn'; ?>";
|
||||
|
||||
if(is_writable("./") && installer_write_file("config.php", $file_content)) {
|
||||
if(is_writable("./") && file_put_contents("config.php", $file_content)) {
|
||||
assert(file_exists("config.php"));
|
||||
}
|
||||
else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user