codeigniter user authentication user authentication menggunakan library ion auth page 2 of 18 modul...

18
CLSC Development Team Codeigniter User Authentication Menggunakan Library Ion Auth Toni Haryanto 9/10/2011

Upload: voque

Post on 19-Mar-2019

372 views

Category:

Documents


3 download

TRANSCRIPT

CLSC Development Team

Codeigniter User

Authentication Menggunakan Library Ion Auth

Toni Haryanto 9/10/2011

Codeigniter User Authentication menggunakan Library Ion Auth Page 2 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

Pada modul kali ini kita akan mempelajari library Ion Auth dan bagaimana

memanfaatkannya untuk membuat sistem user authentication atau autentikasi

pengguna. Poin-poin yang akan kita pelajari diantaranya:

memuat user

registration

Poin ini akan membahas langkah-langkah membuat sistem registrasi

pengguna, mulai dari membuat form registrasi, mengamankannya,

menyimpan data ke dalam database, mengirimkan email konfirmasi,

dan melakukan aktivasi akun

membuat

sistem login

Poin ini akan membahas langkah-langkah membuat sistem login mulai

dari membuat form login, melakukan pengecekan akun, dan routing

halaman setelah proses login

membuat

sistem forgot

password

Poin ini akan membahas langkah-langkah membuat sistem untuk

menanggulangi lupa password penguna, mulai dari membuat form

lupa password, mengecek kecocokan akun, mengirimkan email

konfirmasi reset password, mereset password, dan mengirimkan email

berisi password baru yang telah digenerate

Untuk membuat proyek autentikasi ini kita akan menggunakan beberapa library bawaan

codeigniter dan library tambahan serta beberapa helper, diantaranya:

Ion auth class Salahsatu library yang dikembangkan oleh komunitas untuk

mengakomodir keperluan autentikasi mulai dari registrasi hingga reset

password

Session class Library dengan fitur yang komplit untuk mendukung managemen

session

Form validation

class

Library untuk mengatur validasi data pada form dalam proses input

data

Input class Library untuk memastikan keamanan data yang diinputkan sebelum

disetorkan ke database. Library ini sudah otomatis diload.

Form Helper Helper berisi kumpulan fungsi untuk membantu pembuatan form

URL helper Helper berisi kumpulan fungsi untuk membantu pekerjaan dengan URL

Codeigniter User Authentication menggunakan Library Ion Auth Page 3 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

Tidak usah bingung dengan banyaknya library dan helper yang akan kita gunakan karena

justru library dan helper inilah yang akan membantu kita mempercepat pekerjaan kita.

Pendahuluan

Berbicara tentang autentikasi maka erat kaitannya dengan session. Session digunakan

untuk mengatur dan memantau kegiatan seorang pengguna dan mencatatnya selama

pengguna tersebut berselancar di sebuah situs. Alur autentikasi secara sederhana pada

umumnya yakni, suatu situs akan menyimpan data keaktifan seorang pengguna pada

session setelah ia login di situs tersebut. Data session tersebut akan selalu digunakan

untuk mengecek apakah pengguna tersebut masih aktif, yang memungkinkan ia

mengakses suatu halaman yang hanya boleh diakses oleh pengguna terdaftar. Apabila

pengguna itu keluar atau logout dari situs tersebut, maka data session akan dihapus dan

pengguna tersebut tidak akan dapat mengakses halaman tertentu hingga ia login lagi.

Codeigniter sudah menyediakan Class Session sebagai library yang bisa kita manfaatkan

untuk mengatur semua penggunaan session. Akan tetapi pada modul ini kita tidak akan

menggunakan library session untuk membuat sistem autentikasi, karena kita akan

memanfaatkan sebuah library bernama Ion Auth yang sudah mencakup kebutuhan

autentikasi dan managemen session untuk autentikasi.

Skema Database

Berikut skema database untuk program autentikasi dari ion auth.

Codeigniter User Authentication menggunakan Library Ion Auth Page 4 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

