You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
392 lines
18 KiB
392 lines
18 KiB
<?php
|
|
if (file_exists(__DIR__."/../../pp-config.php")) {
|
|
if (file_exists(__DIR__.'/../../maintenance.lock')) {
|
|
if (file_exists(__DIR__.'/../../pp-include/pp-maintenance.php')) {
|
|
|
|
}else{
|
|
die('System is under maintenance. Please try again later.');
|
|
}
|
|
exit();
|
|
}else{
|
|
if (file_exists(__DIR__.'/../../pp-include/pp-controller.php')) {
|
|
if (file_exists(__DIR__.'/../../pp-include/pp-view.php')) {
|
|
|
|
}else{
|
|
echo 'System is under maintenance. Please try again later.';
|
|
exit();
|
|
}
|
|
}else{
|
|
echo 'System is under maintenance. Please try again later.';
|
|
exit();
|
|
}
|
|
|
|
if (file_exists(__DIR__.'/../../pp-include/pp-model.php')) {
|
|
include(__DIR__."/../../pp-include/pp-model.php");
|
|
}else{
|
|
echo 'System is under maintenance. Please try again later.';
|
|
exit();
|
|
}
|
|
}
|
|
}else{
|
|
echo 'System is under maintenance. Please try again later.';
|
|
exit();
|
|
}
|
|
|
|
if (!defined('pp_allowed_access')) {
|
|
die('Direct access not allowed');
|
|
}
|
|
|
|
if(isset($global_user_login) && $global_user_login == true){
|
|
?>
|
|
<!-- Page Header -->
|
|
<div class="page-header">
|
|
<div class="row align-items-end">
|
|
<div class="col-sm mb-2 mb-sm-0">
|
|
<h1 class="page-header-title">Settings</h1>
|
|
</div>
|
|
<!-- End Col -->
|
|
</div>
|
|
<!-- End Row -->
|
|
</div>
|
|
<!-- End Page Header -->
|
|
|
|
<div class="row">
|
|
<div class="col-lg-3">
|
|
<!-- Navbar -->
|
|
<div class="navbar-expand-lg navbar-vertical mb-3 mb-lg-5">
|
|
<!-- Navbar Toggle -->
|
|
<!-- Navbar Toggle -->
|
|
<div class="d-grid">
|
|
<button type="button" class="navbar-toggler btn btn-white mb-3" data-bs-toggle="collapse" data-bs-target="#navbarVerticalNavMenu" aria-label="Toggle navigation" aria-expanded="false" aria-controls="navbarVerticalNavMenu">
|
|
<span class="d-flex justify-content-between align-items-center">
|
|
<span class="text-dark">Menu</span>
|
|
|
|
<span class="navbar-toggler-default">
|
|
<i class="bi-list"></i>
|
|
</span>
|
|
|
|
<span class="navbar-toggler-toggled">
|
|
<i class="bi-x"></i>
|
|
</span>
|
|
</span>
|
|
</button>
|
|
</div>
|
|
<!-- End Navbar Toggle -->
|
|
<!-- End Navbar Toggle -->
|
|
|
|
<!-- Navbar Collapse -->
|
|
<div id="navbarVerticalNavMenu" class="collapse navbar-collapse">
|
|
<ul id="navbarSettings" class="js-sticky-block js-scrollspy card card-navbar-nav nav nav-tabs nav-lg nav-vertical" data-hs-sticky-block-options='{
|
|
"parentSelector": "#navbarVerticalNavMenu",
|
|
"targetSelector": "#header",
|
|
"breakpoint": "lg",
|
|
"startPoint": "#navbarVerticalNavMenu",
|
|
"endPoint": "#stickyBlockEndPoint",
|
|
"stickyOffsetTop": 20
|
|
}'>
|
|
<li class="nav-item">
|
|
<a class="nav-link active" href="#content">
|
|
<i class="bi-person nav-icon"></i> Basic information
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#emailSection">
|
|
<i class="bi-at nav-icon"></i> Email
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#passwordSection">
|
|
<i class="bi-key nav-icon"></i> Password
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#recentDevicesSection">
|
|
<i class="bi-phone nav-icon"></i> Recent devices
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<!-- End Navbar Collapse -->
|
|
</div>
|
|
<!-- End Navbar -->
|
|
</div>
|
|
|
|
<div class="col-lg-9">
|
|
<div class="d-grid gap-3 gap-lg-5">
|
|
<!-- Card -->
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h2 class="card-title h4">Basic information</h2>
|
|
</div>
|
|
|
|
<!-- Body -->
|
|
<div class="card-body">
|
|
<!-- Form -->
|
|
<!-- Form -->
|
|
<div class="row mb-4">
|
|
<label for="fullname" class="col-sm-3 col-form-label form-label">Full name</label>
|
|
|
|
<div class="col-sm-9">
|
|
<div class="input-group input-group-sm-vertical">
|
|
<input type="text" class="form-control" name="fullname" id="fullname" placeholder="Your full name" aria-label="Your full name" value="<?php echo $global_user_response['response'][0]['name']?>">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- End Form -->
|
|
|
|
<!-- Form -->
|
|
<div class="row mb-4">
|
|
<label for="username" class="col-sm-3 col-form-label form-label">Username</label>
|
|
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" name="username" id="username" placeholder="Your username" aria-label="Your username" value="<?php echo $global_user_response['response'][0]['username']?>">
|
|
</div>
|
|
</div>
|
|
<!-- End Form -->
|
|
|
|
<!-- Form -->
|
|
<div class="row mb-4">
|
|
<label for="emailaddress" class="col-sm-3 col-form-label form-label">Email Address</label>
|
|
|
|
<div class="col-sm-9">
|
|
<input type="email" class="form-control" name="emailaddress" id="emailaddress" placeholder="Email Address" aria-label="Emai Addressl" value="<?php echo $global_user_response['response'][0]['email']?>" readonly>
|
|
</div>
|
|
</div>
|
|
<!-- End Form -->
|
|
|
|
<span class="response-savebasicinfo"></span>
|
|
|
|
<div class="d-flex justify-content-end">
|
|
<button type="submit" class="btn btn-primary btn-savebasicinfo" onclick="savebasicinfo()">Save changes</button>
|
|
</div>
|
|
<!-- End Form -->
|
|
</div>
|
|
<!-- End Body -->
|
|
</div>
|
|
<!-- End Card -->
|
|
|
|
<!-- Card -->
|
|
<div id="emailSection" class="card">
|
|
<div class="card-header">
|
|
<h4 class="card-title">Email</h4>
|
|
</div>
|
|
|
|
<!-- Body -->
|
|
<div class="card-body">
|
|
<p>Your current email address is <span class="fw-semibold"><?php echo $global_user_response['response'][0]['email']?></span></p>
|
|
|
|
<!-- Form -->
|
|
<div class="row mb-4">
|
|
<label for="basicemail" class="col-sm-3 col-form-label form-label">New email address</label>
|
|
|
|
<div class="col-sm-9">
|
|
<input type="email" class="form-control" name="basicemail" id="basicemail" placeholder="Enter new email address" aria-label="Enter new email address">
|
|
</div>
|
|
</div>
|
|
<!-- End Form -->
|
|
|
|
<span class="response-savebasicemail"></span>
|
|
|
|
<div class="d-flex justify-content-end">
|
|
<button type="submit" class="btn btn-primary btn-savebasicemail" onclick="savebasicemail()">Save changes</button>
|
|
</div>
|
|
</div>
|
|
<!-- End Body -->
|
|
</div>
|
|
<!-- End Card -->
|
|
|
|
<!-- Card -->
|
|
<div id="passwordSection" class="card">
|
|
<div class="card-header">
|
|
<h4 class="card-title">Change your password</h4>
|
|
</div>
|
|
|
|
<!-- Body -->
|
|
<div class="card-body">
|
|
<!-- Form -->
|
|
<!-- Form -->
|
|
<div class="row mb-4">
|
|
<label for="currentpassword" class="col-sm-3 col-form-label form-label">Current password</label>
|
|
|
|
<div class="col-sm-9">
|
|
<input type="password" class="form-control" name="currentpassword" id="currentpassword" placeholder="Enter current password" aria-label="Enter current password">
|
|
</div>
|
|
</div>
|
|
<!-- End Form -->
|
|
|
|
<!-- Form -->
|
|
<div class="row mb-4">
|
|
<label for="newPassword" class="col-sm-3 col-form-label form-label">New password</label>
|
|
|
|
<div class="col-sm-9">
|
|
<input type="password" class="form-control" name="newPassword" id="newPassword" placeholder="Enter new password" aria-label="Enter new password">
|
|
</div>
|
|
</div>
|
|
<!-- End Form -->
|
|
|
|
<!-- Form -->
|
|
<div class="row mb-4">
|
|
<label for="confirmpassword" class="col-sm-3 col-form-label form-label">Confirm new password</label>
|
|
|
|
<div class="col-sm-9">
|
|
<div class="mb-3">
|
|
<input type="password" class="form-control" name="confirmpassword" id="confirmpassword" placeholder="Confirm your new password" aria-label="Confirm your new password">
|
|
</div>
|
|
|
|
<h5>Password requirements:</h5>
|
|
|
|
<p class="fs-6 mb-2">Ensure that these requirements are met:</p>
|
|
|
|
<ul class="fs-6">
|
|
<li>Minimum 8 characters long - the more, the better</li>
|
|
<li>At least one lowercase character</li>
|
|
<li>At least one uppercase character</li>
|
|
<li>At least one number, symbol, or whitespace character</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<!-- End Form -->
|
|
<span class="response-savenewpassword"></span>
|
|
|
|
<div class="d-flex justify-content-end">
|
|
<button type="submit" class="btn btn-primary btn-savenewpassword" onclick="savenewpassword()">Save Changes</button>
|
|
</div>
|
|
<!-- End Form -->
|
|
</div>
|
|
<!-- End Body -->
|
|
</div>
|
|
<!-- End Card -->
|
|
|
|
<!-- Card -->
|
|
<div id="recentDevicesSection" class="card">
|
|
<div class="card-header">
|
|
<h4 class="card-title">Recent devices</h4>
|
|
</div>
|
|
|
|
<!-- Body -->
|
|
<div class="card-body">
|
|
<p class="card-text">View and manage devices where you're currently logged in.</p>
|
|
</div>
|
|
<!-- End Body -->
|
|
|
|
<!-- Table -->
|
|
<div class="table-responsive">
|
|
<table class="table table-thead-bordered table-nowrap table-align-middle card-table">
|
|
<thead class="thead-light">
|
|
<tr>
|
|
<th>Browser</th>
|
|
<th>Device</th>
|
|
<th>IP</th>
|
|
<th>Most recent activity</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<?php
|
|
$global_data_count = json_decode(getData($db_prefix.'browser_log', ' ORDER BY 1 DESC LIMIT 10'), true);
|
|
foreach($global_data_count['response'] as $data){
|
|
?>
|
|
<tr>
|
|
<td class="align-items-center"><?php echo $data['browser'];?> on <?php echo $data['device'];?></td>
|
|
<td><i class="bi-laptop fs-3 me-2"></i> <?php echo $data['device'];?> <?php if($data['cookie'] == getCookie('pp_admin')){echo '<span class="badge bg-soft-success text-success ms-1">Current</span>';}?></td>
|
|
<td><?php echo $data['ip'];?></td>
|
|
<td><?php echo timeAgo($data['created_at']);?></td>
|
|
</tr>
|
|
<?php
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- End Table -->
|
|
</div>
|
|
<!-- End Card -->
|
|
|
|
|
|
|
|
</div>
|
|
<!-- Sticky Block End Point -->
|
|
<div id="stickyBlockEndPoint"></div>
|
|
</div>
|
|
</div>
|
|
<!-- End Row -->
|
|
|
|
<script>
|
|
function savenewpassword() {
|
|
var currentpassword = document.querySelector("#currentpassword").value;
|
|
var newPassword = document.querySelector("#newPassword").value;
|
|
var confirmpassword = document.querySelector("#confirmpassword").value;
|
|
|
|
document.querySelector(".btn-savenewpassword").innerHTML = '<div class="spinner-border text-light spinner-border-sm" role="status"> <span class="visually-hidden">Loading...</span> </div>';
|
|
|
|
$.ajax
|
|
({
|
|
type: "POST",
|
|
url: "https://<?php echo $_SERVER['HTTP_HOST']?>/admin/dashboard",
|
|
data: { "action": "pp_newpassword", "currentpassword": currentpassword, "newPassword": newPassword, "confirmpassword": confirmpassword},
|
|
success: function (data) {
|
|
document.querySelector(".btn-savenewpassword").innerHTML = 'Save changes';
|
|
|
|
var dedata = JSON.parse(data);
|
|
|
|
if(dedata.status == "false"){
|
|
document.querySelector(".response-savenewpassword").innerHTML = '<div class="alert alert-danger" style="margin-top:10px;margin-bottom:10px"> <i class="fa fa-info-circle me-2"></i> '+dedata.message+'</div>';
|
|
}else{
|
|
document.querySelector(".response-savenewpassword").innerHTML = '<div class="alert alert-primary" style="margin-top:10px;margin-bottom:10px"> <i class="fa fa-info-circle me-2"></i> '+dedata.message+'</div>';
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function savebasicemail() {
|
|
var basicemail = document.querySelector("#basicemail").value;
|
|
|
|
document.querySelector(".btn-savebasicemail").innerHTML = '<div class="spinner-border text-light spinner-border-sm" role="status"> <span class="visually-hidden">Loading...</span> </div>';
|
|
|
|
$.ajax
|
|
({
|
|
type: "POST",
|
|
url: "https://<?php echo $_SERVER['HTTP_HOST']?>/admin/dashboard",
|
|
data: { "action": "pp_basicemail", "email": basicemail},
|
|
success: function (data) {
|
|
document.querySelector(".btn-savebasicemail").innerHTML = 'Save changes';
|
|
|
|
var dedata = JSON.parse(data);
|
|
|
|
if(dedata.status == "false"){
|
|
document.querySelector(".response-savebasicemail").innerHTML = '<div class="alert alert-danger" style="margin-top:10px;margin-bottom:10px"> <i class="fa fa-info-circle me-2"></i> '+dedata.message+'</div>';
|
|
}else{
|
|
document.querySelector(".response-savebasicemail").innerHTML = '<div class="alert alert-primary" style="margin-top:10px;margin-bottom:10px"> <i class="fa fa-info-circle me-2"></i> '+dedata.message+'</div>';
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function savebasicinfo() {
|
|
var fullname = document.querySelector("#fullname").value;
|
|
var username = document.querySelector("#username").value;
|
|
|
|
document.querySelector(".btn-savebasicinfo").innerHTML = '<div class="spinner-border text-light spinner-border-sm" role="status"> <span class="visually-hidden">Loading...</span> </div>';
|
|
|
|
$.ajax
|
|
({
|
|
type: "POST",
|
|
url: "https://<?php echo $_SERVER['HTTP_HOST']?>/admin/dashboard",
|
|
data: { "action": "pp_basicinfo", "fullname": fullname , "username": username },
|
|
success: function (data) {
|
|
document.querySelector(".btn-savebasicinfo").innerHTML = 'Save changes';
|
|
|
|
var dedata = JSON.parse(data);
|
|
|
|
if(dedata.status == "false"){
|
|
document.querySelector(".response-savebasicinfo").innerHTML = '<div class="alert alert-danger" style="margin-top:10px;margin-bottom:10px"> <i class="fa fa-info-circle me-2"></i> '+dedata.message+'</div>';
|
|
}else{
|
|
document.querySelector(".response-savebasicinfo").innerHTML = '<div class="alert alert-primary" style="margin-top:10px;margin-bottom:10px"> <i class="fa fa-info-circle me-2"></i> '+dedata.message+'</div>';
|
|
}
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
<?php
|
|
}
|
|
?>
|