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 :
  1. Pertama-tama kita harus membuat table users di localhost/phpmyadmin dengan mengguakan kode SQL seperti dibawah 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`)
    );
    
    Tidak lupa membuat user dengan role admin
  2. Membuat Model User
    Pertama-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);
        }
    
    }
    

  3. Membuat Controller Login
    Kita juga perlu membuat sebuah file bernama Login.php pada direktori controllers/admin/ lalu isikan file tersebut seperti script dibawah ini :
    <?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'));
        }
    }
    
    Tidak lupa untuk menambahkan script dibawah ini pada controller Products dan Overview
    $this->load->model("user_model");
    if($this->user_model->isNotLogin()) redirect(site_url('admin/login'));
    
    Maka pada file Overview.php akan menjadi seperti :

    Sedangkan pada file Products.php akan menjadi seperti :
  4. Membuat View untuk Halaman Login
    Untuk membuat halaman login, kita perlu membuat file bernama login_page.php pada direktori application/views/admin/ lalu isikan file tersebut seperti 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>
    
    Kita juga perlu menganti sebuah link logout pada file di views/admin/_partials/modal.php yang awalnya :
    <a class="btn btn-primary" href="login.html">Logout</a>
    
    Lalu kita ubah menjadi :
    <a class="btn btn-primary" href="<?= site_url('admin/login/logout') ?>">Logout</a>
    
    Setelah melakukan diatas, maka seharusnya halaman login sudah bisa digunakan
  5. Uji Coba Login
    - Halaman Login

    - Halaman jika mau melekukan Logout

    - Halaman utama setelah melakukan Logout
  6. Cukup sekian untuk pertemuan kali ini.
  7. Untuk Source Codenya bisa dilihat di link dibawah ini :
    Source Code

Komentar

Postingan populer dari blog ini

UTS PBKK A

Tugas 2 PBKK