Hal penting yang mesti diketahui mengenai database:

- field utama di table users yang mesti kita perhatikan cukup username, email dan

password. Apabila kita memerlukan field lain untuk menyimpan data profil user,

buatlah field baru di table meta.

- Secara default table group berisi dua baris record, yakni group admin dan members.

Akun admin default juga sudah dibuat, yakni dengan email: [email protected] dan

password: password.

- Kita sebenarnya dapat mengganti nama ketiga tabel tersebut sesuai keinginan kita.

Kita hanya perlu mendaftarkannya di file config/ion_auth.php:

$config['tables']['groups'] = 'groups';

$config['tables']['users'] = 'users';

$config['tables']['meta'] = 'meta';

dengan mengganti nilai dari ketiga index variabel array diatas sesuai nama tabelnya

masing-masing.

#0 Pengaturan Awal

- Download Codeigniter versi terbaru.

- Merge folder config/, controllers/,

language/, libraries/, models/, dan views/

dari Ion Auth yang telah dimodifikasi ke dalam

folder application/ di codeigniter untuk

mendapatkan hasil akhir. Untuk mengikuti

modul ini cukup pindahkan file

config/ion_auth.php, folder language/, file

libraries/Ion_auth.php dan

models/ion_auth_models.php ke dalam folder

application/ karena file-file tersebutlah inti

dari library Ion Auth.

- Buat sebuah database di mysql, dan import file

ion_auth.sql ke dalam database tersebut.

- Sisanya atur setting di file

Codeigniter User Authentication menggunakan Library Ion Auth Page 5 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

config/database.php sesuai dengan pengaturan database Anda.

- Atur konfigurasi ion auth sesuai kebutuhan. Baris konfigurasi yang akan kita

modifikasi adalah $config['email_activation']. Default nilainya adalah false

yang artinya kita tidak akan mengirimkan email aktivasi untuk setiap user yang

mendaftar. Sesuai skenario yang telah dipaparkan di awal, maka silakan ganti nilai

konfigurasi tersebut menjadi true.

#1 User Registration

Alur data untuk sistem registrasi yang akan kita buat sebagai berikut:

- user mengisikan data diri melalui form registrasi

- program mengecek apakah data sudah sesuai dengan permintaan data yang harus

dimasukkan

- apabila data tidak sesuai permintaan, maka kembalikan user ke halaman form dan

dipersilakan memperbaiki data hingga data yang dimasukkan sesuai dengan

permintaan

- apabila data sudah sesuai ketentuan, maka data akan disimpan di dalam database

dengan status akun non-aktif, kemudian program mengirimkan email konfirmasi ke

alamat email yang sudah dimasukkan, berupa link untuk aktivasi akun. User akan

mendapat pemberitahuan bahwa registrasi selesai dan diminta untuk mengecek

email yang sudah dikirimkan

- apabila user membuka link aktivasi tersebut, tandanya email yang dimasukkan valid

dan program akan mengaktifkan akun dari user tersebut

Langkah pertama adalah membuat file controller bernama auth.php di dalam folder

controllers/. Kemudian isi dengan baris kode berikut.

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

class Auth extends CI_Controller {

function __construct(){

parent::__construct();

/* muat library dan helper yang dibutuhkan */ $this->load->library('ion_auth');

Codeigniter User Authentication menggunakan Library Ion Auth Page 6 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

$this->load->library('session');

$this->load->library('form_validation');

$this->load->helper(array('url', 'form'));

}

function registrasi()

{

//apabila user sudah login, maka halaman register tidak dapat ditampilkan if ($this->ion_auth->logged_in())

{

redirect('auth/index');

}

$data['title'] = "Halaman Registrasi";

//validasi form register

//username wajib diisi, bersih dari cross site scripting dan minimal 4 karakter $this->form_validation->set_rules('username', 'Username',

'required|xss_clean|min_length[4]');

//alamat email wajib diisi dan sesuai dengan format email $this->form_validation->set_rules('email', 'Alamat Email',

'required|valid_email');

