Tugas 7 PBKK
Tugas 7 PBKK
Pada pertemuan kali ini saya akan membuat role yaitu admin dan user. Untuk tata cara pengerjaannya bisa lihat tata cara dibawah ini :
- Pertama-tama kita harus membuat table users di localhost/phpmyadmin dengan mengguakan kode SQL seperti dibawah ini :
Tidak lupa membuat user dengan role adminCREATE 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`) );
- Membuat Model UserPertama-tama buatlah sebuah file baru bernama User_model.php didalam direktori application/models/ dan isilah file tersebut dengan script dibawah ini :
<?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); } }
- Membuat Controller Login
Kita juga perlu membuat sebuah file bernama Login.php pada direktori controllers/admin/ lalu isikan file tersebut seperti script dibawah ini :
Tidak lupa untuk menambahkan script dibawah ini pada controller Products dan Overview<?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')); } }
Maka pada file Overview.php akan menjadi seperti :$this->load->model("user_model"); if($this->user_model->isNotLogin()) redirect(site_url('admin/login'));
Sedangkan pada file Products.php akan menjadi seperti : - Membuat View untuk Halaman LoginUntuk membuat halaman login, kita perlu membuat file bernama login_page.php pada direktori application/views/admin/ lalu isikan file tersebut seperti kode dibawah :
Kita juga perlu menganti sebuah link logout pada file di views/admin/_partials/modal.php yang awalnya :<!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>
Lalu kita ubah menjadi :<a class="btn btn-primary" href="login.html">Logout</a>
Setelah melakukan diatas, maka seharusnya halaman login sudah bisa digunakan<a class="btn btn-primary" href="<?= site_url('admin/login/logout') ?>">Logout</a>
- Uji Coba Login
- Cukup sekian untuk pertemuan kali ini.
- Untuk Source Codenya bisa dilihat di link dibawah ini :
Source Code
Komentar
Posting Komentar