/myibmt

Aplikasi Jadwal Kuliah

Primary LanguageHTML

MyIBMt

Aplikasi Jadwal Kuliah

clone https://github.com/rundhik/myibmt

composer install

set .env sesuai petunjuk

Membangun Model

User Role Permission

Routing dan Controller

Membuat Controller untuk Admin

Membangun controller pada folder 'Admin' untuk memudahkan prefix / namespace sekaligus membedakan controller milik 'guest' dengan 'admin' atau 'staff akademik'

php artisan make:controller Admin\KurikulumController --resource
php artisan make:controller Admin\MataKuliahController --resource
php artisan make:controller Admin\DosenController --resource
php artisan make:controller Admin\RuangPerkuliahanController --resource
php artisan make:controller Admin\JadwalController --resource
php artisan make:controller Admin\UserController --resource

Mengatur route web di routes/web.php

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function () {
    Route::resource('kurikulum', 'KurikulumController');
    Route::resource('matakuliah', 'MataKuliahController');
    Route::resource('dosen', 'DosenController');
    Route::resource('ruangan', 'RuangPerkuliahanController');
    Route::resource('jadwal', 'JadwalController');
    Route::resource('user', 'UserController');
});

Cek di terminal dengan ketik php artisan route:list

'prefix' => 'admin' : parameter untuk membuat prefix 'admin' di URL, misal : http://localhost:8000/admin/kurikulum, http://localhost:8000/admin/dosen dsb. 'namespace' => 'Admin' : merubah default namespace controller Laravel. Default namespace Laravel ada pada folder App\Http\Controller. Sedangkan kita merubah namespace ke folder 'Admin', sehingga lokasi namespace kita adalah MyIBMT\Http\Controller\Admin

Edit DosenController dan UserController untuk fungsi index, edit, show.

DosenController

    public function index()
    {
        return 'Halaman Utama Dosen';
    }

    //

    public function create()
    {
        return 'Halaman Create Dosen';
    }

    //

    public function show($id)
    {
        return 'Halaman untuk show / delete Dosen';
    }

    //

    public function edit($id)
    {
        return 'Halaman untuk edit user';
    }

UserController

    public function index()
    {
        return 'Halaman Utama User';
    }

    //

    public function create()
    {
        return 'Halaman Create User';
    }

    //

    public function show($id)
    {
        return 'Halaman untuk show / delete User';
    }

    //

    public function edit($id)
    {
        return 'Halaman untuk edit User';
    }

Untuk mencoba, akses http://localhost/admin/dosen/ untuk melihat halaman dosen (index). Untuk halaman show dosen buka http://localhost/admin/dosen/1 dan untuk edit dosen http://localhost/admin/dosen/1/edit . Coba juga untuk halaman user

Menerapakan User Role Permission

Membuat file 403 Forbidden (Permission Denied) : buat folder di resources/views/errors selanjutnya buat file 403.blade.php. Edit file 403.blade.php, isi semisal : Akses ditolak!

Edit file UserMigrationTables di database/migrations. Tambahkan baris

$this->softDeletes();
Kemudian lakukan migrations ulang dengan perintah php artisan migrate:fresh --seed (untuk melakukan migration ulang dan sekaligus melakukan seeding dari database seeding yang sudah ada)

Edit DosenController, tambahkan baris berikut di atas function index():

    public function __construct()
    {
        $this->middleware('permission:create', ['only' => ['create', 'store']]);    
        $this->middleware('permission:edit', ['only' => ['edit', 'update']]);   
        $this->middleware('permission:delete', ['only' => ['show', 'delete']]);
    }

UserController.

    public function __construct()
    {
        $this->middleware('permission:users');
    }

Coba akses URL lagi untuk memastikan user role sudah bekerja. Selanjutnya..

Membuat user dengan role dan permission yang berbeda

Membuat user dengan role superadmin ( role id = 1 ) menggunakan php artisan tinker

php artisan tinker

$user = new User $user->name = 'Ngademin' $user->email = 'ngademin@localhost.com' $user->password = bcrypt('admin123') $user->save() $user->attachRole(1)