//nama depan wajib diisi dan bersih dari cross site scripting $this->form_validation->set_rules('first_name', 'Nama Depan',

'required|xss_clean');

//nama belakang wajib diisi dan bersih dari cross site scripting $this->form_validation->set_rules('last_name', 'Nama Belakang',

'required|xss_clean');

//nomor telepon wajib diisi dengan angka, bersih dari cross site scripting,

rentang 7-12 karakter $this->form_validation->set_rules('phone', 'Nomor Telepon',

'required|numeric|xss_clean|min_length[7]|max_length[12]');

//nama perusahaan wajib diisi dan bersih dari cross site scripting $this->form_validation->set_rules('company', 'Perusahaan',

'required|xss_clean');

//password wajib diisi, jumlah karakter lebih dari angka pengaturan min_password_length

dan cocok dengan field password_confirm $this->form_validation->set_rules('password', 'Password', 'required|

min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|

max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|

matches[password_confirm]');

$this->form_validation->set_rules('password_confirm',

'Konfirmasi Password', 'required');

//apabila validasi benar if ($this->form_validation->run() == true)

{

//Field utama untuk autentikasi adalah username, email dan password,

Codeigniter User Authentication menggunakan Library Ion Auth Page 7 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

disimpan di table users

//selain ketiga itu dikelompokkan ke additional data dan disimpan di table meta

//post nilai untuk username, email dan password $username = $this->input->post('username', true);

$email = $this->input->post('email');

$password = $this->input->post('password');

//ini data tambahan untuk profil user $additional_data = array(

'first_name' => $this->input->post('first_name'),

'last_name' => $this->input->post('last_name'),

'company' => $this->input->post('company'),

'phone' => $this->input->post('phone')

);

}

//apabila proses registrasi berhasil if ($this->form_validation->run() == true &&

$this->ion_auth->register($username, $password, $email,

$additional_data))

{

//redirect ke halaman depan dengan notifikasi untuk aktivasi $this->session->set_flashdata('message',

"Akun telah dibuat. Silakan cek email untuk aktivasi.");

redirect('auth/login');

//apabila akun langsung aktif tanpa perlu aktivasi via notifikasi email:

//$this->session->set_flashdata('message', "Akun telah dibuat. Silakan login.");

//redirect('auth/login'); }

else //apabila validasi salah atau membuka halaman pertama kali {

//set flashdata untuk kesalahan input atau untuk pesan error sebelumnya $main['message'] = (validation_errors())

? validation_errors()

: $this->ion_auth->errors();

//buat array untuk membuat field form $main['username'] = array('name' => 'username',

'id' => 'username',

'type' => 'text',

'value' => $this->form_validation->set_value('username'),

);

$main['email'] = array('name' => 'email',

'id' => 'email',

'type' => 'text',

'value' => $this->form_validation->set_value('email'),

);

$main['first_name'] = array('name' => 'first_name',

'id' => 'first_name',

'type' => 'text',

'value' => $this->form_validation->set_value('first_name'),

);

$main['last_name'] = array('name' => 'last_name',

Codeigniter User Authentication menggunakan Library Ion Auth Page 8 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

'id' => 'last_name',

'type' => 'text',

'value' => $this->form_validation->set_value('last_name'),

);

$main['company'] = array('name' => 'company',

'id' => 'company',

'type' => 'text',

'value' => $this->form_validation->set_value('company'),

);

$main['phone'] = array('name' => 'phone',

'id' => 'phone',

'type' => 'text',

'value' => $this->form_validation->set_value('phone'),

);

$main['password'] = array('name' => 'password',

'id' => 'password',

'type' => 'password',

'value' => $this->form_validation->set_value('password'),

);

$main['password_confirm'] = array('name' => 'password_confirm',

'id' => 'password_confirm',

'type' => 'password',

'value' => $this->form_validation-

>set_value('password_confirm'),

);

$data['content'] = $this->load->view('register_v', $main, true);

