Membuat login User dengan framework Codeigniter

Membuat login User dengan framework Codeigniter

Baca Juga

Advertidement
Membuat login User dengan framework Codeigniter
Oke setelah kemarin kita buat Crud User sekarang kita akan buat system login user. Sebelum kita buat fungsi login user silahkan kalian buat user baru dengan mengakses url http://localhost/belajarweb/admin/user/create Lalu buat user sebagai administrator yang akan kita gunakan untuk login. Sekarang kita akan membuat fungsi login admin.
Membuat login User dengan framework Codeigniter
 Pertama kita akan membuat Library Cek login yang fungsinya nanti untuk melakukan pengecekan user apakah sudah login atau belum. Silahkan buka direktory projek yang kemarin kita buat yaitu di C:\xampp\htdocs\belajarweb\application\libraries lalu buat file dengan nama Cek_login.php kemudian copy kode di bawah ini :
 

<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Cek_login
{
    protected $CI;

    public function __construct()
    {
        $this->CI = &get_instance();
    }

    public function cek()
    {
        //Fungsi ini akan di gunakan untuk melindungi halaman admin sebelum user melakukan login
        if (
            //Cek jika data sesion email dan role tidak ada
            $this->CI->session->userdata('email') == "" && $this->CI->session->userdata('role') == ""
        ) {
            //Maka tampilkan notif harus login jika ingin mengakses halaman admin
            $this->CI->session->set_flashdata('message', 'Silahkan Login terlebih dahulu');
            //arahkan user ke halaman login
            redirect(base_url('auth'), 'refresh');
        }
    }

    public function logout()
    {
        $this->CI->session->unset_userdata('id');
        $this->CI->session->unset_userdata('email');
        $this->CI->session->unset_userdata('name');
        $this->CI->session->unset_userdata('role');
        //Jika user melakukan logout maka semua data session akan di hapus
        //tampilkan notif bahwa user telah logout dan tidak dapat mengakses halaman admin
        $this->CI->session->set_flashdata('logout', 'Anda Telah keluar dari administrator');
        //arahkan user ke halaman login
        redirect(base_url('auth'), 'refresh');
    }
}


Kemudian simpan lalu sekarang kita load library cek loginnya melalui file autoload, silahkan buka folder config yang ada di application/config/autoload.php kemudian cari "Auto-load Libraries" kemudian di bagian array tambahkan 'cek_login' sehingga kodengan menjadi seperti ini :
 
$autoload['libraries'] = array('form_validation', 'database', 'session', 'cek_login');
Kemudian di bagian "Auto-load Models" tambahkan user_model sehingga kode menjadi seperti ini :
 
$autoload['model'] = array('user_model');

Kemudian simpan file lalu sekarang kita akan membuat controller untuk melakukan fungsi login silahkan buka folder application\controllers lalu buat file dengan nama Auth.php lalu copy kode berikut ini :

 
<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Auth extends CI_Controller
{
    //Load Model
    public function __construct()
    {
        parent::__construct();
        $this->load->model('user_model');
    }

    //Load Login Page
    public function index()
    {

        if ($this->session->userdata('email')) {
            redirect(base_url('admin/dashboard'), 'refresh');
        }
        //Validasi form login user
        $valid = $this->form_validation;
        //Validasi Email
        $valid->set_rules(
            'email',
            'Email',
            'required|trim',
            array('required'      => '%s harus diisi')
        );
        //Validasi Password
        $valid->set_rules(
            'password',
            'Password',
            'required',
            array('required'      => '%s harus diisi')
        );
        if ($valid->run()) {
            //ambil data dari form inputan login
            $email          = $this->input->post('email');
            $password       = $this->input->post('password');
            //Cek ke database apakan hasil inputan ada di database
            $cek_login   = $this->user_model->login($email, $password);
            //Jika data email dan password ada maka buat SESSION (id, email, name dan role)
            if ($cek_login) {
                $this->session->set_userdata('id', $cek_login->id);
                $this->session->set_userdata('email', $cek_login->email);
                $this->session->set_userdata('name', $cek_login->name);
                $this->session->set_userdata('role', $cek_login->role);
                $this->session->set_flashdata('login', 'Selamat datang! Anda Berhasil Login');
                redirect(base_url('admin/dashboard'), 'refresh');
            } else {
                //Jika data email dan password tidak ada redirect ke halaman login lagi
                //Tampilkan pesan error
                $this->session->set_flashdata('message', 'Login Gagal');
                redirect(base_url('auth'), 'refresh');
            }
        }
        $data = array('title' => 'Login Administrator');
        $this->load->view('backend/auth/login', $data, FALSE);
    }
    //Fungsi Logout
    public function logout()
    {
        $this->cek_login->logout();
    }
}


