Sistem authentifikasi atau sistem login merupakan salah satu bagian dari aplikasi yang sering kita kerjakan, sistem ini juga menjadi bagian yang vital pada aplikasi. Bagian ini lah yang menjamin keamanan data dari aplikasi yag sedang di kerjakan.
Pada kasus ini library yang paling penting untuk kita ketahui adalah library session. Perlu diingat juga bahwa library session codeigniter juga dapat di simpan di sebuah cookie.Cookie tersebut dapat kita enskripsi.Selain itu, kita juga dapat menyimpan session tersebut di dalam database. Yang artinya user cookie harus cocok dengan cookie yang ada di database.
Secara default hanya cookie yang di gunakan dan walaupun anda tidak menggunakan enskripsi cookie anda harus tetap menkofigurasi enkripsion key.Â
Untuk menggunakan library session sama seperti kita menggunakan library lain seperti biasanya. Kita bisa mengkonfigurasi file di autoload.php atau memanggil secara manual. Seperti berikut:
$this->load->library('session');
Ketika library sudah di load, maka kelas session akan mengecek apakah data session yang diinginkan berada di cookie. Jika data tidak ada di cookie maka akan di buatkan sebuah session baru dan akan di simpan di dalam cookie. Jika data cookie ditemukan maka data tersebut akan di update terutama untuk last_activity dan session_id.
Untuk penggunaan library session sendiri sangat mudah. Untuk mengambil data session dapat di lakukan dengan:
$this->session->userdata('item');
Sedangkan untuk menyimpan data session dapat di lakukan dengan cara:Â
$newdata = array(
'usernama' => 'rafi',
'email' => 'rafijohari1812@gmail.com',
'logged_in'=> TRUE
);
$this->session->set_userdata($newdata);Â
Untuk membuat sebuah sistem authentifikasi maka hal-hal yang perlu di lakukan adalah:
Â
-
Membuat Desain AplikasiÂ
Desain aplikasi sangat berpengaruh pada kode yang akan kita buat. Karena sistem authentifikasi ini adalah salah satu bagian yang kritikal maka saya akan mencoba untuk membuat nya aman bukan hanya dari segi kode,tetapi juga dari segi design. Perhatikan struktur website di bawah ini :
Â
Pada gambar di atas ada 2 tipe page yaitu page yang bisa di akses oleh semua orang dan page yang hanya boleh di akses oleh member. Hal tersebut sangat sederhana jika kita hanya menghandle dua page. Tetapi, jika pagenya ada banyak maka kita akan mengecek satu per satu informasi user.Hal tersebut kurang aman karena kode kita terduplikasi ke seluruh aplikasi. Nah sekarang kita akan coba untuk meng-extend controller membuat kasus ini agar menjadi lebih ringkas. Untuk controller maupun user yang login harus menggunakan member_controllerÂ
                             Â
                                           Â
Jika kita perhatikan class diagram di atas maka semua member_controller sudah memiliki fungsi untuk pengecekan login secara otomatis.
Â
-
Membuat Tabel UserÂ
Untuk membuat authentifikasi kita akan membuat tiga tabel. Tabel Pertama yaitu tabel user yang berisi data informasi login user, tabel user_group berisi data pengelompokkan user menjadi group dan tabel tracker berfungsi untuk menyimpan data informasi darimana user tersebut menggunakan sistem login dan telah berapa kali gagal menggunakannya. Sebelum membuat tabel user kita akan membuat database baru dengan nama belajarCi seperti di bawah ini :
Â
Klik tombol create agar database BelajarCi ada di sidebar menu atau di samping kiri menu yang artinya kira telah berhasil membuatnya.Setelah kita berhasil membuat database baru langsung saja kita membuat tabel users seperti di bawah ini :
Â
Setelah menu tersebut langsung saja kita klik go agar masuk ke menu selanjutnya:
Nah coba kalian membuat database nya seperti itu saja jika sudah seperti itu lalu klik save maka tabel users akan ada di dalam database belajarci.
Â
-
 Membuat Library AccessÂ
Setelah tabel terbentuk barulah kita membuat library untuk mengakses dan mengverifikasi data user. Library tersebut akan kita sebut Access. Adapun kode programnya adalah sebagai berikutÂ
application/libraries/access.phpÂ
Library access di atas membutuhkan library session dan database, jadi sebelum menggunakan library tesebut pastikan Anda telah menyeting konfigurasi CodeIgniter dengan benar. Jika anda belum tau cara setting konfigurasi di codeigniter silahkan baca artikel saya sebelumnya tentang cara konfigurasi codeigniter.Â
Perhatikan fungsi login, fungsi itu bertugas untuk melakukan pengecekan terhadap data username dan password yang telah diberikan oleh user. Fungsi login akan mengambil semua informasi tentang user berdasarkan username (baris 21). Setelah data didapatkan maka dilakukan pencocokan username dan password (baris 24). Jika passwordnya benar maka session user tersebut akan disimpan sebagai penanda bahwa user telah login.Â
Â
-
 Membuat Library AccessÂ