$this->load->view('template', $data);

}

}

}

Buat file view template.php di dalam folder views/ lalu isikan baris kode berikut.

<html>

<head>

<title><?php echo $title; ?></title>

<style>

body{ background: lightsteelblue; margin: 0; }

#header{ background: steelblue; color: white;

padding: 5px 10px; font-size: 2em; }

#main{ padding: 0 10px; }

#infoMessage{ color: #ff3; font-weight:bold;

width: 400px; line-height: 5px; padding: 5px; }

</style>

</head>

<body>

<div id="header"><?php echo $title; ?></div>

<div id="main"><?php echo $content; ?></div>

</body>

</html>

Buat file view register_v.php di dalam folder views/ lalu isikan baris kode berikut.

<p>Silakan isikan data Anda di form ini.</p>

<div id="infoMessage"><?php echo $message;?></div>

Codeigniter User Authentication menggunakan Library Ion Auth Page 9 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

<?php echo form_open("auth/registrasi");?>

<p>Username:<br />

<?php echo form_input($username);?>

</p>

<p>Alamat Email:<br />

<?php echo form_input($email);?>

</p>

<p>Nama Depan:<br />

<?php echo form_input($first_name);?>

</p>

<p>Nama Belakang:<br />

<?php echo form_input($last_name);?>

</p>

<p>Nama Perusahaan:<br />

<?php echo form_input($company);?>

</p>

<p>Nomor Telepon:<br />

<?php echo form_input($phone);?>

</p>

<p>Password:<br />

<?php echo form_input($password);?>

</p>

<p>Ulangi Password:<br />

<?php echo form_input($password_confirm);?>

</p>

<p><?php echo form_submit('submit', 'Buat Akun');?></p>

<?php echo form_close();?>

Begitu user registrasi, maka user akan dikirimi email untuk aktivasi akun. Ion auth sudah

otomatis mengirimkan email aktivasi apabila kita mengkonfigurasi untuk pengiriman

email aktivasi. Sehingga kita perlu mempersiapkan template untuk email aktivasi yang

nantinya digunakan oleh ion auth untuk format teks email. Nama file template untuk

aktivasi email mesti diatur di file konfigurasi ion_auth.php, yang mana sudah memiliki

nilai default:

$config['email_templates'] = 'email/';

$config['email_activate'] = 'activate.tpl.php';

Codeigniter User Authentication menggunakan Library Ion Auth Page 10 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

konfigurasi ini maksudnya, kita menggunakan file template email bernama

activate.tpl.php untuk email aktivasi, yang disimpan di folder views/email/. Maka

sekarang kita akan membuat file tersebut, dan ini kodenya.

<html>

<body>

<h1>Aktivasi akun untuk <?php echo $identity;?></h1>

<p>Silakan klik link berikut untuk

<?php echo anchor('auth/aktivasi/'. $id .'/'. $activation, 'aktivasi akun

Anda');?>.</p>

</body>

</html>

Begitu email tersebut sampai pada user, ia harus mengklik link aktivasi tersebut untuk

mengaktifkan akunnya. Kita perlu membuat satu fungsi lagi untuk menangkap

permintaan aktivasi tersebut. Tambahkan satu fungsi aktivasi() di dalam controller

auth.php.

function aktivasi($id, $code=false)

{

//apabila $code berisi nilai dari link yang dikirim melalui email if ($code !== false)

//aktifkan akun dengan id $id dengan terlebih dahulu mencocokkan $code -

//dengan yang sudah terdaftar di dalam database $activation = $this->ion_auth->activate($id, $code);

//apabila aktivasi berhasil if ($activation)

{

//redirect ke auth/index untuk dipersilakan login $this->session->set_flashdata('message',

$this->ion_auth->messages());

redirect('auth/login');

}

else //apabila aktivasi gagal {

//redirect ke halaman lupa_password() $this->session->set_flashdata('message', $this->ion_auth->errors());

redirect('auth/lupa_password');

}

}

