470 lines
14 KiB
PHP
470 lines
14 KiB
PHP
<?php
|
|
|
|
include "config/connect.php";
|
|
include 'list_data/sweetalert.php';
|
|
include 'config/tanggal_indo.php';
|
|
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>ManjaPro</title>
|
|
|
|
<!-- Google Font: Source Sans Pro -->
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
|
|
|
|
<!-- Font Awesome -->
|
|
<link rel="stylesheet" href="plugins/fontawesome-free/css/all.min.css">
|
|
|
|
<!-- icheck bootstrap -->
|
|
<link rel="stylesheet" href="plugins/icheck-bootstrap/icheck-bootstrap.min.css">
|
|
|
|
<!-- Theme style -->
|
|
<link rel="stylesheet" href="dist/css/adminlte.min.css">
|
|
|
|
<!-- Icon Aplikasi -->
|
|
<link rel="icon" href="dist/img/logo-sm.png" type="image/gif" />
|
|
|
|
<!-- SweetAlert -->
|
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
|
</head>
|
|
|
|
<body class="hold-transition login-page">
|
|
|
|
<div class="login-box" style="zoom: 115%;">
|
|
|
|
<div class="card card-outline card-primary">
|
|
|
|
<div class="card-header text-center">
|
|
<img src="dist/img/logo-login.png" width="150px" class="mt-4"><br>
|
|
<p>
|
|
<small>Managemen Jaringan Propesional</small>
|
|
</p>
|
|
</div>
|
|
|
|
<div class="card-body">
|
|
|
|
<p class="login-box-msg">Masuk Aplikasi</p>
|
|
|
|
<form method="post">
|
|
|
|
<!-- Username / Email -->
|
|
<div class="input-group mb-3">
|
|
<input
|
|
type="text"
|
|
class="form-control"
|
|
id="username"
|
|
name="username"
|
|
placeholder="Username / Email"
|
|
value="<?= isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''; ?>"
|
|
required
|
|
>
|
|
|
|
<div class="input-group-append">
|
|
<div class="input-group-text">
|
|
<span class="fas fa-envelope"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Password -->
|
|
<div class="input-group mb-4">
|
|
|
|
<input
|
|
type="password"
|
|
class="form-control"
|
|
id="password"
|
|
name="password"
|
|
placeholder="Password"
|
|
required
|
|
>
|
|
|
|
<div class="input-group-append">
|
|
<div class="input-group-text" style="cursor:pointer;">
|
|
<span class="fas fa-eye" id="toggle-password"></span>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-8">
|
|
|
|
<small>
|
|
<a href="lupa_password" class="mb-3">
|
|
Lupa Password ?
|
|
</a>
|
|
|
|
<br>
|
|
|
|
<a href="<?= $BaseUrl; ?>">
|
|
Kembali ke Halaman Utama
|
|
</a>
|
|
</small>
|
|
|
|
</div>
|
|
|
|
<div class="col-4">
|
|
|
|
<input
|
|
type="submit"
|
|
name="login"
|
|
class="btn btn-primary btn-block"
|
|
value="Masuk"
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
<br>
|
|
|
|
<?php
|
|
|
|
if (isset($_POST['login'])) {
|
|
|
|
// =====================================================
|
|
// AMBIL INPUT
|
|
// =====================================================
|
|
|
|
$username = trim($_POST['username'] ?? '');
|
|
$password = $_POST['password'] ?? '';
|
|
$waktu = date('Y-m-d H:i:s');
|
|
|
|
|
|
// =====================================================
|
|
// VALIDASI INPUT
|
|
// =====================================================
|
|
|
|
if ($username === '' || $password === '') {
|
|
|
|
sweetAlert(
|
|
"Username dan Password harus diisi",
|
|
"error"
|
|
);
|
|
|
|
} else {
|
|
|
|
try {
|
|
|
|
// =====================================================
|
|
// HAPUS SESSION LOGIN LAMA
|
|
// =====================================================
|
|
|
|
unset($_SESSION['master']);
|
|
unset($_SESSION['user']);
|
|
|
|
unset($_SESSION['wajib_update_akun']);
|
|
unset($_SESSION['update_akun_id']);
|
|
unset($_SESSION['update_akun_tipe']);
|
|
|
|
|
|
// =====================================================
|
|
// 1. CEK DATA_SERVER
|
|
// =====================================================
|
|
|
|
$stmt = $pdo->prepare("
|
|
SELECT
|
|
id,
|
|
nama_pemilik,
|
|
username,
|
|
email,
|
|
akses,
|
|
profile,
|
|
password
|
|
FROM data_server
|
|
WHERE username = :username
|
|
OR email = :username
|
|
LIMIT 1
|
|
");
|
|
|
|
$stmt->execute([
|
|
':username' => $username
|
|
]);
|
|
|
|
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
|
|
// =====================================================
|
|
// JIKA DITEMUKAN DI DATA_SERVER
|
|
// =====================================================
|
|
|
|
if ($user) {
|
|
|
|
if (password_verify($password, $user['password'])) {
|
|
|
|
// ---------------------------------------------
|
|
// Update last_login
|
|
// ---------------------------------------------
|
|
|
|
$stmtUpdate = $pdo->prepare("
|
|
UPDATE data_server
|
|
SET last_login = :waktu
|
|
WHERE id = :id
|
|
");
|
|
|
|
$stmtUpdate->execute([
|
|
':waktu' => $waktu,
|
|
':id' => $user['id']
|
|
]);
|
|
|
|
|
|
// ---------------------------------------------
|
|
// Cek standar username dan password
|
|
// ---------------------------------------------
|
|
|
|
$usernameKurang = mb_strlen($user['username']) < 6;
|
|
$passwordKurang = strlen($password) < 8;
|
|
|
|
|
|
// ---------------------------------------------
|
|
// Jika username/password belum memenuhi standar
|
|
// ---------------------------------------------
|
|
|
|
if ($usernameKurang || $passwordKurang) {
|
|
|
|
session_regenerate_id(true);
|
|
|
|
$_SESSION['wajib_update_akun'] = true;
|
|
|
|
$_SESSION['update_akun_id'] = $user['id'];
|
|
|
|
$_SESSION['update_akun_tipe'] = 'master';
|
|
|
|
|
|
header("Location: update_akun.php");
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
// ---------------------------------------------
|
|
// Login normal
|
|
// ---------------------------------------------
|
|
|
|
session_regenerate_id(true);
|
|
|
|
$_SESSION['master'] = $user['id'];
|
|
|
|
|
|
sweetAlert(
|
|
"Login Berhasil",
|
|
"success",
|
|
baseurl()
|
|
);
|
|
|
|
|
|
} else {
|
|
|
|
sweetAlert(
|
|
"Login Gagal.. Username atau Password Tidak terdaftar",
|
|
"error"
|
|
);
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
// =====================================================
|
|
// 2. CEK USER_AKSES
|
|
// =====================================================
|
|
//
|
|
// Hanya user status ACTIVE yang boleh login
|
|
//
|
|
|
|
$stmt = $pdo->prepare("
|
|
SELECT
|
|
id,
|
|
id_data_server,
|
|
id_group_akses,
|
|
nama,
|
|
nomor_whatsapp,
|
|
username,
|
|
password,
|
|
profile,
|
|
email,
|
|
status
|
|
FROM user_akses
|
|
WHERE (
|
|
username = :username
|
|
OR email = :username
|
|
)
|
|
AND status = 'active'
|
|
LIMIT 1
|
|
");
|
|
|
|
$stmt->execute([
|
|
':username' => $username
|
|
]);
|
|
|
|
$user1 = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
|
|
// =====================================================
|
|
// USER_AKSES DITEMUKAN
|
|
// =====================================================
|
|
|
|
if ($user1) {
|
|
|
|
if (password_verify($password, $user1['password'])) {
|
|
|
|
|
|
// ---------------------------------------------
|
|
// Update last_login
|
|
// ---------------------------------------------
|
|
|
|
$stmtUpdate = $pdo->prepare("
|
|
UPDATE user_akses
|
|
SET last_login = :waktu
|
|
WHERE id = :id
|
|
");
|
|
|
|
$stmtUpdate->execute([
|
|
':waktu' => $waktu,
|
|
':id' => $user1['id']
|
|
]);
|
|
|
|
|
|
// ---------------------------------------------
|
|
// Cek standar username/password
|
|
// ---------------------------------------------
|
|
|
|
$usernameKurang = mb_strlen($user1['username']) < 6;
|
|
$passwordKurang = strlen($password) < 8;
|
|
|
|
|
|
// ---------------------------------------------
|
|
// Wajib update akun
|
|
// ---------------------------------------------
|
|
|
|
if ($usernameKurang || $passwordKurang) {
|
|
|
|
session_regenerate_id(true);
|
|
|
|
$_SESSION['wajib_update_akun'] = true;
|
|
|
|
$_SESSION['update_akun_id'] = $user1['id'];
|
|
|
|
$_SESSION['update_akun_tipe'] = 'user';
|
|
|
|
|
|
header("Location: update_akun.php");
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
// ---------------------------------------------
|
|
// Login normal
|
|
// ---------------------------------------------
|
|
|
|
session_regenerate_id(true);
|
|
|
|
$_SESSION['user'] = $user1['id'];
|
|
|
|
|
|
sweetAlert(
|
|
"Login Berhasil",
|
|
"success",
|
|
baseurl()
|
|
);
|
|
|
|
|
|
} else {
|
|
|
|
sweetAlert(
|
|
"Login Gagal.. Username atau Password Tidak terdaftar",
|
|
"error"
|
|
);
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
/*
|
|
* User tidak ditemukan.
|
|
*
|
|
* Termasuk user yang username/email benar
|
|
* tetapi status = inactive.
|
|
*
|
|
* Sengaja tidak dibedakan supaya informasi
|
|
* status akun tidak dibocorkan dari halaman login.
|
|
*/
|
|
|
|
sweetAlert(
|
|
"Login Gagal.. Username atau Password Tidak terdaftar atau akun tidak aktif",
|
|
"error"
|
|
);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
} catch (PDOException $e) {
|
|
|
|
sweetAlert(
|
|
"Login Gagal.. Terjadi kesalahan pada sistem",
|
|
"error"
|
|
);
|
|
|
|
// Aktifkan hanya untuk debugging:
|
|
// error_log($e->getMessage());
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<!-- jQuery -->
|
|
<script src="plugins/jquery/jquery.min.js"></script>
|
|
|
|
<!-- Bootstrap 4 -->
|
|
<script src="plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
|
|
|
<!-- AdminLTE App -->
|
|
<script src="dist/js/adminlte.min.js"></script>
|
|
|
|
|
|
<script>
|
|
|
|
document.getElementById('toggle-password').addEventListener('click', function() {
|
|
|
|
const passwordInput = document.getElementById('password');
|
|
|
|
if (passwordInput.type === 'password') {
|
|
|
|
passwordInput.type = 'text';
|
|
|
|
this.classList.remove('fa-eye');
|
|
this.classList.add('fa-eye-slash');
|
|
|
|
} else {
|
|
|
|
passwordInput.type = 'password';
|
|
|
|
this.classList.remove('fa-eye-slash');
|
|
this.classList.add('fa-eye');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|