Merge pull request #543 from wrongecho/dashboards

Add a basic technical dashboard
This commit is contained in:
Johnny
2023-01-01 15:55:39 -05:00
committed by GitHub
4 changed files with 403 additions and 235 deletions
+1 -4
View File
@@ -6,7 +6,7 @@
// To be removed when we have a proper technical dashboard for techs // To be removed when we have a proper technical dashboard for techs
if ($_SESSION['user_role'] != 3) { ?> if ($_SESSION['user_role'] != 3) { ?>
<script type="text/javascript"> <script type="text/javascript">
window.location.href = 'clients.php'; window.location.href = 'dashboard_technical.php';
</script> </script>
<?php <?php
exit(); exit();
@@ -27,9 +27,6 @@ if(isset($_GET['year'])){
//GET unique years from expenses, payments and revenues //GET unique years from expenses, payments and revenues
$sql_payment_years = mysqli_query($mysqli,"SELECT YEAR(expense_date) AS all_years FROM expenses WHERE company_id = $session_company_id UNION DISTINCT SELECT YEAR(payment_date) FROM payments WHERE company_id = $session_company_id UNION DISTINCT SELECT YEAR(revenue_date) FROM revenues WHERE company_id = $session_company_id ORDER BY all_years DESC"); $sql_payment_years = mysqli_query($mysqli,"SELECT YEAR(expense_date) AS all_years FROM expenses WHERE company_id = $session_company_id UNION DISTINCT SELECT YEAR(payment_date) FROM payments WHERE company_id = $session_company_id UNION DISTINCT SELECT YEAR(revenue_date) FROM revenues WHERE company_id = $session_company_id ORDER BY all_years DESC");
//GET unique years from expenses, payments and revenues
$sql_payment_years = mysqli_query($mysqli,"SELECT YEAR(expense_date) AS all_years FROM expenses WHERE company_id = $session_company_id UNION DISTINCT SELECT YEAR(payment_date) FROM payments WHERE company_id = $session_company_id UNION DISTINCT SELECT YEAR(revenue_date) FROM revenues WHERE company_id = $session_company_id ORDER BY all_years DESC");
//Define var so it doesnt throw errors in logs //Define var so it doesnt throw errors in logs
$largest_income_month = 0; $largest_income_month = 0;
+139
View File
@@ -0,0 +1,139 @@
<?php include_once("inc_all.php"); ?>
<?php
if (isset($_GET['year'])) {
$year = intval($_GET['year']);
} else {
$year = date('Y');
}
// GET unique years from expenses, payments and revenues
$sql_payment_years = mysqli_query($mysqli, "SELECT YEAR(expense_date) AS all_years FROM expenses
WHERE company_id = $session_company_id
UNION DISTINCT SELECT YEAR(payment_date) FROM payments WHERE company_id = $session_company_id
UNION DISTINCT SELECT YEAR(revenue_date) FROM revenues WHERE company_id = $session_company_id
ORDER BY all_years DESC"
);
// Get Total Clients added
$sql_clients = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT('client_id') AS clients_added FROM clients
WHERE YEAR(client_created_at) = $year
AND company_id = $session_company_id"
));
$clients_added = $sql_clients['clients_added'];
// Ticket count
$sql_tickets = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT('ticket_id') AS active_tickets
FROM tickets
WHERE ticket_status != 'Closed'
AND company_id = $session_company_id"
));
$active_tickets = $sql_tickets['active_tickets'];
// Expiring domains (but not ones that have already expired)
$sql_domains_expiring = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT('domain_id') as expiring_domains
FROM domains
WHERE domain_expire != '0000-00-00'
AND domain_expire > CURRENT_DATE
AND domain_expire < CURRENT_DATE + INTERVAL 30 DAY
AND domain_archived_at IS NULL
AND company_id = $session_company_id"
));
$expiring_domains = $sql_domains_expiring['expiring_domains'];
// Expiring Certificates (but not ones that have already expired)
$sql_certs_expiring = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT('certificate_id') as expiring_certs
FROM certificates
WHERE certificate_expire != '0000-00-00'
AND certificate_expire > CURRENT_DATE
AND certificate_expire < CURRENT_DATE + INTERVAL 30 DAY
AND certificate_archived_at IS NULL
AND company_id = $session_company_id"
));
$expiring_certificates = $sql_certs_expiring['expiring_certs'];
?>
<form class="mb-3">
<select onchange="this.form.submit()" class="form-control" name="year">
<?php
while ($row = mysqli_fetch_array($sql_payment_years)) {
$payment_year = $row['all_years'];
if (empty($payment_year)) {
$payment_year = date('Y');
}
?>
<option <?php if ($year == $payment_year) { echo "selected"; } ?> > <?php echo $payment_year; ?></option>
<?php
}
?>
</select>
</form>
<!-- Icon Cards-->
<div class="row">
<div class="col-lg-4 col-6">
<!-- small box -->
<a class="small-box bg-secondary" href="clients.php?date_from=<?php echo $year; ?>-01-01&date_to=<?php echo $year; ?>-12-31">
<div class="inner">
<h3><?php echo $clients_added; ?></h3>
<p>New Clients</p>
</div>
<div class="icon">
<i class="fa fa-users"></i>
</div>
</a>
</div>
<!-- ./col -->
<div class="col-lg-4 col-6">
<!-- small box -->
<a class="small-box bg-danger" href="tickets.php">
<div class="inner">
<h3><?php echo $active_tickets; ?></h3>
<p>Active Tickets</p>
</div>
<div class="icon">
<i class="fa fa-ticket-alt"></i>
</div>
</a>
</div>
<!-- ./col -->
<div class="col-lg-4 col-6">
<!-- small box -->
<a class="small-box bg-warning">
<div class="inner">
<h3><?php echo $expiring_domains; ?></h3>
<p>Expiring Domains</p>
</div>
<div class="icon">
<i class="fa fa-globe"></i>
</div>
</a>
</div>
<!-- ./col -->
<div class="col-lg-4 col-6">
<!-- small box -->
<a class="small-box bg-primary">
<div class="inner">
<h3><?php echo $expiring_certificates; ?></h3>
<p>Expiring Certificates</p>
</div>
<div class="icon">
<i class="fa fa-lock"></i>
</div>
</a>
</div>
<!-- ./col -->
</div> <!-- row -->
<?php include_once("footer.php"); ?>
+19 -2
View File
@@ -87,11 +87,21 @@ if(isset($_POST['login'])){
} }
if (empty($token)) { if (empty($token)) {
// Full Login successful
$_SESSION['logged'] = TRUE; $_SESSION['logged'] = TRUE;
mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Login', log_action = 'Success', log_description = '$user_name successfully logged in', log_ip = '$ip', log_user_agent = '$user_agent', log_user_id = $user_id"); mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Login', log_action = 'Success', log_description = '$user_name successfully logged in', log_ip = '$ip', log_user_agent = '$user_agent', log_user_id = $user_id");
header("Location: dashboard_financial.php"); // Show start page/dashboard depending on role
if ($row['user_role'] == 2) {
header("Location: dashboard_technical.php");
} else { } else {
header("Location: dashboard_financial.php");
}
} else {
// Prompt for MFA
$token_field = "<div class='input-group mb-3'> $token_field = "<div class='input-group mb-3'>
<input type='text' class='form-control' placeholder='Token' name='current_code' autofocus> <input type='text' class='form-control' placeholder='Token' name='current_code' autofocus>
<div class='input-group-append'> <div class='input-group-append'>
@@ -104,10 +114,17 @@ if(isset($_POST['login'])){
require_once("rfc6238.php"); require_once("rfc6238.php");
if (TokenAuth6238::verify($token, $current_code)) { if (TokenAuth6238::verify($token, $current_code)) {
// Full login (with MFA) successful
$_SESSION['logged'] = TRUE; $_SESSION['logged'] = TRUE;
mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Login 2FA', log_action = 'Success', log_description = '$user_name successfully logged in using 2FA', log_ip = '$ip', log_user_agent = '$user_agent', log_created_at = NOW(), log_user_id = $user_id"); mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Login 2FA', log_action = 'Success', log_description = '$user_name successfully logged in using 2FA', log_ip = '$ip', log_user_agent = '$user_agent', log_created_at = NOW(), log_user_id = $user_id");
//header("Location: $config_start_page");
// Show start page/dashboard depending on role
if ($row['user_role'] == 2) {
header("Location: dashboard_technical.php");
} else {
header("Location: dashboard_financial.php"); header("Location: dashboard_financial.php");
}
} else { } else {
mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Login', log_action = '2FA Failed', log_description = '$user_name failed 2FA', log_ip = '$ip', log_user_agent = '$user_agent', log_created_at = NOW(), log_user_id = $user_id"); mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Login', log_action = '2FA Failed', log_description = '$user_name failed 2FA', log_ip = '$ip', log_user_agent = '$user_agent', log_created_at = NOW(), log_user_id = $user_id");
+15
View File
@@ -60,6 +60,18 @@
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" data-accordion="false"> <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" data-accordion="false">
<!-- Dashboard item (tech/financial) -->
<?php if ($session_user_role == 2) { ?>
<li class="nav-item">
<a href="dashboard_technical.php" class="nav-link <?php if(basename($_SERVER["PHP_SELF"]) == "dashboard_technical.php") { echo "active"; } ?>">
<i class="nav-icon fas fa-tachometer-alt"></i>
<p>Dashboard</p>
</a>
</li>
<?php } else { ?>
<li class="nav-item"> <li class="nav-item">
<a href="dashboard_financial.php" class="nav-link <?php if(basename($_SERVER["PHP_SELF"]) == "dashboard_financial.php") { echo "active"; } ?>"> <a href="dashboard_financial.php" class="nav-link <?php if(basename($_SERVER["PHP_SELF"]) == "dashboard_financial.php") { echo "active"; } ?>">
<i class="nav-icon fas fa-tachometer-alt"></i> <i class="nav-icon fas fa-tachometer-alt"></i>
@@ -67,6 +79,9 @@
</a> </a>
</li> </li>
<?php } ?>
<!-- End dashboard item (tech/financial) -->
<li class="nav-item"> <li class="nav-item">
<a href="clients.php" class="nav-link <?php if(basename($_SERVER["PHP_SELF"]) == "clients.php") { echo "active"; } ?>"> <a href="clients.php" class="nav-link <?php if(basename($_SERVER["PHP_SELF"]) == "clients.php") { echo "active"; } ?>">
<i class="nav-icon fas fa-users"></i> <i class="nav-icon fas fa-users"></i>