Skip to content

DeanAdriansyah/Lab9Web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PEMOGRAMAAN WEB

Nama : Dean Adriansyah Asy'ari

NIM : 312110286

Kelas : TI.21.A2

Teknik Informatika - UNIVERSITAS PELITA BANGSA


gambar

Praktikum 7: PHP Framework (Codeigniter) (ke-3)

Tujuan

  • Mampu memahami konsep dasar Auth dan Filter.
  • Mampu memahami konsep dasar Login System.
  • Mampu membuat program sederhana menggunakan Framework Codeigniter4.

Instruksi Praktikum

  • Persiapkan text editor misalnya VSCode.
  • Buat folder baru dengan nama lab9_php_ci pada docroot webserver (htdocs)
  • Ikuti langkah-langkah praktikum yang akan dijelaskan berikutnya.

Langkah-langkah Praktikum

Membuat Tabel

Studi Kasus User Login

Tabel User Login

Membuat Tabel User

CREATE TABLE user (
id INT(11) auto_increment,
username VARCHAR(200) NOT NULL,
useremail VARCHAR(200),
userpassword VARCHAR(200),
PRIMARY KEY(id)
);

Membuat Model User

Selanjutnya adalah membuat Model untuk memproses data Login. Buat file baru pada direktori app/Models dengan nama UserModel.php

<?php

namespace App\Models;

use CodeIgniter\Model;

class UserModel extends Model
{
  protected $table = 'user';
  protected $primaryKey = 'id';
  protected $useAutoIncrement = true;
  protected $allowedFields = ['username', 'useremail', 'userpassword'];
}

Membuat Controller User

Buat Controller baru dengan nama User.php pada direktori app/Controllers. Kemudian tambahkan method index() untuk menampilkan daftar user, dan method login() untuk proses Login.

<?php

namespace App\Controllers;

use App\Models\UserModel;

class User extends BaseController
{
  public function index()
  {
    $title = 'Daftar User';
    $model = new UserModel();
    $users = $model->findAll();
    return view('user/index', compact('users', 'title'));
  }
  public function login()
  {
    helper(['form']);
    $email = $this->request->getPost('email');
    $password = $this->request->getPost('password');
    if (!$email) {
      return view('user/login');
    }
    $session = session();
    $model = new UserModel();
    $login = $model->where('useremail', $email)->first();
    if ($login) {
      $pass = $login['userpassword'];
      if (password_verify($password, $pass)) {
        $login_data = [
          'user_id' => $login['id'],
          'user_name' => $login['username'],
          'user_email' => $login['useremail'],
          'logged_in' => TRUE,
        ];
        $session->set($login_data);
        return redirect('admin/artikel');
      } else {
        $session->setFlashdata("flash_msg", "Password salah.");
        return redirect()->to('/user/login');
      }
    } else {
      $session->setFlashdata("flash_msg", "email tidak terdaftar.");
      return redirect()->to('/user/login');
    }
  }
}

Membuat View Login

Buat direktori baru dengan nama user pada direktori app/views, kemudian buat file baru dengan nama login.php.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Login</title>
  <link rel="stylesheet" href="<?= base_url('/style.css'); ?>">
</head>
<body>
  <div id="login-wrapper">
    <h1 class="h1-login">Sign In</h1>
    <?php if (session()->getFlashdata('flash_msg')) : ?>
      <div class="alert alert-danger"><?= session()->getFlashdata('flash_msg') ?></div>
    <?php endif; ?>
    <form action="" method="post">
      <div class="mb-3">
        <label for="InputForEmail" class="form-label">Email address</label>
        <input type="email" name="email" class="form-control" id="InputForEmail" value="<?= set_value('email') ?>">
      </div>
      <div class="mb-3">
        <label for="InputForPassword" class="form-label">Password</label>
        <input type="password" name="password" class="form-control" id="InputForPassword">
      </div>
      <button type="submit" class="btn btn-primary">Login</button>
    </form>
  </div>
</body>
</html>

Membuat Database Seeder

  • Database seeder digunakan untuk membuat data dummy. Untuk keperluan uji coba modul login, kita perlu memasukkan data user dan password kedalam database. Untuk itu buat database seeder untuk tabel user. Buka CLI, kemudian tulis perintah berikut:
php spark make:seeder UserSeeder
  • Selanjutnya, buka file UserSeeder.php yang berada di lokasi direktori /app/Database/Seeds/UserSeeder.php kemudian isi dengan kode berikut:
<?php

namespace App\Database\Seeds;

use CodeIgniter\Database\Seeder;

class UserSeeder extends Seeder
{
    public function run()
    {
        $model = model('UserModel');
        $model->insert([
            'username' => 'admin',
            'useremail' => 'admin@email.com',
            'userpassword' => password_hash('admin123', PASSWORD_DEFAULT),
        ]);
    }
}
  • Kemudian, buka kembali CLI dan ketik perintah berikut:
php spark db:seed UserSeeder

Login Form

Menambahkan Auth Filter

  • Selanjutnya membuat filter untuk halaman Admin. Buat file baru dengan nama Auth.php pada direktori app/Filters, Kemudian masukan kode berikut:
<?php

namespace App\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;

class Auth implements FilterInterface
{
  public function before(RequestInterface $request, $arguments = null)
  {
    // jika user belum login
    if (!session()->get('logged_in')) {
      // maka redirct ke halaman login
      return redirect()->to('/user/login');
    }
  }
  public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
  {
  }
}
  • Kemudian buka file app/Config/Filters.php tambahkan kode berikut:
'auth' => App\Filters\Auth::class

Config Filters

  • Lalu buka file app/Config/Routes.php dan sesuaikan kodenya.

Config Routes

Login Admin

Fungsi Logout

Tambahkan method logout() pada Controller User seperti berikut:

  public function logout()
  {
    session()->destroy();
    return redirect()->to('user/login');
  }

Pertanyaan dan Tugas

Selesaikan programnya sesuai Langkah-langkah yang ada. Anda boleh melakukan improvisasi.

Laporan Praktikum

  1. Melanjutkan praktikum sebelumnya pada repository dengan nama Lab9Web.
  2. Kerjakan semua latihan yang diberikan sesuai urutannya.
  3. Screenshot setiap perubahannya.
  4. Update file README.md dan tuliskan penjelasan dari setiap langkah praktikum beserta screenshotnya.
  5. Commit hasilnya pada repository masing-masing.
  6. Kirim URL repository pada e-learning ecampus.

Hasil

Login Admin


THANK YOU SO MUCH FOR YOUR ATTENTION!! SEE YOU SOON!!

About

Praktikum 9: Framework Lanjutan (Modul Login)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages