Frontend: Add user panel
This commit is contained in:
parent
eaea93fb9e
commit
920376995e
@ -8,6 +8,7 @@ create table channels(id int primary key not null,
|
|||||||
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
|
||||||
accessor int -- foreign key in accessors table
|
accessor int -- foreign key in accessors table
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -123,6 +123,91 @@ sub handlePath {
|
|||||||
frontend::redirect($aClient, "/");
|
frontend::redirect($aClient, "/");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
when("/panel") {
|
||||||
|
if(!defined($aRequest->{"cookies"}{"session"}) || !frontend_session::isValidSession($aRequest->{"cookies"}{"session"})) {
|
||||||
|
frontend::redirect($aClient, "/");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
my $session = $frontend_session::sessions{$aRequest->{"cookies"}{"session"}};
|
||||||
|
my $query = $aConnection->prepare(qq(select privileges from users where name=?;));
|
||||||
|
$query->execute($session->{"username"});
|
||||||
|
my @row = $query->fetchrow_array();
|
||||||
|
my $privileges = $row[0];
|
||||||
|
|
||||||
|
my $manageChannelAccess = "";
|
||||||
|
if($privileges>=1) { # moderator
|
||||||
|
$manageChannelAccess.="<h3>Manage channel access</h3>";
|
||||||
|
$manageChannelAccess.="<form action=\"manage_access_action\" method=\"POST\">";
|
||||||
|
$manageChannelAccess.="<select name=\"user\">";
|
||||||
|
$query = $aConnection->prepare(qq(select id, name from users;));
|
||||||
|
$query->execute();
|
||||||
|
while(@row = $query->fetchrow_array()) {
|
||||||
|
my $id = $row[0];
|
||||||
|
my $name = $row[1];
|
||||||
|
if($name eq $session->{"username"}) {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$manageChannelAccess.="<option value=\"$id\">$name</option>";
|
||||||
|
}
|
||||||
|
$manageChannelAccess.="</select>";
|
||||||
|
$manageChannelAccess.="<select name=\"channel\">";
|
||||||
|
$query = $aConnection->prepare(qq(select channels.id, channels.name, servers.name from channels inner join servers on channels.server_id=servers.id;));
|
||||||
|
$query->execute();
|
||||||
|
while(@row = $query->fetchrow_array()) {
|
||||||
|
my $channelID = $row[0];
|
||||||
|
my $channel = $row[1];
|
||||||
|
my $server = $row[2];
|
||||||
|
$manageChannelAccess.="<option value=\"$channelID\">$channel at $server</option>";
|
||||||
|
}
|
||||||
|
$manageChannelAccess.="</select><br />";
|
||||||
|
$manageChannelAccess.="<input name=\"grant\" type=\"submit\" value=\"Grant access\" /> ";
|
||||||
|
$manageChannelAccess.="<input name=\"revoke\" type=\"submit\" value=\"Revoke access\" />";
|
||||||
|
$manageChannelAccess.="</form>";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $manageServers = "";
|
||||||
|
if($privileges==2) {
|
||||||
|
$manageServers.="<h3>Manage servers</h3>";
|
||||||
|
$manageServers.="<form action=\"add_server_action\" method=\"POST\">";
|
||||||
|
$manageServers.="<input name=\"name\" type=\"text\" placeholder=\"Server name\" /><br />";
|
||||||
|
$manageServers.="<input name=\"address\" type=\"text\" placeholder=\"Server address\" /> ";
|
||||||
|
$manageServers.="<input name=\"port\" type=\"number\" placeholder=\"Server port\" /><br />";
|
||||||
|
$manageServers.="<input type=\"submit\" value=\"Add\" />";
|
||||||
|
$manageServers.="</form>";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $manageChannels = "";
|
||||||
|
if($privileges==2) {
|
||||||
|
$manageChannels.="<h3>Manage channels</h3>";
|
||||||
|
$manageChannels.="<form action=\"add_channel_action\" method=\"POST\">";
|
||||||
|
$manageChannels.="<input name=\"channel\" type=\"text\" placeholder=\"Channel\" /> at ";
|
||||||
|
$manageChannels.="<select name=\"server\">";
|
||||||
|
$query = $aConnection->prepare(qq(select id, name from servers;));
|
||||||
|
$query->execute();
|
||||||
|
while(@row = $query->fetchrow_array()) {
|
||||||
|
my $id = $row[0];
|
||||||
|
my $name = $row[1];
|
||||||
|
$manageChannels.="<option value=\"$id\">$name</option>";
|
||||||
|
}
|
||||||
|
$manageChannels.="</select><br />";
|
||||||
|
$manageChannels.="<input type=\"submit\" value=\"Add\" />";
|
||||||
|
$manageChannels.="</form>";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $addUser = "";
|
||||||
|
if($privileges==2) {
|
||||||
|
$addUser.="<h3>Add user</h3>";
|
||||||
|
$addUser.="<form action=\"add_user_action\" method=\"POST\">";
|
||||||
|
$addUser.="<input name=\"name\" type=\"text\" placeholder=\"Username\" /><br />";
|
||||||
|
$addUser.="<input name=\"password\" type=\"password\" placeholder=\"Password\" /><br />";
|
||||||
|
$addUser.="<input name=\"confirmPassword\" type=\"password\" placeholder=\"Confirm password\" /><br />";
|
||||||
|
$addUser.="<input type=\"submit\" value=\"Add\" />";
|
||||||
|
$addUser.="</form>";
|
||||||
|
}
|
||||||
|
|
||||||
|
frontend::sendTemplate("templates/panel.html", $aClient, {"username"=>$session->{"username"}, "manageChannelAccess"=>$manageChannelAccess, "manageServers"=>$manageServers, "manageChannels"=>$manageChannels, "addUser"=>$addUser});
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
when("/view_logs") {
|
when("/view_logs") {
|
||||||
my $channelID = $aRequest->{"path"}{"parameters"}{"channel"};
|
my $channelID = $aRequest->{"path"}{"parameters"}{"channel"};
|
||||||
if(!defined($channelID)) {
|
if(!defined($channelID)) {
|
||||||
|
20
templates/panel.html
Normal file
20
templates/panel.html
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>{{username}}'s panel</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>User panel</h1>
|
||||||
|
<a href="/">Back</a>
|
||||||
|
<h3>Change password</h3>
|
||||||
|
<form action="change_password_action" method="POST">
|
||||||
|
<input name="currentPassword" type="password" placeholder="Current password" /><br />
|
||||||
|
<input name="newPassword" type="password" placeholder="New password"><br />
|
||||||
|
<input type="submit" value="Change" />
|
||||||
|
</form>
|
||||||
|
{{manageChannelAccess}}
|
||||||
|
{{manageServers}}
|
||||||
|
{{manageChannels}}
|
||||||
|
{{addUser}}
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user