di dalam fungsi aktivasi() di atas ada kode untuk redirect() ke halaman login apabila

aktivasi berhasil, oleh karena itu mari kita lanjutkan ke tahap dua membuat login

system.

Codeigniter User Authentication menggunakan Library Ion Auth Page 11 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

#2 Login System

Alur data untuk sistem login yang akan kita buat sebagai berikut:

- user memasukkan kombinasi email dan password melalui form login

- program mengecek apakah kombinasi email dan password yang dimasukkan

ditemukan di dalam database

- apabila kombinasi email dan password ditemukan maka user akan dilanjutkan ke

halaman terautentikasi sesuai role / status akunnya. Apabila status akunnya sebagai

users maka user tersebut akan dilanjutkan ke halaman users. Apabila status akunnya

sebagai administrator maka user tersebut akan dilanjutkan ke halaman

administrator.

- Apabila kombinasi email dan password tidak ditemukan maka user akan

dikembalikan ke halaman form login dengan pemberitahuan gagal login.

Langkah pertama silakan tambahkan satu fungsi bernama login() di dalam controller

auth.php seperti berikut.

public function login()

{

//bila sudah login if ($this->ion_auth->logged_in())

{

//tidak perlu lagi mengakses halaman form login redirect('auth/index');

}

$data['title'] = "Halaman Login";

//buat validasi input form login

//validasi username wajib diisi dan bersih dari cross site scripting $this->form_validation->set_rules('email', 'Email', 'required|valid_email');

//validasi password wajib diisi $this->form_validation->set_rules('password', 'Password', 'required');

//apabila validasi benar if ($this->form_validation->run() == true)

{

//cek apakah "remember me" dicentang $remember = (bool) $this->input->post('remember');

Codeigniter User Authentication menggunakan Library Ion Auth Page 12 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

//cek pada database, bila kombinasi username dan password benar if ($this->ion_auth->login($this->input->post('email'),

$this->input->post('password'), $remember))

{

//set pesan berhasil login pada session flashdata $this->session->set_flashdata('message',

$this->ion_auth->messages());

//redirect ke halaman beranda untuk dirouting sesuai rolenya redirect('auth/index');

}

else //apabila login gagal {

//set pesan error login pada session flashdata $this->session->set_flashdata('message',

$this->ion_auth->errors());

//redirect kembali ke halaman login redirect('auth/login', 'refresh');

}

}

else //apabila validasi form login salah atau belum diisi {

//set flashdata untuk kesalahan input atau untuk pesan error sebelumnya $main['message'] = (validation_errors())

? validation_errors()

: $this->session->flashdata('message');

$main['email'] = array('name' => 'email',

'id' => 'email',

'type' => 'text',

'value' => $this->form_validation->set_value('email'),

);

$main['password'] = array('name' => 'password',

'id' => 'password',

'type' => 'password',

);

$data['content'] = $this->load->view('login_v', $main, true);

$this->load->view('template', $data);

}

}

Buat file login_v.php untuk menampilkan viewnya.

<p>Silakan login dengan email dan password Anda.</p>

<div id="infoMessage"><?php echo $message;?></div>

<?php echo form_open("auth/login");?>

<p>

<label for="email">Email:</label>

Codeigniter User Authentication menggunakan Library Ion Auth Page 13 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

<?php echo form_input($email);?>

</p>

<p>

<label for="password">Password:</label>

<?php echo form_input($password);?>

</p>

<p>

<label for="remember">Remember Me:</label>

<?php echo form_checkbox('remember', '1', FALSE);?>

</p>

<p><?php echo form_submit('submit', 'Login');?></p>

<?php echo form_close();?>

<a href="<?php echo site_url('auth/registrasi'); ?>">Buat akun baru</a> &middot;

<a href="<?php echo site_url('auth/lupa_password'); ?>">Lupa password?</a>

Untuk dapat melihat apakah user berhasil login, maka kita harus mempersiapkan

halaman yang hanya dapat diakses apabila telah login. Maka dari itu, mari kita buat dua

