ion auth codeigniter

Upload: windy-hendra-setyawan

Post on 20-Jul-2015

1.073 views

Category:

Documents


11 download

TRANSCRIPT

CLSC Development Team

Codeigniter User AuthenticationMenggunakan Library Ion Auth

Toni Haryanto 9/10/2011

Codeigniter User Authentication menggunakan Library Ion AuthPada 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 AuthHal 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: [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'] $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 Authconfig/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. 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; }

Buat file view register_v.php di dalam folder views/ lalu isikan baris kode berikut.Silakan isikan data Anda di form ini.

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth Username:
Alamat Email:
Nama Depan:
Nama Belakang:
Nama Perusahaan:
Nomor Telepon:
Password:
Ulangi Password:

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 Authkonfigurasi 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. Aktivasi akun untuk Silakan klik link berikut untuk .

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.Silakan login dengan email dan password Anda. Email:

Modul Pelatihan Codeigniter CLSC Development Team Toni Haryanto

Codeigniter User Authentication menggunakan Library Ion Auth Password: Remember Me:

Page 13 of 18