You are on page 1of 18

CLSC Development Team

Codeigniter User Authentication


Menggunakan Library Ion Auth

Toni Haryanto 9/10/2011

Codeigniter User Authentication menggunakan Library Ion Auth


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

Page 2 of 18

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 Input class Library untuk mengatur validasi data pada form dalam proses input data Library untuk memastikan keamanan data yang diinputkan sebelum disetorkan ke database. Library ini sudah otomatis diload. Form Helper URL helper Helper berisi kumpulan fungsi untuk membantu pembuatan form Helper berisi kumpulan fungsi untuk membantu pekerjaan dengan URL

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth

Page 3 of 18

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.

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


Hal penting yang mesti diketahui mengenai database: -

Page 4 of 18

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: admin@admin.com 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'] $config['tables']['users'] $config['tables']['meta'] masing-masing. = 'groups'; = 'users'; = 'meta';

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

#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

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


config/database.php sesuai dengan pengaturan database Anda.

Page 5 of 18

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');

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


$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');

Page 6 of 18

//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,

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth

Page 7 of 18

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',

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth

Page 8 of 18

'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>

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


<?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();?>

Page 9 of 18

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'] $config['email_activate'] = 'email/'; = 'activate.tpl.php';

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


konfigurasi ini maksudnya, kita menggunakan file template email bernama

Page 10 of 18

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.

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


#2 Login System Alur data untuk sistem login yang akan kita buat sebagai berikut: user memasukkan kombinasi email dan password melalui form login

Page 11 of 18

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');

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


//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', );

Page 12 of 18

$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>

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


<?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();?>

Page 13 of 18

<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); } }

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


Buat view beranda_v.php untuk menampilkan indexnya.

Page 14 of 18

<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(); } }

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth

Page 15 of 18

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.

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth


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');

Page 16 of 18

$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'); } } }

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth

Page 17 of 18

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>

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth

Page 18 of 18

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

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

You might also like