Skip to content

franzxml/pwl-rbac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PWL RBAC — Role-Based Access Control dengan Bun.js

Deskripsi

Proyek ini merupakan tugas mata kuliah Pemrograman Web Lanjut yang mengimplementasikan sistem Role-Based Access Control (RBAC) menggunakan Bun.js dan TypeScript. Sistem membatasi akses fitur berdasarkan role yang dimiliki user, sehingga setiap role hanya dapat mengakses resource sesuai permission yang ditetapkan.

Tiga role yang tersedia:

  • Admin — akses penuh ke semua resource (users, roles, permissions)
  • Editor — hanya dapat melihat dan membuat user, serta melihat role
  • Viewer — hanya dapat melihat daftar user

Konsep inti RBAC:

User → memiliki satu Role → Role memiliki banyak Permission → Permission mengatur akses ke resource

Teknologi

  • Bun.js (Runtime & Package Manager)
  • TypeScript
  • Express.js (Web Framework)
  • EJS (Template Engine)
  • TailwindCSS (Styling)
  • MySQL2 (Database)
  • express-session + bcryptjs (Autentikasi)

Struktur Folder

pwl-rbac/
├── .env
├── .env.example
├── .gitignore
├── package.json
├── tsconfig.json
├── tailwind.config.js
├── database.sql
└── src/
    ├── index.ts
    ├── seed.ts
    ├── config/
    │   └── database.ts
    ├── controllers/
    │   ├── authController.ts
    │   ├── userController.ts
    │   ├── roleController.ts
    │   └── permissionController.ts
    ├── middleware/
    │   ├── authMiddleware.ts
    │   └── rbacMiddleware.ts
    ├── models/
    │   ├── userModel.ts
    │   ├── roleModel.ts
    │   └── permissionModel.ts
    ├── routers/
    │   ├── authRoutes.ts
    │   ├── userRoutes.ts
    │   ├── roleRoutes.ts
    │   └── permissionRoutes.ts
    ├── types/
    │   └── express.d.ts
    └── views/
        ├── auth/login.ejs
        ├── error.ejs
        ├── layouts/
        │   ├── main.ejs
        │   ├── header.ejs
        │   ├── sidebar.ejs
        │   └── footer.ejs
        ├── users/
        ├── roles/
        └── permissions/

Cara Menjalankan

  1. Persiapan: Pastikan sudah terinstal Bun.js dan MySQL.

  2. Clone repositori:

    git clone https://github.com/franzxml/pwl-rbac.git
    cd pwl-rbac
  3. Salin file environment dan sesuaikan:

    cp .env.example .env

    Edit .env dan isi password MySQL serta session secret.

  4. Install dependensi:

    bun install
  5. Setup database:

    mysql -u root -p < database.sql
  6. Seed data awal:

    bun run seed
  7. Jalankan server:

    bun run dev

    Buka browser di http://localhost:3000

Akun Demo

Username Password Role Akses
admin admin123 Admin Semua resource
editor editor123 Editor View & Create user, View role
viewer viewer123 Viewer View user saja

Database

File database.sql berisi schema lengkap. Tabel yang digunakan:

Tabel Keterangan
roles Daftar role (admin, editor, viewer)
permissions Daftar permission (user:view, user:create, dll)
users Data user dengan referensi ke role
role_permissions Relasi many-to-many antara role dan permission

Alur RBAC

  1. User login → session disimpan dengan user.id dan user.role_id
  2. Setiap route dilindungi middleware checkPermission('resource:action')
  3. Middleware query ke database untuk mengambil semua permission milik role user
  4. Jika permission ditemukan → request dilanjutkan
  5. Jika tidak → 403 Forbidden

Dikembangkan oleh: @franzxml

About

Repositori tugas Pemrograman Web Lanjut tentang RBAC.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors