0% found this document useful (0 votes)
36 views7 pages

Tutorial Login and Logout Implementation

The document provides steps to create login, logout, and authentication functions in CodeIgniter. It describes creating database tables and models, building login and registration forms, validating and processing form submissions, and using filters to restrict access to unauthorized users.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views7 pages

Tutorial Login and Logout Implementation

The document provides steps to create login, logout, and authentication functions in CodeIgniter. It describes creating database tables and models, building login and registration forms, validating and processing form submissions, and using filters to restrict access to unauthorized users.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Tutorial Login, Logout dan Auth

Login :

1. Buat table tbl_user sbb :

id_user int(11) primary key/autoincrement


nama_user varchar(255)
username varchar(255)
password varchar(255)
level int(1)

2. Buat controller baru dengan nama Auth.php dan scriptnya sbb :


<?php

namespace App\Controllers;

use App\Models\Model_auth;

class Auth extends BaseController


{
public function __construct()
{
helper('form');
$this->Model_auth = new Model_auth();
}

public function index()


{
$data = array(
'title' => 'Login',
);
return view('v_login', $data);
}
}

3. Buat file views dengan nama v_login.php


4. Perbaiki routing dengan membuka file Route.php, perbaiki baris berikut :

Baris ke-20 : $routes->setDefaultController('Auth');


Baris ke-34 : $routes->get('/', 'Auth::index');

5. Silahkan test hasil sementara


6. Buka kembali file v_login.php, lalu buat form login dengan mengambil contoh pada template
adminlte, kemudian perbaiki script sehingga tampak sbb :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin | Login</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="<?= base_url();
?>/template/plugins/fontawesome-free/css/all.min.css">
<!-- icheck bootstrap -->
<link rel="stylesheet" href="<?= base_url(); ?>/template/plugins/icheck-
bootstrap/icheck-bootstrap.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="<?= base_url();
?>/template/dist/css/adminlte.min.css">
</head>
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<a href=""><b>Admin</b> <?= $title; ?></a>
</div>
<!-- /.login-logo -->
<div class="card">
<div class="card-body login-card-body">

<?php
echo form_open('auth/login')
?>

<div class="input-group mb-3">


<input name="username" class="form-control"
placeholder="Username" required>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
</div>
</div>
</div>
<div class="input-group mb-3">
<input type="password" name="password" class="form-control"
placeholder="Password" required>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-8">
<div class="icheck-primary">
<input type="checkbox" id="remember">
<label for="remember">
Remember Me
</label>
</div>
</div>
<!-- /.col -->
<div class="col-4">
<button type="submit" class="btn btn-primary btn-
block">Login</button>
</div>
<!-- /.col -->
</div>
<?php echo form_close(); ?>

</div>
<!-- /.login-card-body -->
</div>
</div>
<!-- /.login-box -->

<!-- jQuery -->


<script src="<?= base_url();
?>/template/plugins/jquery/jquery.min.js"></script>
<!-- Bootstrap 4 -->
<script src="<?= base_url();
?>/template/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- AdminLTE App -->
<script src="<?= base_url();
?>/template/dist/js/adminlte.min.js"></script>
</body>
</html>
7. Buat file Models baru dengan nama Model_auth.php, lalu ketik script berikut :
<?php

namespace App\Models;

use CodeIgniter\Model;

class Model_auth extends Model


{
public function login($username, $password)
{
return $this->db->table('tbl_user')->where([
'username' => $username,
'password' => $password,
])->get()->getRowArray();
}
}

8. Buka controller Auth.php dan buat sebuah function baru dengan nama login sbb:
public function login()
{
if ($this->validate([
'username' => [
'label' => Username,
'rules' => 'required',
'errors' => [
'required' => '{field} Wajib Diisi !!!'
]
],
'password' => [
'label' => 'Password',
'rules' => 'required',
'errors' => [
'required' => '{field} Wajib Diisi !!!'
]
]
])) {
//jika valid
$username = $this->request->getPost('username');
$password = $this->request->getPost('password');
$cek = $this->Model_auth->login($username, $password);
if ($cek) {
//jika datanya cocok
session()->set('log', true);
session()->set('id', $cek['id']);
session()->set('nama_user', $cek['nama_user']);
session()->set('username', $cek['username']);
session()->set('level', $cek['level']);
return redirect()->to(base_url('home'));
} else {
session()->setFlashdata('pesan', 'Login Gagal !!!,
Username atau Paswword Salah !!!');
return redirect()->to(base_url('auth/index'));
}
} else {
//jika tidak valid
session()->setFlashdata('errors',
\Config\Services::validation()->getErrors());
return redirect()->to(base_url('auth/index'));
}
}

9. Buka file v_login.php lalu tambahkan script untuk menampilkan message (pesan dan errors)
sebelumnyo script <?php echo form_open …. sbb:

<?php
$errors = session()->getFlashdata('errors');
if (!empty($errors)) { ?>
<div class="alert alert-danger alert-dismissible">
<ul>
<?php foreach ($errors as $key => $value) { ?>
<li><?= esc($value) ?></li>
<?php } ?>
</ul>
</div>
<?php } ?>

<?php
if (session()->getFlashdata('pesan')) {
echo '<div class="alert alert-danger alert-dismissible">';
echo session()->getFlashdata('pesan');
echo '</div>';
} ?>

10. Test hasil akhir login


Logout :

11. Buka controller Auth.php lalu buat sebuah function baru dengan nama logout sbb :

public function logout()


{
session()->remove('log');
session()->remove('nama_user');
session()->remove('username');
session()->remove('level');

session()->setFlashdata('pesan', 'Anda Telah Logout !!!');


return redirect()->to(base_url('auth'));
}

12. Test hasil logout

Authencation/Filter :

13. Buka folder app-filter, lalu buat sebuah file dengan nama Filter_auth.php dengan script sbb :
<?php

namespace App\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;

class Filter_auth implements FilterInterface


{
public function before(RequestInterface $request, $arguments = null)
{
// Do something here
if (session()->get('log') != true) {
session()->setFlashdata('pesan', 'Anda Belum Login, Login
Dulu Bro !!!');
return redirect()->to(base_url('auth'));
}
}

public function after(RequestInterface $request, ResponseInterface


$response, $arguments = null)
{
// Do something here
if (session()->get('log') == true) {
return redirect()->to(base_url('home'));
}
}
}
14. Selanjutnya kita lakukan configurasi dengan membuka file Filter.php yang terdapat dalam folder
App-Config, lalu tambahkan script sehingga tampak seperti berikut :

class Filters extends BaseConfig


{
// Makes reading things below nicer,
// and simpler to change out script that's used.
public $aliases = [
'csrf' => \CodeIgniter\Filters\CSRF::class,
'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
'honeypot' => \CodeIgniter\Filters\Honeypot::class,
'Filter_auth' => \App\Filters\Filter_auth::class,
];

// Always applied before every request


public $globals = [
'before' => [
'Filter_auth' => ['except' => [
'auth', 'auth/*', '/'
]]
//'honeypot'
// 'csrf',
],
'after' => [
'Filter_auth' => ['except' => [
'home', 'home/*',
'kategori', 'kategori/*',
'dep', 'dep/*',
'arsip', 'arsip/*',
'user', 'user/*'
]],
'toolbar',
//'honeypot'
],
];

15. Simpan setiap perubahan dan lakukan test hasil akhir

You might also like