buah fungsi, user_page() dan admin_page(). Fungsi user_page() akan ditampilkan

apabila user non-admin berhasil login. Apabila user adalah admin, maka redirect ke

halaman admin_page(). Routing user yang sudah login ini dilakukan di fungsi index()

sehingga kita mesti membuat fungsi index() tersebut.

Sekarang mari kita buat fungsi index() terlebih dahulu.

public function index(){

//apabila user sudah login, if ($this->ion_auth->logged_in()){

//apabila user adalah admin if ($this->ion_auth->is_admin()){

//redirect ke halaman login redirect('auth/admin_page');

} else { //apabila user biasa

//redirect ke halaman login redirect('auth/user_page');

}

} else { //apabila belum login $data['title'] = "Halaman Beranda";

//memuat view beranda.php ke index array $data['content'] $data['content'] = $this->load->view('beranda_v', null, true);

//menampilkan view template.php $this->load->view('template', $data);

}

}

Codeigniter User Authentication menggunakan Library Ion Auth Page 14 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

Buat view beranda_v.php untuk menampilkan indexnya.

<div id="infoMessage">

<?php echo $this->session->flashdata('message');?>

</div>

<p>

Anda belum login.<br />

untuk login silakan klik

<a href="<?php echo site_url('auth/login'); ?>">login</a>.<br />

untuk membuat akun baru, silakan klik

<a href="<?php echo site_url('auth/registrasi'); ?>">registrasi</a>.

</p>

Setelah itu buat fungsi user_page() dan admin_page() untuk menampilkan halaman

user.

function user_page(){

//apabila user sudah login if($this->ion_auth->logged_in())

{

$data['title'] = "Halaman User/Member";

$data['content'] = $this->load->view('user_page_v', null, true);

$this->load->view('template', $data);

}

else //apabila belum login {

//redirect ke halaman login redirect('auth/login');

}

}

function admin_page(){

//apabila user sudah login dan statusnya sebagai administrator if($this->ion_auth->is_admin())

{

$data['title'] = "Halaman Administrator";

$data['content'] = $this->load->view('admin_page_v', null, true);

$this->load->view('template', $data);

}

else //apabila bukan administrator {

//anggap halaman admin tersebut tidak ada show_404();

}

}

Codeigniter User Authentication menggunakan Library Ion Auth Page 15 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

Kemudian buat file view user_page_v.php dengan konten yang sederhana saja.

<p>

Ini adalah halaman <strong>User/Member</strong> dengan email

<?php echo $this->session->userdata('username'); ?>.<br />

Untuk keluar silakan klik link

<a href="<?php echo site_url('auth/logout'); ?>">logout</a>.

</p>

buat file view admin_page_v.php juga.

<p>

Ini adalah halaman <strong>Administrator</strong>.<br />

Untuk keluar silakan klik link

<a href="<?php echo site_url('auth/logout'); ?>">logout</a> ini.

</p>

Berbicara login berarti mesti ada logout juga. Karenanya, tambahkan fungsi logout() di

dalam controller Auth.

function logout(){

//log out pengguna $this->ion_auth->logout();

//redirect ke halaman index redirect('auth');

}

#3 Forgot Password System

Alur data untuk sistem lupa password yang akan kita buat sebagai berikut:

- user memasukkan alamat emailnya melalui form lupa password

- program akan mencari alamat email tersebut di dalam database

- apabila email ditemukan, maka program akan mengirimkan email notifikasi berupa

link untuk mereset password. Apabila email tidak ditemukan, maka user akan

diberitahu bahwa email yang dimasukkan tidak ditemukan.

- apabila user yang mendapat email konfirmasi tersebut membuka link reset password,

maka program akan mereset password dari akun email tersebut, kemudian

mengirimkan lagi email notifikasi berisi password baru yang sudah digenerate.

Codeigniter User Authentication menggunakan Library Ion Auth Page 16 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

Pertama-tama buat tampilan form untuk lupa password. Tambahkan fungsi

