forked from .cyb/cyberman
89 lines
1.5 KiB
Perl
89 lines
1.5 KiB
Perl
package cyberman;
|
|
|
|
use Dancer2;
|
|
use Dancer2::Plugin::Database;
|
|
|
|
use cyberman::Domains;
|
|
use cyberman::Auth;
|
|
use cyberman::Account;
|
|
use cyberman::Helper;
|
|
use cyberman::API;
|
|
use cyberman::Records;
|
|
use cyberman::Forgot;
|
|
use cyberman::Admin;
|
|
|
|
# Index route, hook and helper functions for authentication
|
|
|
|
sub get_auth {
|
|
my $uid = shift;
|
|
my $token = shift;
|
|
|
|
my $result = database->quick_select("session", {"uid" => $uid, "token" => $token});
|
|
|
|
if ($result) {
|
|
return $uid;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
hook 'before' => sub {
|
|
sub cookieval {
|
|
my $name = shift;
|
|
my $cookie = cookie($name);
|
|
if ($cookie) {
|
|
return $cookie->value;
|
|
} else {
|
|
return undef;
|
|
}
|
|
}
|
|
|
|
my $uid = cookieval("id");
|
|
my $token = cookieval("token");
|
|
my $auth = 0;
|
|
my $user;
|
|
if ($uid && $token) {
|
|
$auth = get_auth($uid, $token);
|
|
$user = database->quick_select(
|
|
"user",
|
|
{
|
|
"id" => $uid,
|
|
},
|
|
);
|
|
}
|
|
|
|
var auth => $auth;
|
|
var email => $user->{"email"};
|
|
var admin => $user->{"admin"};
|
|
var config => config();
|
|
|
|
if ($user->{"admin"}) {
|
|
my $zone_check = database->quick_lookup(
|
|
"cyberman",
|
|
{},
|
|
"zonecheckstatus",
|
|
);
|
|
if ($zone_check != 0) {
|
|
var zone_check_alert => 1;
|
|
}
|
|
}
|
|
|
|
if ($user->{"stylesheet"} && grep {$_ eq $user->{"stylesheet"}} @{ config->{"stylesheets"}->{"available"} }) {
|
|
var stylesheet => $user->{"stylesheet"};
|
|
} else {
|
|
var stylesheet => config->{"stylesheets"}->{"default"};
|
|
}
|
|
};
|
|
|
|
get qr{^/(index)?$} => sub {
|
|
if (!vars->{auth}) {
|
|
return template 'index';
|
|
}
|
|
|
|
template 'redir' => {
|
|
"redir" => "domains",
|
|
};
|
|
};
|
|
|
|
true;
|