Tentu! Berikut adalah dokumentasi fitur autentikasi secara lengkap dalam format DokuWiki, termasuk struktur dan detail setiap bagian: ```markdown ## Fitur Autentikasi ### 1. Pengantar Fitur autentikasi aplikasi billing ini dirancang untuk mengelola akses pengguna dengan berbagai peran (admin, customer, operator, teknisi). Fitur ini mencakup proses login, logout, dan kontrol akses berdasarkan peran. ### 2. Konfigurasi Awal #### 2.1. Konfigurasi Database Pastikan tabel `users` telah dibuat di database dengan struktur berikut: ```sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL, password VARCHAR(255) NOT NULL, email VARCHAR(100) NOT NULL, role ENUM('admin', 'customer', 'operator', 'teknisi') NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` #### 2.2. Instalasi CodeIgniter 3 1. Unduh dan instal CodeIgniter 3 dari [[https://codeigniter.com/|situs resmi CodeIgniter]]. 2. Konfigurasi database di file `application/config/database.php`. ### 3. Model #### 3.1. Model `User_model` Lokasi: `application/models/User_model.php` ```php load->database(); } public function get_user_by_username($username) { $query = $this->db->get_where('users', array('username' => $username)); return $query->row_array(); } public function create_user($data) { return $this->db->insert('users', $data); } } ``` #### 3.2. Model `Auth_model` Lokasi: `application/models/Auth_model.php` ```php load->database(); } public function check_login($username, $password) { $this->db->where('username', $username); $this->db->where('password', md5($password)); // Ganti dengan hashing yang lebih aman di produksi $query = $this->db->get('users'); return $query->row_array(); } } ``` ### 4. Controller #### 4.1. Controller `Auth` Lokasi: `application/controllers/Auth.php` ```php load->model('Auth_model'); $this->load->library('session'); } public function login() { $this->load->view('login'); } public function login_process() { $username = $this->input->post('username'); $password = $this->input->post('password'); $user = $this->Auth_model->check_login($username, $password); if ($user) { $this->session->set_userdata('user_id', $user['id']); $this->session->set_userdata('role', $user['role']); redirect('dashboard'); } else { $this->session->set_flashdata('error', 'Invalid Username or Password'); redirect('auth/login'); } } public function logout() { $this->session->sess_destroy(); redirect('auth/login'); } } ``` ### 5. View #### 5.1. View `login.php` Lokasi: `application/views/login.php` ```html Login

Login

session->flashdata('error')): ?>

session->flashdata('error'); ?>



``` ### 6. Middleware (Opsional) #### 6.1. Custom Controller Base Lokasi: `application/core/MY_Controller.php` ```php check_login(); } private function check_login() { if (!$this->session->userdata('user_id')) { redirect('auth/login'); } } } ``` - Extend controller Anda dari `MY_Controller` untuk menerapkan proteksi login. ### 7. Pengujian #### 7.1. Uji Fitur Login - Cobalah login dengan berbagai kombinasi username dan password. - Pastikan pengguna diarahkan ke halaman yang tepat berdasarkan role mereka setelah login. #### 7.2. Uji Fitur Logout - Pastikan sesi dihapus dan pengguna diarahkan ke halaman login setelah logout. #### 7.3. Uji Kontrol Akses - Verifikasi bahwa akses ke halaman dan fitur dibatasi berdasarkan role pengguna. ### 8. Keamanan #### 8.1. Hashing Password - Gantilah penggunaan `md5` dengan hashing yang lebih aman, seperti `bcrypt` atau `argon2`. #### 8.2. Validasi Input - Pastikan semua input pengguna divalidasi dan disanitasi untuk menghindari serangan. ``` **Cara menambahkan dokumentasi ini ke DokuWiki:** 1. **Masuk ke DokuWiki:** - Akses DokuWiki Anda melalui URL `http://wiki.eri.web.id`. - Login jika diperlukan. 2. **Buat atau Edit Halaman:** - Jika halaman baru, klik "Buat halaman ini" (atau "Create this page") dari halaman utama. - Jika halaman sudah ada, cari dan buka halaman tersebut untuk diedit. 3. **Salin dan Tempel Konten:** - Salin teks di atas dan tempelkan ke dalam editor DokuWiki. 4. **Simpan Halaman:** - Klik tombol "Simpan" untuk menyimpan perubahan. Dengan format ini, Anda akan memiliki dokumentasi yang jelas dan terstruktur di DokuWiki mengenai fitur autentikasi untuk aplikasi billing Anda.