lupa_password() di dalam controller Auth.

function lupa_password()

{

$data['title'] = "Halaman Lupa Password";

//set validasi untuk email $this->form_validation->set_rules('email', 'Alamat Email',

'required|valid_email');

//apabila validasi salah atau form dibuka pertama kali if ($this->form_validation->run() == false)

{

$main['email'] = array('name' => 'email',

'id' => 'email',

'type' => 'text'

);

$main['message'] = (validation_errors())

? validation_errors()

: $this->session->flashdata('message');

$data['content'] = $this->load->view('lupa_password_v', $main, true);

$this->load->view('template', $data);

}

else //apabila validasi benar {

//jalankan fungsi forgotten_password() untuk mengirimkan email link reset password $forgotten = $this->ion_auth

->forgotten_password($this->input-post('email'));

//apabila tidak ada error if ($forgotten)

{

//set message dari library ke flashdata $this->session->set_flashdata('message',

$this->ion_auth->messages());

redirect('auth/login', 'refresh');

}

else //apabila ada error pada saat menjalankan forgotten_password() {

//set pesan error dari library ke flashdata $this->session->set_flashdata('message',

$this->ion_auth->errors());

redirect('auth/lupa_password', 'refresh');

}

}

}

Codeigniter User Authentication menggunakan Library Ion Auth Page 17 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

Sekarang buat file view lupa_password_v.php untuk menampilkan form lupa password.

<p>

Silakan masukkan alamat email Anda dan kami akan mengirimkan link untuk mereset

password Anda.

</p>

<div id="infoMessage"><?php echo $message;?></div>

<?php echo form_open("auth/lupa_password");?>

<p>Alamat Email:<br />

<?php echo form_input($email);?>

</p>

<p><?php echo form_submit('submit', 'Submit');?></p>

<?php echo form_close();?>

Karena fungsi lupa_password() ini akan mengiriman email berisi link untuk permintaan

mereset password dan email untuk mengirimkan email berisi password baru yang sudah

direset, maka seperti halnya email aktivasi, kita juga perlu membuat template email

untuk kedua keperluan tersebut. Konfigurasinya juga ada di file config/ion_auth.php.

$config['email_forgot_password'] = 'forgot_password.tpl.php';

$config['email_forgot_password_complete'] = 'new_password.tpl.php';

Maka sekarang kita akan membuat file forgot_password.tpl.php di dalam folder

views/email/.

<html>

<body>

<h1>Reset Password untuk <?php echo $identity;?></h1>

<p>Silakan klik link berikut untuk <?php echo anchor('auth/reset_password/'.

$forgotten_password_code, 'mereset password Anda');?>.</p>

</body>

</html>

Buat juga file new_password.tpl.php di dalam folder views/email/.

<html>

<body>

<h1>Password baru untuk <?php echo $identity;?></h1>

<p>Password Anda sudah direset menjadi: <?php echo $new_password;?></p>

</body>

</html>

Codeigniter User Authentication menggunakan Library Ion Auth Page 18 of 18

Modul Pelatihan Codeigniter – CLSC Development Team – Toni Haryanto

Terakhir, buat fungsi reset_password() untuk menangkap permintaan reset password

dari link email user.

function reset_password($code)

{

//mengirimkan kode $code, mencocokkannya dengan database dan mereset password $reset = $this->ion_auth->forgotten_password_complete($code);

//apabila reset password sukses if ($reset)

{

//redirect ke halaman index $this->session->set_flashdata('message', $this->ion_auth->messages());

redirect('auth/index');

}

else //apabila reset password gagal {

//redirect ke halaman lupa_password() $this->session->set_flashdata('message', $this->ion_auth->errors());

redirect('auth/lupa_password');

}

}

# Penutup

Demikian modul Pelatihan pembuatan User Authentication pada Codeignter dengan

Library Ion Auth. Anda dapat mengeksplorasi lebih jauh library ion auth dengan

membuka user guide yang tersedia.

Terima kasih dan selamat berlatih. ;D