Frontend: Create default user if no users are present in database
This commit is contained in:
parent
ab8ef2f643
commit
0dc311859a
@ -1,15 +1,13 @@
|
|||||||
create table channels(id int primary key not null,
|
create table channels(id int primary key not null,
|
||||||
server_id int not null, -- foreign key in servers table
|
server_id int not null, -- foreign key in servers table
|
||||||
name text not null,
|
name text not null,
|
||||||
public int not null,
|
public int not null
|
||||||
accessor int -- foreign key in accessors table
|
|
||||||
);
|
);
|
||||||
|
|
||||||
create table users(id int primary key not null,
|
create table users(id int primary key not null,
|
||||||
name text not null,
|
name text not null,
|
||||||
password text not null,
|
password text not null,
|
||||||
privileges int not null, -- 0 - normal user, 1 - moderator, 2 - administrator
|
privileges int not null -- 0 - normal user, 1 - moderator, 2 - administrator
|
||||||
accessor int -- foreign key in accessors table
|
|
||||||
);
|
);
|
||||||
|
|
||||||
create table servers(id int primary key not null,
|
create table servers(id int primary key not null,
|
||||||
|
12
frontend.pm
12
frontend.pm
@ -17,6 +17,7 @@
|
|||||||
package frontend;
|
package frontend;
|
||||||
|
|
||||||
use IO::Socket;
|
use IO::Socket;
|
||||||
|
use Digest::SHA;
|
||||||
use File::Spec;
|
use File::Spec;
|
||||||
use Time::Piece;
|
use Time::Piece;
|
||||||
use DBI;
|
use DBI;
|
||||||
@ -450,11 +451,22 @@ sub sendResponse {
|
|||||||
|
|
||||||
sub httpServerWorker {
|
sub httpServerWorker {
|
||||||
my $db = DBI->connect("DBI:SQLite:dbname=$configuration::database", "", "", {RaiseError=>1});
|
my $db = DBI->connect("DBI:SQLite:dbname=$configuration::database", "", "", {RaiseError=>1});
|
||||||
|
my $query = $db->prepare(qq(select id from users;));
|
||||||
|
$query->execute();
|
||||||
|
my @row = $query->fetchrow_array();
|
||||||
|
if(scalar(@row)==0) {
|
||||||
|
# Create default user
|
||||||
|
my $password = Digest::SHA::sha256_hex("admin");
|
||||||
|
$query = $db->prepare(qq(insert into users values(0, "admin", "$password", 2);));
|
||||||
|
$query->execute();
|
||||||
|
}
|
||||||
|
|
||||||
my $server = new IO::Socket::INET(LocalHost=>"localhost", LocalPort=>$configuration::httpServerPort, Proto=>"tcp", Listen=>1, Reuse=>1);
|
my $server = new IO::Socket::INET(LocalHost=>"localhost", LocalPort=>$configuration::httpServerPort, Proto=>"tcp", Listen=>1, Reuse=>1);
|
||||||
if(!$server) {
|
if(!$server) {
|
||||||
print("Failed to open HTTP server on port $configuration::httpServerPort\n");
|
print("Failed to open HTTP server on port $configuration::httpServerPort\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
my $client = $server->accept();
|
my $client = $server->accept();
|
||||||
my $buffer;
|
my $buffer;
|
||||||
|
@ -91,8 +91,7 @@ sub handlePath {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $username = $parameters{'username'};
|
my $username = $parameters{'username'};
|
||||||
#my $hashedPassword = Digest::SHA::sha256_hex($parameters{"password"});
|
my $hashedPassword = Digest::SHA::sha256_hex($parameters{"password"});
|
||||||
my $hashedPassword = $parameters{"password"};
|
|
||||||
my $query = $aConnection->prepare(qq(select name, password from users where name=?;));
|
my $query = $aConnection->prepare(qq(select name, password from users where name=?;));
|
||||||
$query->execute($username);
|
$query->execute($username);
|
||||||
my @row = $query->fetchrow_array();
|
my @row = $query->fetchrow_array();
|
||||||
@ -237,7 +236,8 @@ sub handlePath {
|
|||||||
$query->execute($session->{"username"});
|
$query->execute($session->{"username"});
|
||||||
my @row = $query->fetchrow_array();
|
my @row = $query->fetchrow_array();
|
||||||
my $password = $row[0];
|
my $password = $row[0];
|
||||||
if($parameters{"currentPassword"} ne $password) {
|
my $hashedPassword = Digest::SHA::sha256_hex($password);
|
||||||
|
if($hashedPassword ne $password) {
|
||||||
frontend::sendBadRequest($aClient, "Wrong password");
|
frontend::sendBadRequest($aClient, "Wrong password");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -247,7 +247,7 @@ sub handlePath {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$query = $aConnection->prepare(qq(update users set password=? where name=?;));
|
$query = $aConnection->prepare(qq(update users set password=? where name=?;));
|
||||||
$query->execute($parameters{"newPassword"}, $session->{"username"});
|
$query->execute(Digest::SHA::sha256_hex($parameters{"newPassword"}), $session->{"username"});
|
||||||
frontend::redirect($aClient, "/password_changed.html");
|
frontend::redirect($aClient, "/password_changed.html");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
0
prepare_database.sh
Normal file → Executable file
0
prepare_database.sh
Normal file → Executable file
Loading…
x
Reference in New Issue
Block a user