Untuk mendapatkan data user tersebut maka kita membutuhkan sebuah model. Model iniÂ
sangat sedehana hanya terdiri satu fungsi yaitu get_login_info.Fungsi tersebut akanÂ
mengembalikan object data user apabila username yang dimasukkan ada di database danÂ
memberikan hasil FALSE jika data user tidak ditemukanÂ
Â
application/models/users_model.phpÂ
-
 Membuat Controller MemberÂ
Pertama-tama kita akan membuat controller untuk login. Controller tesebut kita beri namaÂ
member. Controller member ini mempunyai dua fungsi utama yaitu login dan logoutÂ
Â
application/controller/member.php
<!--?phpÃÃÂÂ
à{ÃÂÂ
àfunction __construct()ÃÂÂ
à{ÃÂÂ
àparent::__construct();ÃÂÂ
à$this->load->library('access');ÃÂÂ
à}ÃÂÂ
àfunction index()ÃÂÂ
à{ÃÂÂ
à$this->access->logout();ÃÂÂ
à$this->login();ÃÂÂ
ÃÂÂ
à}ÃÂÂ
àfunction login()ÃÂÂ
à{
$this->load->library('form_validation');ÃÂÂ
$this->load->helper('form');ÃÂÂ
à$this->form_validation->set_rules('username', 'Username',ÃÂÂ
'trim|required|strip_tags');ÃÂÂ
à$this->form_validation->set_rules('password', 'Password',ÃÂÂ
'trim|required');ÃÂÂ
à$this->form_validation->set_rules('token', 'token',ÃÂÂ
'callback_check_login');ÃÂÂ
à//$this->output->enable_profiler(1);ÃÂÂ
àif ($this->form_validation->run() == FALSE)
à{ÃÂÂ
à$this->template->display('member/login');ÃÂÂ
à}ÃÂÂ
àelseÃÂÂ
à{ÃÂÂ
àredirect('dashboard');ÃÂÂ
à}ÃÂÂ
à}ÃÂÂ
àfunction logout()ÃÂÂ
à{ÃÂÂ
à$this->access->logout();ÃÂÂ
àredirect('member/login');ÃÂÂ
à}ÃÂÂ
àfunction check_login()ÃÂÂ
à{ÃÂÂ
à$username = $this->input->post('username',TRUE);ÃÂÂ
à$password = $this->input->post('password',TRUE);ÃÂÂ
à$login = $this->access->login($username, $password);ÃÂÂ
àif($login)ÃÂÂ
à{ÃÂÂ
àreturn TRUE;ÃÂÂ
à}ÃÂÂ
àelseÃÂÂ
à{ÃÂÂ
à$this->form_validation->set_message('check_login',ÃÂÂ
'Username atau password anda salah.');ÃÂÂ
àreturn FALSE;ÃÂÂ
à}ÃÂÂ
à}ÃÂÂ
ÃÂÂ
à}ÃÂÂ
Pada controller member kita akan melakukan pengecekan terhadap inputan yang telah diÃÂÂ
masukkan user. Oleh karena itu kita tetap menggunakan library validation. Serta Kita akanÃÂÂ
menggunakan custom validation. Fungsi check_login di atas akan
menjadi custom validator pada controller ini. Pada fungsi itu juga library access dipanggil untukÃÂÂ
melakukan pengecekan login.ÃÂÂ
ÃÂÂ
-
àMembuat view controller memberÃÂÂ
Setelah memiliki model dan controller maka kita tinggal membuat viewÃÂÂ
Adapun tampilan dari view diatas adalahÃÂÂ
àààààÃÂÂ
Mungkin tampilan di atas sangat tidak enak untung di pandang wkwk silahkan kalian rubah variasi tampilan di atas sesuai keinginan anda saja.
-
Membuat Mengextend library ControllerÃÂÂ
Controller member hanya digunakan memverifikasi user yang login. Kita akan membuatÃÂÂ
sebuah controller yang hanya bisa diakses oleh user yang sudah login. Controller tersebutÃÂÂ
akan diberi nama Member_controller. Untuk membuat member controller maka kita harusÃÂÂ
membuat sebuah file di MY_Controller.php di folder application/coreÃÂÂ
Class Member_controller merupakan turunan dari kelas CI_Controller dengan penambahanÃÂÂ
fungsi pengecekan apakah user sudah login. Perhatikan baris ke 8, kita memanggil fungsi is_loginÃÂÂ
yang digunakan untuk mengecek apakah user sudah login. Apabila user belum login makaÃÂÂ
akan di redirect ke form login.ÃÂÂ
Untuk meng-extend kelas bawaan Codeigniter kita harus membuat sebuah kelasÃÂÂ
MY_controller. Kita dapat meruba prefix MY_ menjadi yang lain dari konfigurasi codeigniter.ÃÂÂ