Lalu simpan, Sekarang kita untuk model kita kemarin sudah buat model jadi sekarang kita akan buat tampilan loginnya silahkan buka folder application\views\backend lalu buat folder dengan nama auth lalu buat file login.php di dalamnya kemudian copy kode di bawah ini :



<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <title><?php echo $title; ?></title>
    <!-- Custom fonts for this template-->
    <link href="<?php echo base_url('assets/template/backend/vendor/fontawesome-free/css/all.min.css'); ?>" rel="stylesheet" type="text/css">
    <link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
    <!-- Custom styles for this template-->
    <link href="<?php echo base_url('assets/template/backend/css/sb-admin-2.min.css'); ?>" rel="stylesheet">
</head>

<body class="bg-gradient-primary">
    <div class="container">
        <!-- Outer Row -->
        <div class="row justify-content-center h-100">
            <div class="col-xl-6 my-auto">
                <div class="card o-hidden border-0 shadow-lg my-5">
                    <div class="card-body p-0">
                        <div class="p-5">
                            <div class="text-center">
                                <h1 class="h4 text-gray-900 mb-4">Admin Login!</h1>
                            </div>
                            <?php
                            if ($this->session->flashdata('message')) {
                                echo '<div class="alert alert-danger text-center">';
                                echo $this->session->flashdata('message');
                                echo '</div>';
                            } elseif ($this->session->flashdata('logout')) {
                                echo '<div class="alert alert-success text-center">';
                                echo $this->session->flashdata('logout');
                                echo '</div>';
                            }
                            $attributes = array('class' => 'user');
                            echo form_open('auth', $attributes)
                            ?>
                            <div class="form-group">
                                <input type="email" class="form-control form-control-user" name="email" placeholder="Enter Email Address..." value="<?php echo set_value('email'); ?>">
                                <?php echo form_error('email', '<span class="text-danger">', '</span>'); ?>
                            </div>
                            <div class="form-group">
                                <input type="password" class="form-control form-control-user" name="password" placeholder="Password" value="<?php echo set_value('password'); ?>">
                                <?php echo form_error('password', '<span class="text-danger">', '</span>'); ?>
                            </div>

                            <button class="btn btn-primary btn-user btn-block">
                                Login
                            </button>
                            <?php echo form_close() ?>
                            <hr>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>


Kemudian Simpan file, Sekarang kita akan memproteksi halaman admin sehingga user harus login untuk mengakses halaman administrator. Masih di folder backend silahkan buka folder layout kemudian buka file wrapp.php kemudian tambahkan kode $this->cek_login->cek(); Sehingga semua kode yang ada di file wrapp.php adalah seperti ini :

<?php
//Proteksi Halaman Admin
$this->cek_login->cek();
require_once('head.php');
require_once('sidebar.php');
require_once('header.php');
require_once('content.php');
require_once('footer.php');


Nah karena sekarang kita sudah membuat fungsi cek login kita harus memproteksi fungsi delete data di controller. Silahkan buka folder controllers/admin lalu buka file Category.php tambahkan $this->cek_login->cek(); di bagian fungsi delete sehingga kodenya menjadi seperti ini :

//Hapus data category
    public function delete($id)
    {
        $this->cek_login->cek();
        $category = $this->category_model->detail($id);
        $data = array('id'   => $category->id);

        $this->category_model->delete($data);
        $this->session->set_flashdata('sukses', 'Data telah di Hapus');
        redirect(base_url('admin/category'), 'refresh');
    }

Jika sudah silahkan simpan file sekarang coba kamu akses halaman dashboard dengan menggunakan url http://localhost/belajarweb/admin/dashboard maka kamu akan di arahkan ke halaman login http://localhost/belajarweb/auth Sekarang silahkan login menggunakan user yang tadi sudah kamu buat. Jika berhasil maka kamu akan masuk ke halaman dashboard admin.
Advertidement

Related Posts

No comments:

Post a Comment

Blog Ini Dofollow Ya bro tapi jangan nyepam komentar secara bijak dan sesuai dengan postingan