Membuat user dengan role fakultas ( role id = 2 ) menggunakan php artisan tinker

php artisan tinker

$user = new User
$user->name = 'Petugas Fakultas'
$user->email = 'fakultas@localhost.com'
$user->password = bcrypt('fakultas123')
$user->save()
$user->attachRole(2)

Selanjutnya menghubungkan tiap role dengan permission. Lihat database untuk detailnya. superadmin, id = 1, attachPermission id = 1, 2, 3, 4 fakultas, id = 2, attachPermission id = 1, 2

php artisan tinker

$role = new Role
$role = $role->find(1)
$role->attachPermission(1)
$role->attachPermission(2)
$role->attachPermission(3)
$role->attachPermission(4)


$role = $role->find(2)
$role->attachPermission(1)
$role->attachPermission(2)

Silahkan login ke aplikasi : http://localhost:8000/login sebagai superadmin. Setelah berhasil masuk, ketikan di URL secara manual ke routing web user dan dosen, http://localhost:8000/admin/user/create dan http://localhost:8000/admin/dosen/create untuk memastikan bahwa user tersebut memiliki hak akses penuh. Keluar aplikasi dengan ketik di URL http://localhost:8000/home, kemudian cari menu logout.

Selanjutnya login sebagai fakultas, dan akses dua alamat tadi. Seharusnya ketika user dengan role fakultas mengakses route web user, akses akan ditolak.

Membangun View dan Controller


Membuat File Views

Buat file dalam folder resources/views antara lain :
Folder admin/role :
views/admin/role/create.blade.php
views/admin/role/edit.blade.php
views/admin/role/index.blade.php
views/admin/role/show.blade.php
Folder admin/user :
views/admin/user/create.blade.php
views/admin/user/edit.blade.php
views/admin/user/index.blade.php
views/admin/user/show.blade.php
Folder dosen :
views/dosen/create.blade.php
views/dosen/edit.blade.php
views/dosen/index.blade.php
views/dosen/show.blade.php
Folder guest :
views/guest/create.blade.php
views/guest/edit.blade.php
views/guest/index.blade.php
views/guest/show.blade.php
Folder jadwal :
views/jadwal/create.blade.php
views/jadwal/edit.blade.php
views/jadwal/index.blade.php
views/jadwal/show.blade.php
Folder kurikulum :
views/kurikulum/create.blade.php
views/kurikulum/edit.blade.php
views/kurikulum/index.blade.php
views/kurikulum/show.blade.php
Folder matakuliah :
views/matakuliah/create.blade.php
views/matakuliah/edit.blade.php
views/matakuliah/index.blade.php
views/matakuliah/show.blade.php
Folder ruangperkuliahan :
views/ruangperkuliahan/create.blade.php
views/ruangperkuliahan/edit.blade.php
views/ruangperkuliahan/index.blade.php
views/ruangperkuliahan/show.blade.php

Update routing pada file routes/web.php. Tambahkan baris berikut pada Route Group admin.
Route::resource('user', 'UserController');

Buat file resources/views/layouts/template.blade.php. Isikan dengan kode seperti berikut.

Untuk memudahkan membangun views pada masing-masing controller, buat file secara public dulu untuk memastikan resource css / js sudah bekerja dengan baik sesuai template yang digunakan. Buat file resources/views/dashboard.blade.php. Isikan dengan kode seperti berikut.

Ubah fungsi index pada app/Http/Controller/HomeController menjadi :

public function index()
    {
        return view('dashboard');
    }
Dimana view('dashboard'); adalah fungsi mengarahkan ke file dashboard.blade.php yang baru saja dibuat.

Selanjutnya akan menata di masing-masing file views setiap controller.
Tambahkan baris return view('nama_folder.nama_file'); pada masing-masing controller. Saya contohkan untuk Controller MataKuliah

public function index()
    {
        return view('matakuliah.index');
    }
//
public function create()
    {
        return view('matakuliah.create');
    }
//
public function show($id)
    {
        return view('matakuliah.show');
    }
//
public function edit($id)
    {
        return view('matakuliah.edit');
    }
Begitu juga untuk Controller lainnya.

Oke, selamat mencoba