Tugas 7 PBKK
MENGATUR AKSES USER
Nama : Alfin Pradana
NRP : 05111740000191
Kelas : PBKK - A
1. Buat tabel user untuk menyimpan data user pada php my admin, dengan nama users dengan 11 kolom. gunakan kode sql ini
1. Buat tabel user untuk menyimpan data user pada php my admin, dengan nama users dengan 11 kolom. gunakan kode sql ini
CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(64) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`full_name` varchar(255) NOT NULL,
`phone` varchar(20) NOT NULL,
`role` enum('admin','customer') NOT NULL DEFAULT 'customer',
`last_login` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`photo` varchar(64) NOT NULL DEFAULT 'user_no_image.jpg',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`is_active` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
);
2. Lalu kita coba insert data baru dengan akun milik kita seperti dibawah
INSERT INTO `users` (`user_id`, `username`, `password`, `email`, `full_name`, `phone`, `role`, `last_login`, `photo`, `created_at`, `is_active`) VALUES (NULL, 'alfin', '$2y$10$Dy4ySqOiDqKisEyoKJEsl.L2psUIjeKMwmp5W3iElRQLKZF0.kKbS', 'alfin@tokotamiya.com', 'alfin pradana', '082386222525', 'admin', CURRENT_TIMESTAMP, 'user_no_image.jpg', CURRENT_TIMESTAMP, '1');
itu adalah akun saya dengan password yang telah terhash untuk keamanan dari data user sendiri.
3. Lalu kita tambahkan file User_model.php dalam folder model yang ada dengan kode dibawah :
<?php
class User_model extends CI_Model
{
private $_table = "users";
public function doLogin(){
$post = $this->input->post();
// cari user berdasarkan email dan username
$this->db->where('email', $post["email"])
->or_where('username', $post["email"]);
$user = $this->db->get($this->_table)->row();
// jika user terdaftar
if($user){
// periksa password-nya
$isPasswordTrue = password_verify($post["password"], $user->password);
// periksa role-nya
$isAdmin = $user->role == "admin";
// jika password benar dan dia admin
if($isPasswordTrue && $isAdmin){
// login sukses yay!
$this->session->set_userdata(['user_logged' => $user]);
$this->_updateLastLogin($user->user_id);
return true;
}
}
// login gagal
return false;
}
public function isNotLogin(){
return $this->session->userdata('user_logged') === null;
}
private function _updateLastLogin($user_id){
$sql = "UPDATE {$this->_table} SET last_login=now() WHERE user_id={$user_id}";
$this->db->query($sql);
}
}
4. Lalu buat controller baru dalam folder controllers/admin dengan nama login.php. kemudian isi kode berikut :
<?php
class Login extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model("user_model");
$this->load->library('form_validation');
}
public function index()
{
// jika form login disubmit
if($this->input->post()){
if($this->user_model->doLogin()) redirect(site_url('admin'));
}
// tampilkan halaman login
$this->load->view("admin/login_page.php");
}
public function logout()
{
// hancurkan semua sesi
$this->session->sess_destroy();
redirect(site_url('admin/login'));
}
}
5. lalu tambahkan kode ini pada konstruktor di setiap kontroler yang lain :
$this->load->model("user_model");
if($this->user_model->isNotLogin()) redirect(site_url('admin/login'));
tambahkan pada Overview.php dan Products.php
6. lalu kita buat view untuk halaman loginnya, buat file baru pada folder application/views/admin dengan nama login_page.php dan isi dengan kode dibawah :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Login Admin</title>
<!-- Bootstrap core CSS-->
<link href="<?php echo base_url('assets/bootstrap/css/bootstrap.min.css') ?>" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12 col-md-6 text-center mt-5 mx-auto p-4">
<h1 class="h2">Login Admin</h1>
<p class="lead">Silahkan masuk ke Panel Admin</p>
</div>
</div>
<div class="row">
<div class="col-12 col-md-5 mx-auto mt-5">
<form action="<?= site_url('admin/login') ?>" method="POST">
<div class="form-group">
<label for="email">Email</label>
<input type="text" class="form-control" name="email" placeholder="Pakai username juga bisa.." required />
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" placeholder="Password.." required />
</div>
<div class="form-group">
<div class="d-flex justify-content-between">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="rememberme" id="rememberme" />
<label class="custom-control-label" for="rememberme"> Ingat Saya</label>
</div>
<a href="<?= site_url('reset_password') ?>">Lupa Password?</a>
</div>
</div>
<div class="form-group">
<input type="submit" class="btn btn-success w-100" value="Login" />
</div>
</form>
</div>
</div>
</div>
</body>
</html>
7. Berikutnya kita harus membuat link logout, silahkan buka file views/admin/_partials.modal.php, dan rubah kode dibawah
dari ini : <a class="btn btn-primary" href="login.html">Logout</a>
menjadi : <a class="btn btn-primary" href="<?= site_url('admin/login/logout') ?>">Logout</a>
8. Apabila saat membuka http://localhost/tokotamiya/index.php/admin/. sudah tampil halaman berikut, artinya anda sudah berhasil membuat fitur login.
9. untuk source codenya dapat dilihat di github saya github saya
Komentar
Posting Komentar