From b815d0396f73aab1a66aa463f182a27ae0a75839 Mon Sep 17 00:00:00 2001
From: efbe <f@unej.ac.id>
Date: Sat, 2 Mar 2024 18:06:48 +0700
Subject: [PATCH] add spatie laravel roles

---
 .gitea/workflows/main.yaml                    |  42 +-
 app/Http/Controllers/AdminController.php      |   2 +
 .../LayananPengajuanDpuDpaController.php      |  80 ++-
 app/Http/Controllers/MahasiswaController.php  |  94 +++-
 app/Http/Controllers/SesiLoginController.php  |  41 ++
 app/Http/Controllers/UserController.php       |  37 +-
 app/Models/Mahasiswa.php                      |  17 +
 .../{UserRole.php => PengajuanDpuDpa.php}     |   7 +-
 app/Models/User.php                           |   4 +-
 composer.json                                 |   4 +-
 composer.lock                                 | 236 ++++++++-
 config/app.php                                |   1 +
 config/permission.php                         | 186 +++++++
 ..._051701_update_user_table_add_roles_id.php |   4 +-
 ..._03_01_090609_create_permission_tables.php | 138 +++++
 ...135113_create_pengajuan_dpu_dpas_table.php |  34 ++
 .../2024_03_01_140831_create_table_bagian.php |  28 +
 database/seeders/PermissionSeeder.php         |  21 +
 database/seeders/UserRoleSeeder.php           |  25 +
 database/seeders/bagianSeeder.php             |  25 +
 resources/views/admin/login.blade.php         |  83 +++
 .../views/layanan-dpudpa/index.blade.php      | 489 +++---------------
 .../views/layanan-dpudpa/tambah.blade.php     |  91 +++-
 resources/views/layout/app_guest.blade.php    |   6 +-
 .../views/layout/navbars/sidebar.blade.php    |  20 +-
 resources/views/mahasiswa/index.blade.php     |  27 +-
 resources/views/user/index.blade.php          |  48 +-
 .../views/user/user_roles_index.blade.php     | 170 +++++-
 routes/web.php                                |  45 +-
 storage/debugbar/.gitignore                   |   2 +
 30 files changed, 1412 insertions(+), 595 deletions(-)
 create mode 100644 app/Http/Controllers/SesiLoginController.php
 rename app/Models/{UserRole.php => PengajuanDpuDpa.php} (53%)
 create mode 100644 config/permission.php
 create mode 100644 database/migrations/2024_03_01_090609_create_permission_tables.php
 create mode 100644 database/migrations/2024_03_01_135113_create_pengajuan_dpu_dpas_table.php
 create mode 100644 database/migrations/2024_03_01_140831_create_table_bagian.php
 create mode 100644 database/seeders/PermissionSeeder.php
 create mode 100644 database/seeders/UserRoleSeeder.php
 create mode 100644 database/seeders/bagianSeeder.php
 create mode 100644 resources/views/admin/login.blade.php
 create mode 100644 storage/debugbar/.gitignore

diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml
index beea945..6bf157e 100644
--- a/.gitea/workflows/main.yaml
+++ b/.gitea/workflows/main.yaml
@@ -1,22 +1,22 @@
-# name: Run Action to Production
-# run-name: ${{ gitea.actor }} is deploy application to production
-# on:
-#   push:
-#     branches:
-#       - master
-#   workflow_dispatch:
+name: Run Action to Production
+run-name: ${{ gitea.actor }} is deploy application to production
+on:
+  push:
+    branches:
+      - master
+  workflow_dispatch:
   
-# jobs:
-#   format:
-#     name: run pull to sync on target message
-#     runs-on: ubuntu-latest
-#     if: "contains(github.event.head_commit.message, 'Production')"
-#     steps:
-#     - name: install ssh keys
-#       # check this thread to understand why its needed:
-#       # https://stackoverflow.com/a/70447517
-#       run: install -m 600 -D /dev/null ~/.ssh/id_rsa && echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa && ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts
-#     - name: connect and pull
-#       run: ssh fikyb-ssh@103.241.205.253 "if cd /home/fikyb-dev/htdocs/pintuv2; then git checkout main && git pull && exit; else git clone https://gitea.unej.ac.id/efbe/pintuv2.git && exit; fi"
-#     - name: cleanup
-#       run: rm -rf ~/.ssh
\ No newline at end of file
+jobs:
+  format:
+    name: run pull to sync on target message
+    runs-on: ubuntu-latest
+    if: "contains(github.event.head_commit.message, 'Production')"
+    steps:
+    - name: install ssh keys
+      # check this thread to understand why its needed:
+      # https://stackoverflow.com/a/70447517
+      run: install -m 600 -D /dev/null ~/.ssh/id_rsa && echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa && ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts
+    - name: connect and pull
+      run: ssh ${{ secrets.SSH_USER }}@${{ secrets.HOST }} "if cd /home/fikyb-dev/htdocs/pintu2; then git checkout master && git pull && exit; else git clone ${{ gitea.repository }} && exit; fi"
+    - name: cleanup
+      run: rm -rf ~/.ssh
\ No newline at end of file
diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php
index 3b0ea70..c599e76 100644
--- a/app/Http/Controllers/AdminController.php
+++ b/app/Http/Controllers/AdminController.php
@@ -4,6 +4,7 @@
 
 use Illuminate\Http\Request;
 
+
 class AdminController extends Controller
 {
 
@@ -11,4 +12,5 @@ public function index(){
     return view('admin.index',['title'=> 'Admin Dashboard']);
 }
 
+
 }
diff --git a/app/Http/Controllers/LayananPengajuanDpuDpaController.php b/app/Http/Controllers/LayananPengajuanDpuDpaController.php
index 1665960..342adf0 100644
--- a/app/Http/Controllers/LayananPengajuanDpuDpaController.php
+++ b/app/Http/Controllers/LayananPengajuanDpuDpaController.php
@@ -2,19 +2,91 @@
 
 namespace App\Http\Controllers;
 
+use App\Models\Mahasiswa;
+use App\Models\PengajuanDpuDpa;
+use App\Models\User;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Storage;
 
 class LayananPengajuanDpuDpaController extends Controller
 {
 
 public function index(){
-    return view('layanan-dpudpa.index',['title' => 'Pengajuan DPU/DPA | Admin Dashboard']);
+    $data = PengajuanDpuDpa::
+    select('pengajuan_dpu_dpas.*',
+    'mahasiswas.nim as nim',
+    'mahasiswas.nama as nama',
+    'dosen_dpu.nama_gelar as dpu_nama_gelar',
+    'dosen_dpa.nama_gelar as dpa_nama_gelar'
+    )
+    ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id')
+    ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id')
+    ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id')
+    ->get();
+    return view('layanan-dpudpa.index',['title' => 'Pengajuan DPU/DPA | Admin Dashboard','data' => $data]);
 }
 public function tambah(){
-    return view('layanan-dpudpa.tambah');
+    $dosen = User::role('Dosen')->get();
+    return view('layanan-dpudpa.tambah',['dosen'=>$dosen]);
 }
-public function store(){
-    return "done";
+public function store(Request $request){
+    
+    $request->validate([
+        'nim'=>'required|numeric',
+        'nama'=>'required',
+        'nomor_hp'=>'required|numeric',
+        'email'=>'required|email',
+        'judul_seminar_proposal'=>'required',
+        'bagian'=>'required|numeric',
+        'dosen_dpu'=>'required|numeric',
+        'dosen_dpa'=>'required|numeric',
+        'file_transkrip' => 'required|mimes:pdf|max:4096',
+    ],[
+        'nim.required'=>'NIP Wajib Diisi',
+        'nim.numeric'=>'NIM Wajib Berisi Angka saja',
+        'nomor_hp.numeric'=>'Nomor HP Wajib Menggunakan Angka, Contoh 089xxxxx',
+        'email.email'=>'Format email tidak sesuai, cek lagi email anda, Contoh mahasiswa@mail.com/ mahasiswa@mail.unej.ac.id',
+        'bagian.numeric'=>'Bagian tidak valid, cek kembali Bagian yang dipilih',
+        'dosen_dpu.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Utama yang dipilih',
+        'dosen_dpa.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Anggota yang dipilih',
+        'file_transkrip.mimes'=>'Format File Bukan PDF, Cek Ulang file anda',
+        'file_transkrip.max'=>'Ukuran File Anda lebih dari 4Mb, Cek Ulang File anda',
+    ]);
+
+    $file_transkrip = $request->file('file_transkrip');
+    $file_transkrip_name = 'LS_'.str_replace(' ', '_',$file_transkrip->getClientOriginalName());
+    $path = $request->nim.'/'.$file_transkrip_name;
+    //jika berhasil save file maka data mhs akan disimpan, dan pengajuan akan diisi
+    if(Storage::disk('public')->put($path, file_get_contents($file_transkrip))){
+
+        $data_mhs['nim'] = $request->nim;
+        $data_mhs['nama'] = $request->nama;
+        $data_mhs['nomor_hp'] = $request->nomor_hp;
+        $data_mhs['email'] = $request->email;
+        $data_mhs['judul_seminar_proposal'] = $request->judul_seminar_proposal;
+        $data_mhs['bagian'] = $request->bagian;
+        $data_mhs['dosen_dpu_id'] = $request->dosen_dpu;
+        $data_mhs['dosen_dpa_id'] = $request->dosen_dpa;
+
+        //set default to -
+        $data_mhs['dosen_penguji1_id'] = 1;
+        $data_mhs['dosen_penguji2_id'] = 1;
+        $data_mhs['judul_skripsi_id'] = '-';
+        $data_mhs['judul_skripsi_en'] = '-';
+        $data_mhs['judul_jurnal'] = '-';
+        $data_mhs['judul_artikel'] = '-';
+
+
+        if(Mahasiswa::create($data_mhs)){
+            $mahasiswas_id = Mahasiswa::where('nim',$request->nim)->first();
+            $data_dpudpa['mahasiswas_id'] = $mahasiswas_id->id;
+            $data_dpudpa['bukti_transkrip_nilai'] = $file_transkrip_name;
+            PengajuanDpuDpa::create($data_dpudpa);
+            return redirect()->route('layanan-dpudpa.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator');
+        }
+        return redirect()->route('layanan-dpudpa.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan');
+    }
+    return redirect()->route('layanan-dpudpa.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan');
 }
 
 }
diff --git a/app/Http/Controllers/MahasiswaController.php b/app/Http/Controllers/MahasiswaController.php
index bc67688..e760904 100644
--- a/app/Http/Controllers/MahasiswaController.php
+++ b/app/Http/Controllers/MahasiswaController.php
@@ -19,10 +19,7 @@ public function index(){
     ->join('users as user_dosen_dpu','mahasiswas.dosen_dpu_id','=','user_dosen_dpu.id')
     ->get();
     //Ambil Semua Data User Dengan Role Name DOSEN
-    $dosen = User::where('user_roles_id','2')
-    ->select('users.id','nama_gelar')
-    ->orderBy('users.id')
-    ->get();
+    $dosen = User::role('Dosen')->get();
     return view('mahasiswa.index',['title'=> 'Manajemen Mahasiswa | Admin Dashboard','user'=> $user,'dosen' => $dosen]);
 }
 
@@ -52,34 +49,83 @@ public function store(Request $request){
         'dosen_penguji1_id.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji yang dipilih',
         'dosen_penguji2_id.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji yang dipilih',
     ]);
-    $user = new Mahasiswa;
-    $user->nim = $request->nim;
-    $user->nama = $request->nama;
-    $user->nomor_hp = $request->nomor_hp;
-    $user->email = $request->email;
-    $user->bagian = $request->bagian;
-    $user->dosen_dpu_id = $request->dosen_dpu_id;
-    $user->dosen_dpa_id = $request->dosen_dpa_id;
-    $user->dosen_penguji1_id = $request->dosen_penguji1_id;
-    $user->dosen_penguji2_id = $request->dosen_penguji2_id;
-    $user->judul_seminar_proposal = $request->judul_seminar_proposal;
-    $user->judul_skripsi_id = $request->judul_skripsi_id;
-    $user->judul_skripsi_en= $request->judul_skripsi_en;
-    $user->judul_jurnal = $request->judul_jurnal;
-    $user->judul_artikel = $request->judul_artikel;
-
-    if($user->save()){
-        return redirect()->route('mahasiswa.index')->with('success','Data Telah Berhasil Disimpan');
+    $mahasiswa = new Mahasiswa;
+    $mahasiswa->nim = $request->nim;
+    $mahasiswa->nama = $request->nama;
+    $mahasiswa->nomor_hp = $request->nomor_hp;
+    $mahasiswa->email = $request->email;
+    $mahasiswa->bagian = $request->bagian;
+    $mahasiswa->dosen_dpu_id = $request->dosen_dpu_id;
+    $mahasiswa->dosen_dpa_id = $request->dosen_dpa_id;
+    $mahasiswa->dosen_penguji1_id = $request->dosen_penguji1_id;
+    $mahasiswa->dosen_penguji2_id = $request->dosen_penguji2_id;
+    $mahasiswa->judul_seminar_proposal = $request->judul_seminar_proposal;
+    $mahasiswa->judul_skripsi_id = $request->judul_skripsi_id;
+    $mahasiswa->judul_skripsi_en= $request->judul_skripsi_en;
+    $mahasiswa->judul_jurnal = $request->judul_jurnal;
+    $mahasiswa->judul_artikel = $request->judul_artikel;
+    
+    if($mahasiswa->save()){
+    return redirect()->route('mahasiswa.index')->with('success','Data Telah Berhasil Disimpan');
     }
     return back()->withInput();
 }
 
 public function update(Request $request){
-    //
+    $request->validate([
+        'nim'=>'required|numeric',
+        'nama'=>'required',
+        'nomor_hp'=>'required|numeric',
+        'email'=>'required|email',
+        'judul_seminar_proposal'=>'required',
+        'judul_skripsi_id'=>'required',
+        'judul_skripsi_en'=>'required',
+        'judul_jurnal'=>'required',
+        'judul_artikel'=>'required',
+        'bagian'=>'required|numeric',
+        'dosen_dpu_id'=>'required|numeric',
+        'dosen_dpa_id'=>'required|numeric',
+        'dosen_penguji1_id'=>'required|numeric',
+        'dosen_penguji2_id'=>'required|numeric',
+    ],[
+        'nim.required'=>'NIP Wajib Diisi',
+        'nim.numeric'=>'NIM Wajib Berisi Angka saja',
+        'nomor_hp.numeric'=>'Nomor HP Wajib Menggunakan Angka, Contoh 089xxxxx',
+        'email.email'=>'Format email tidak sesuai, cek lagi email anda, Contoh mahasiswa@mail.com/ mahasiswa@mail.unej.ac.id',
+        'dosen_dpu_id.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing yang dipilih',
+        'dosen_dpa_id.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing yang dipilih',
+        'dosen_penguji1_id.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji yang dipilih',
+        'dosen_penguji2_id.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji yang dipilih',
+    ]);
+
+    $mahasiswa = Mahasiswa::find($request->id);
+    $mahasiswa->nim = $request->nim;
+    $mahasiswa->nama = $request->nama;
+    $mahasiswa->nomor_hp = $request->nomor_hp;
+    $mahasiswa->email = $request->email;
+    $mahasiswa->bagian = $request->bagian;
+    $mahasiswa->dosen_dpu_id = $request->dosen_dpu_id;
+    $mahasiswa->dosen_dpa_id = $request->dosen_dpa_id;
+    $mahasiswa->dosen_penguji1_id = $request->dosen_penguji1_id;
+    $mahasiswa->dosen_penguji2_id = $request->dosen_penguji2_id;
+    $mahasiswa->judul_seminar_proposal = $request->judul_seminar_proposal;
+    $mahasiswa->judul_skripsi_id = $request->judul_skripsi_id;
+    $mahasiswa->judul_skripsi_en= $request->judul_skripsi_en;
+    $mahasiswa->judul_jurnal = $request->judul_jurnal;
+    $mahasiswa->judul_artikel = $request->judul_artikel;
+
+    if($mahasiswa->save()){
+        return redirect()->route('mahasiswa.index')->with('success','Data Telah Berhasil Disimpan');
+    }
+    return back()->withInput();
 }
 
 public function destroy(Request $request){
-    //
+    $mahasiswa = Mahasiswa::findOrFail($request->id);
+    if($mahasiswa->delete()){
+        return redirect()->route('mahasiswa.index')->with('success','Data Telah Dihapus');
+    }
+    return redirect()->route('mahasiswa.index')->with('error','Data Gagal Dihapus');
 }
 
 }
diff --git a/app/Http/Controllers/SesiLoginController.php b/app/Http/Controllers/SesiLoginController.php
new file mode 100644
index 0000000..206e67f
--- /dev/null
+++ b/app/Http/Controllers/SesiLoginController.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+
+class SesiLoginController extends Controller
+{
+    public function login(){
+        return view('admin.login',['title'=> 'PINTU2 Admin Login Page']);
+    }
+    
+    public function ceklogin(Request $request){
+        $request->validate([
+            'email' => 'required|email',
+            'password' => 'required',
+        ],[
+            'email.required' => 'Email Tidak Boleh kosong',
+            'password.required' => 'Email Tidak Boleh kosong',
+            'email.email' => 'Email harus berupa Email, Contoh abc@mail.com'
+        ]
+        );
+        $infologin = [
+            'email' => $request->email,
+            'password' => $request->password,
+        ];
+        if(Auth::attempt($infologin)){
+            return redirect()->route('admin.dashboard');
+        }
+        else{
+            return redirect()->route('login')->withErrors('Email atau password Salah, Cek kembali')->withInput();
+        }
+        
+    }
+    
+    public function logout(){
+        Auth::logout();
+        return redirect()->route('login');
+    }
+}
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index a7ac296..bdb87e0 100644
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -3,21 +3,17 @@
 namespace App\Http\Controllers;
 
 use App\Models\User;
-use App\Models\UserRole;
 use Illuminate\Http\Request;
 
 use Illuminate\Support\Str;
+use Spatie\Permission\Models\Role;
 
 class UserController extends Controller
 {
 
 public function index(){
-    $user = User::join('user_roles','user_roles_id','=','user_roles.id')
-    ->select('users.*', 'user_roles.nama as nama_roles')
-    ->orderBy('users.id', 'desc')
-    ->get();
-    $role = UserRole::get();
-    return view('user.index',['title'=> 'Manajemen User | Admin Dashboard','user'=> $user,'role' => $role]);
+    $user = User::with('roles')->get();
+    return view('user.index',['title'=> 'Manajemen User | Admin Dashboard','user'=> $user]);
 }
 
 public function store(Request $request){
@@ -45,7 +41,6 @@ public function store(Request $request){
     $user->email = $request->email;
     $user->ettd = $request->ettd;
     $user->password = Str::random(12);
-    $user->user_roles_id = $request->user_roles_id;
 
     if($user->save()){
         return redirect()->route('users.index')->with('success','Data Telah Berhasil Disimpan');
@@ -80,7 +75,6 @@ public function update(Request $request){
     $user->email = $request->email;
     $user->ettd = $request->ettd;
     $user->password = Str::random(12);
-    $user->user_roles_id = $request->user_roles_id;
 
     if($user->save()){
         return redirect()->route('users.index')->with('success','Data Telah Berhasil Diubah');
@@ -98,8 +92,29 @@ public function destroy(Request $request){
 }
 
 public function userroles_index(){
-    $data = UserRole::get();
-    return view('user.user_roles_index',['title'=> 'Admin Dashboard','data'=> $data]);
+    $user = User::select('id','nama_gelar')->get();
+    $data = Role::get();
+    return view('user.user_roles_index',['title'=> 'Manajemen Role User | Admin Dashboard','data'=> $data,'user'=>$user]);
+}   
+
+public function userroles_store(Request $request){
+    $user_roles = new Role;
+    $user_roles->nama = $request->role_name;
+
+    if($user_roles->save()){
+        return redirect()->route('users-roles.index')->with('success','Data Telah Berhasil Disimpan');
+    }
+    return back()->withInput();
+}
+
+public function userroles_assign(Request $request){
+    $listUser = $request->input('checkboxes', []);
+    $listUser = $request->input('checkboxes', []);
+    foreach($listUser as $listUsers) {
+        $user = User::find($listUsers);
+        $user->assignRole($request->roles_user);
+    }
+    return redirect()->route('users-roles.index')->with('success','Sukses Memberi Role User');
 }
 
 }
diff --git a/app/Models/Mahasiswa.php b/app/Models/Mahasiswa.php
index 7f15003..e1d4a9f 100644
--- a/app/Models/Mahasiswa.php
+++ b/app/Models/Mahasiswa.php
@@ -8,4 +8,21 @@
 class Mahasiswa extends Model
 {
     use HasFactory;
+
+    protected $fillable = [
+        'nim',
+        'nama',
+        'nomor_hp',
+        'email',
+        'bagian',
+        'judul_seminar_proposal',
+        'judul_skripsi_id',
+        'judul_skripsi_en',
+        'judul_jurnal',
+        'judul_artikel',
+        'dosen_dpu_id',
+        'dosen_dpa_id',
+        'dosen_penguji1_id',
+        'dosen_penguji2_id',
+    ];
 }
diff --git a/app/Models/UserRole.php b/app/Models/PengajuanDpuDpa.php
similarity index 53%
rename from app/Models/UserRole.php
rename to app/Models/PengajuanDpuDpa.php
index f067f50..b4eda59 100644
--- a/app/Models/UserRole.php
+++ b/app/Models/PengajuanDpuDpa.php
@@ -5,7 +5,12 @@
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 
-class UserRole extends Model
+class PengajuanDpuDpa extends Model
 {
     use HasFactory;
+
+    protected $fillable = [
+        'mahasiswas_id',
+        'bukti_transkrip_nilai',
+    ];
 }
diff --git a/app/Models/User.php b/app/Models/User.php
index 4d7f70f..2208110 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -7,10 +7,11 @@
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use Illuminate\Notifications\Notifiable;
 use Laravel\Sanctum\HasApiTokens;
+use Spatie\Permission\Traits\HasRoles;
 
 class User extends Authenticatable
 {
-    use HasApiTokens, HasFactory, Notifiable;
+    use HasApiTokens, HasFactory, Notifiable, HasRoles;
 
     /**
      * The attributes that are mass assignable.
@@ -42,4 +43,5 @@ class User extends Authenticatable
         'email_verified_at' => 'datetime',
         'password' => 'hashed',
     ];
+    
 }
diff --git a/composer.json b/composer.json
index 8a3d72d..e18c53c 100644
--- a/composer.json
+++ b/composer.json
@@ -6,10 +6,12 @@
     "license": "MIT",
     "require": {
         "php": "^8.1",
+        "barryvdh/laravel-debugbar": "^3.10",
         "guzzlehttp/guzzle": "^7.2",
         "laravel/framework": "^10.10",
         "laravel/sanctum": "^3.3",
-        "laravel/tinker": "^2.8"
+        "laravel/tinker": "^2.8",
+        "spatie/laravel-permission": "^6.4"
     },
     "require-dev": {
         "fakerphp/faker": "^1.9.1",
diff --git a/composer.lock b/composer.lock
index 4917542..8743d21 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,92 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "9c491b8531eec05ba41a11d9276a5749",
+    "content-hash": "8ea36d387a8498c6177a03aae1a59e91",
     "packages": [
+        {
+            "name": "barryvdh/laravel-debugbar",
+            "version": "v3.10.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/barryvdh/laravel-debugbar.git",
+                "reference": "d1a48965f2b25a6cec2eea07d719b568a37c9a88"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/d1a48965f2b25a6cec2eea07d719b568a37c9a88",
+                "reference": "d1a48965f2b25a6cec2eea07d719b568a37c9a88",
+                "shasum": ""
+            },
+            "require": {
+                "illuminate/routing": "^9|^10|^11",
+                "illuminate/session": "^9|^10|^11",
+                "illuminate/support": "^9|^10|^11",
+                "maximebf/debugbar": "~1.20.1",
+                "php": "^8.0",
+                "symfony/finder": "^6|^7"
+            },
+            "require-dev": {
+                "mockery/mockery": "^1.3.3",
+                "orchestra/testbench-dusk": "^5|^6|^7|^8|^9",
+                "phpunit/phpunit": "^8.5.30|^9.0",
+                "squizlabs/php_codesniffer": "^3.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.10-dev"
+                },
+                "laravel": {
+                    "providers": [
+                        "Barryvdh\\Debugbar\\ServiceProvider"
+                    ],
+                    "aliases": {
+                        "Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar"
+                    }
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/helpers.php"
+                ],
+                "psr-4": {
+                    "Barryvdh\\Debugbar\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Barry vd. Heuvel",
+                    "email": "barryvdh@gmail.com"
+                }
+            ],
+            "description": "PHP Debugbar integration for Laravel",
+            "keywords": [
+                "debug",
+                "debugbar",
+                "laravel",
+                "profiler",
+                "webprofiler"
+            ],
+            "support": {
+                "issues": "https://github.com/barryvdh/laravel-debugbar/issues",
+                "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.10.5"
+            },
+            "funding": [
+                {
+                    "url": "https://fruitcake.nl",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/barryvdh",
+                    "type": "github"
+                }
+            ],
+            "time": "2024-02-15T10:45:45+00:00"
+        },
         {
             "name": "brick/math",
             "version": "0.11.0",
@@ -1893,6 +1977,72 @@
             ],
             "time": "2024-01-28T23:22:08+00:00"
         },
+        {
+            "name": "maximebf/debugbar",
+            "version": "v1.20.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/maximebf/php-debugbar.git",
+                "reference": "484625c23a4fa4f303617f29fcacd42951c9c01d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/484625c23a4fa4f303617f29fcacd42951c9c01d",
+                "reference": "484625c23a4fa4f303617f29fcacd42951c9c01d",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1|^8",
+                "psr/log": "^1|^2|^3",
+                "symfony/var-dumper": "^4|^5|^6|^7"
+            },
+            "require-dev": {
+                "phpunit/phpunit": ">=7.5.20 <10.0",
+                "twig/twig": "^1.38|^2.7|^3.0"
+            },
+            "suggest": {
+                "kriswallsmith/assetic": "The best way to manage assets",
+                "monolog/monolog": "Log using Monolog",
+                "predis/predis": "Redis storage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.20-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "DebugBar\\": "src/DebugBar/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Maxime Bouroumeau-Fuseau",
+                    "email": "maxime.bouroumeau@gmail.com",
+                    "homepage": "http://maximebf.com"
+                },
+                {
+                    "name": "Barry vd. Heuvel",
+                    "email": "barryvdh@gmail.com"
+                }
+            ],
+            "description": "Debug bar in the browser for php application",
+            "homepage": "https://github.com/maximebf/php-debugbar",
+            "keywords": [
+                "debug",
+                "debugbar"
+            ],
+            "support": {
+                "issues": "https://github.com/maximebf/php-debugbar/issues",
+                "source": "https://github.com/maximebf/php-debugbar/tree/v1.20.2"
+            },
+            "time": "2024-02-15T10:49:09+00:00"
+        },
         {
             "name": "monolog/monolog",
             "version": "3.5.0",
@@ -3184,6 +3334,88 @@
             ],
             "time": "2023-11-08T05:53:05+00:00"
         },
+        {
+            "name": "spatie/laravel-permission",
+            "version": "6.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/spatie/laravel-permission.git",
+                "reference": "05cce017fe3ac78f60a3fce78c07fe6e8e6e6e52"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/05cce017fe3ac78f60a3fce78c07fe6e8e6e6e52",
+                "reference": "05cce017fe3ac78f60a3fce78c07fe6e8e6e6e52",
+                "shasum": ""
+            },
+            "require": {
+                "illuminate/auth": "^8.12|^9.0|^10.0|^11.0",
+                "illuminate/container": "^8.12|^9.0|^10.0|^11.0",
+                "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0",
+                "illuminate/database": "^8.12|^9.0|^10.0|^11.0",
+                "php": "^8.0"
+            },
+            "require-dev": {
+                "laravel/passport": "^11.0|^12.0",
+                "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0",
+                "phpunit/phpunit": "^9.4|^10.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "6.x-dev",
+                    "dev-master": "6.x-dev"
+                },
+                "laravel": {
+                    "providers": [
+                        "Spatie\\Permission\\PermissionServiceProvider"
+                    ]
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/helpers.php"
+                ],
+                "psr-4": {
+                    "Spatie\\Permission\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Freek Van der Herten",
+                    "email": "freek@spatie.be",
+                    "homepage": "https://spatie.be",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Permission handling for Laravel 8.0 and up",
+            "homepage": "https://github.com/spatie/laravel-permission",
+            "keywords": [
+                "acl",
+                "laravel",
+                "permission",
+                "permissions",
+                "rbac",
+                "roles",
+                "security",
+                "spatie"
+            ],
+            "support": {
+                "issues": "https://github.com/spatie/laravel-permission/issues",
+                "source": "https://github.com/spatie/laravel-permission/tree/6.4.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/spatie",
+                    "type": "github"
+                }
+            ],
+            "time": "2024-02-28T08:11:20+00:00"
+        },
         {
             "name": "symfony/console",
             "version": "v6.4.2",
@@ -8153,5 +8385,5 @@
         "php": "^8.1"
     },
     "platform-dev": [],
-    "plugin-api-version": "2.3.0"
+    "plugin-api-version": "2.6.0"
 }
diff --git a/config/app.php b/config/app.php
index 9207160..be60792 100644
--- a/config/app.php
+++ b/config/app.php
@@ -168,6 +168,7 @@
         // App\Providers\BroadcastServiceProvider::class,
         App\Providers\EventServiceProvider::class,
         App\Providers\RouteServiceProvider::class,
+        Spatie\Permission\PermissionServiceProvider::class,
     ])->toArray(),
 
     /*
diff --git a/config/permission.php b/config/permission.php
new file mode 100644
index 0000000..2a520f3
--- /dev/null
+++ b/config/permission.php
@@ -0,0 +1,186 @@
+<?php
+
+return [
+
+    'models' => [
+
+        /*
+         * When using the "HasPermissions" trait from this package, we need to know which
+         * Eloquent model should be used to retrieve your permissions. Of course, it
+         * is often just the "Permission" model but you may use whatever you like.
+         *
+         * The model you want to use as a Permission model needs to implement the
+         * `Spatie\Permission\Contracts\Permission` contract.
+         */
+
+        'permission' => Spatie\Permission\Models\Permission::class,
+
+        /*
+         * When using the "HasRoles" trait from this package, we need to know which
+         * Eloquent model should be used to retrieve your roles. Of course, it
+         * is often just the "Role" model but you may use whatever you like.
+         *
+         * The model you want to use as a Role model needs to implement the
+         * `Spatie\Permission\Contracts\Role` contract.
+         */
+
+        'role' => Spatie\Permission\Models\Role::class,
+
+    ],
+
+    'table_names' => [
+
+        /*
+         * When using the "HasRoles" trait from this package, we need to know which
+         * table should be used to retrieve your roles. We have chosen a basic
+         * default value but you may easily change it to any table you like.
+         */
+
+        'roles' => 'roles',
+
+        /*
+         * When using the "HasPermissions" trait from this package, we need to know which
+         * table should be used to retrieve your permissions. We have chosen a basic
+         * default value but you may easily change it to any table you like.
+         */
+
+        'permissions' => 'permissions',
+
+        /*
+         * When using the "HasPermissions" trait from this package, we need to know which
+         * table should be used to retrieve your models permissions. We have chosen a
+         * basic default value but you may easily change it to any table you like.
+         */
+
+        'model_has_permissions' => 'model_has_permissions',
+
+        /*
+         * When using the "HasRoles" trait from this package, we need to know which
+         * table should be used to retrieve your models roles. We have chosen a
+         * basic default value but you may easily change it to any table you like.
+         */
+
+        'model_has_roles' => 'model_has_roles',
+
+        /*
+         * When using the "HasRoles" trait from this package, we need to know which
+         * table should be used to retrieve your roles permissions. We have chosen a
+         * basic default value but you may easily change it to any table you like.
+         */
+
+        'role_has_permissions' => 'role_has_permissions',
+    ],
+
+    'column_names' => [
+        /*
+         * Change this if you want to name the related pivots other than defaults
+         */
+        'role_pivot_key' => null, //default 'role_id',
+        'permission_pivot_key' => null, //default 'permission_id',
+
+        /*
+         * Change this if you want to name the related model primary key other than
+         * `model_id`.
+         *
+         * For example, this would be nice if your primary keys are all UUIDs. In
+         * that case, name this `model_uuid`.
+         */
+
+        'model_morph_key' => 'model_id',
+
+        /*
+         * Change this if you want to use the teams feature and your related model's
+         * foreign key is other than `team_id`.
+         */
+
+        'team_foreign_key' => 'team_id',
+    ],
+
+    /*
+     * When set to true, the method for checking permissions will be registered on the gate.
+     * Set this to false if you want to implement custom logic for checking permissions.
+     */
+
+    'register_permission_check_method' => true,
+
+    /*
+     * When set to true, Laravel\Octane\Events\OperationTerminated event listener will be registered
+     * this will refresh permissions on every TickTerminated, TaskTerminated and RequestTerminated
+     * NOTE: This should not be needed in most cases, but an Octane/Vapor combination benefited from it.
+     */
+    'register_octane_reset_listener' => false,
+
+    /*
+     * Teams Feature.
+     * When set to true the package implements teams using the 'team_foreign_key'.
+     * If you want the migrations to register the 'team_foreign_key', you must
+     * set this to true before doing the migration.
+     * If you already did the migration then you must make a new migration to also
+     * add 'team_foreign_key' to 'roles', 'model_has_roles', and 'model_has_permissions'
+     * (view the latest version of this package's migration file)
+     */
+
+    'teams' => false,
+
+    /*
+     * Passport Client Credentials Grant
+     * When set to true the package will use Passports Client to check permissions
+     */
+
+    'use_passport_client_credentials' => false,
+
+    /*
+     * When set to true, the required permission names are added to exception messages.
+     * This could be considered an information leak in some contexts, so the default
+     * setting is false here for optimum safety.
+     */
+
+    'display_permission_in_exception' => false,
+
+    /*
+     * When set to true, the required role names are added to exception messages.
+     * This could be considered an information leak in some contexts, so the default
+     * setting is false here for optimum safety.
+     */
+
+    'display_role_in_exception' => false,
+
+    /*
+     * By default wildcard permission lookups are disabled.
+     * See documentation to understand supported syntax.
+     */
+
+    'enable_wildcard_permission' => false,
+
+    /*
+     * The class to use for interpreting wildcard permissions.
+     * If you need to modify delimiters, override the class and specify its name here.
+     */
+    // 'permission.wildcard_permission' => Spatie\Permission\WildcardPermission::class,
+
+    /* Cache-specific settings */
+
+    'cache' => [
+
+        /*
+         * By default all permissions are cached for 24 hours to speed up performance.
+         * When permissions or roles are updated the cache is flushed automatically.
+         */
+
+        'expiration_time' => \DateInterval::createFromDateString('24 hours'),
+
+        /*
+         * The cache key used to store all permissions.
+         */
+
+        'key' => 'spatie.permission.cache',
+
+        /*
+         * You may optionally indicate a specific cache driver to use for permission and
+         * role caching using any of the `store` drivers listed in the cache.php config
+         * file. Using 'default' here means to use the `default` set in cache.php.
+         */
+
+        'store' => 'default',
+    ],
+];
diff --git a/database/migrations/2024_01_31_051701_update_user_table_add_roles_id.php b/database/migrations/2024_01_31_051701_update_user_table_add_roles_id.php
index e3be6d0..efbe078 100644
--- a/database/migrations/2024_01_31_051701_update_user_table_add_roles_id.php
+++ b/database/migrations/2024_01_31_051701_update_user_table_add_roles_id.php
@@ -12,7 +12,7 @@
     public function up(): void
     {
         Schema::table('users', function (Blueprint $table) {
-            $table->foreignId('user_roles_id')->constrained();
+            // $table->foreignId('user_roles_id')->constrained();
             $table->string('about')->nullable()->after('ettd');
         });
     }
@@ -23,7 +23,7 @@ public function up(): void
     public function down(): void
     {
         Schema::table('users', function (Blueprint $table) {
-            $table->drop('user_roles_id');
+            // $table->drop('user_roles_id');
             $table->drop('about');
         });
     }
diff --git a/database/migrations/2024_03_01_090609_create_permission_tables.php b/database/migrations/2024_03_01_090609_create_permission_tables.php
new file mode 100644
index 0000000..b865d48
--- /dev/null
+++ b/database/migrations/2024_03_01_090609_create_permission_tables.php
@@ -0,0 +1,138 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up(): void
+    {
+        $teams = config('permission.teams');
+        $tableNames = config('permission.table_names');
+        $columnNames = config('permission.column_names');
+        $pivotRole = $columnNames['role_pivot_key'] ?? 'role_id';
+        $pivotPermission = $columnNames['permission_pivot_key'] ?? 'permission_id';
+
+        if (empty($tableNames)) {
+            throw new \Exception('Error: config/permission.php not loaded. Run [php artisan config:clear] and try again.');
+        }
+        if ($teams && empty($columnNames['team_foreign_key'] ?? null)) {
+            throw new \Exception('Error: team_foreign_key on config/permission.php not loaded. Run [php artisan config:clear] and try again.');
+        }
+
+        Schema::create($tableNames['permissions'], function (Blueprint $table) {
+            $table->bigIncrements('id'); // permission id
+            $table->string('name');       // For MySQL 8.0 use string('name', 125);
+            $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
+            $table->timestamps();
+
+            $table->unique(['name', 'guard_name']);
+        });
+
+        Schema::create($tableNames['roles'], function (Blueprint $table) use ($teams, $columnNames) {
+            $table->bigIncrements('id'); // role id
+            if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing
+                $table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable();
+                $table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index');
+            }
+            $table->string('name');       // For MySQL 8.0 use string('name', 125);
+            $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
+            $table->timestamps();
+            if ($teams || config('permission.testing')) {
+                $table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']);
+            } else {
+                $table->unique(['name', 'guard_name']);
+            }
+        });
+
+        Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames, $pivotPermission, $teams) {
+            $table->unsignedBigInteger($pivotPermission);
+
+            $table->string('model_type');
+            $table->unsignedBigInteger($columnNames['model_morph_key']);
+            $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index');
+
+            $table->foreign($pivotPermission)
+                ->references('id') // permission id
+                ->on($tableNames['permissions'])
+                ->onDelete('cascade');
+            if ($teams) {
+                $table->unsignedBigInteger($columnNames['team_foreign_key']);
+                $table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index');
+
+                $table->primary([$columnNames['team_foreign_key'], $pivotPermission, $columnNames['model_morph_key'], 'model_type'],
+                    'model_has_permissions_permission_model_type_primary');
+            } else {
+                $table->primary([$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
+                    'model_has_permissions_permission_model_type_primary');
+            }
+
+        });
+
+        Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames, $pivotRole, $teams) {
+            $table->unsignedBigInteger($pivotRole);
+
+            $table->string('model_type');
+            $table->unsignedBigInteger($columnNames['model_morph_key']);
+            $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index');
+
+            $table->foreign($pivotRole)
+                ->references('id') // role id
+                ->on($tableNames['roles'])
+                ->onDelete('cascade');
+            if ($teams) {
+                $table->unsignedBigInteger($columnNames['team_foreign_key']);
+                $table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index');
+
+                $table->primary([$columnNames['team_foreign_key'], $pivotRole, $columnNames['model_morph_key'], 'model_type'],
+                    'model_has_roles_role_model_type_primary');
+            } else {
+                $table->primary([$pivotRole, $columnNames['model_morph_key'], 'model_type'],
+                    'model_has_roles_role_model_type_primary');
+            }
+        });
+
+        Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames, $pivotRole, $pivotPermission) {
+            $table->unsignedBigInteger($pivotPermission);
+            $table->unsignedBigInteger($pivotRole);
+
+            $table->foreign($pivotPermission)
+                ->references('id') // permission id
+                ->on($tableNames['permissions'])
+                ->onDelete('cascade');
+
+            $table->foreign($pivotRole)
+                ->references('id') // role id
+                ->on($tableNames['roles'])
+                ->onDelete('cascade');
+
+            $table->primary([$pivotPermission, $pivotRole], 'role_has_permissions_permission_id_role_id_primary');
+        });
+
+        app('cache')
+            ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
+            ->forget(config('permission.cache.key'));
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        $tableNames = config('permission.table_names');
+
+        if (empty($tableNames)) {
+            throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.');
+        }
+
+        Schema::drop($tableNames['role_has_permissions']);
+        Schema::drop($tableNames['model_has_roles']);
+        Schema::drop($tableNames['model_has_permissions']);
+        Schema::drop($tableNames['roles']);
+        Schema::drop($tableNames['permissions']);
+    }
+};
diff --git a/database/migrations/2024_03_01_135113_create_pengajuan_dpu_dpas_table.php b/database/migrations/2024_03_01_135113_create_pengajuan_dpu_dpas_table.php
new file mode 100644
index 0000000..23d9c6f
--- /dev/null
+++ b/database/migrations/2024_03_01_135113_create_pengajuan_dpu_dpas_table.php
@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up(): void
+    {
+        Schema::create('pengajuan_dpu_dpas', function (Blueprint $table) {
+            $table->id();
+            $table->foreignId('mahasiswas_id')->constrained();
+            $table->string('caseid')->default('-');
+            $table->string('ttd_operator')->default('-');
+            $table->string('ttd_dpu')->default('-');
+            $table->string('ttd_dpa')->default('-');
+            $table->string('ttd_kombi')->default('-');
+            $table->string('bukti_transkrip_nilai');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::dropIfExists('pengajuan_dpu_dpas');
+    }
+};
diff --git a/database/migrations/2024_03_01_140831_create_table_bagian.php b/database/migrations/2024_03_01_140831_create_table_bagian.php
new file mode 100644
index 0000000..e1145b9
--- /dev/null
+++ b/database/migrations/2024_03_01_140831_create_table_bagian.php
@@ -0,0 +1,28 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up(): void
+    {
+        Schema::create('bagians', function (Blueprint $table) {
+            $table->id();
+            $table->string('nama_bagian');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::dropIfExists('bagians');
+    }
+};
diff --git a/database/seeders/PermissionSeeder.php b/database/seeders/PermissionSeeder.php
new file mode 100644
index 0000000..02bb83e
--- /dev/null
+++ b/database/seeders/PermissionSeeder.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+use Spatie\Permission\Models\Permission;
+
+class PermissionSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     */
+    public function run(): void
+    {
+        $permission = Permission::updateOrCreate(
+            [ 'name' => 'view_dashboard' ],
+            [ 'name' => 'view_dashboard' ]
+        );
+    }
+}
diff --git a/database/seeders/UserRoleSeeder.php b/database/seeders/UserRoleSeeder.php
new file mode 100644
index 0000000..21bf35b
--- /dev/null
+++ b/database/seeders/UserRoleSeeder.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+use Spatie\Permission\Contracts\Role;
+use Spatie\Permission\Models\Role as ModelsRole;
+
+class UserRoleSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     */
+    public function run(): void
+    {
+        ModelsRole::updateOrCreate(
+            ['name'=> 'Super Administrator'],
+            ['name'=> 'Super Administrator'],
+        );
+        ModelsRole::create(['name'=> 'Tenaga Kependidikan']);
+        ModelsRole::create(['name'=> 'Dosen']);
+        ModelsRole::create(['name'=> 'Operator Akademik']);
+    }
+}
diff --git a/database/seeders/bagianSeeder.php b/database/seeders/bagianSeeder.php
new file mode 100644
index 0000000..5544f1f
--- /dev/null
+++ b/database/seeders/bagianSeeder.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+use Illuminate\Support\Facades\DB;
+
+class bagianSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     */
+    public function run(): void
+    {
+        DB::table('bagians')->insert([ 'nama_bagian'=>'Farmasi Klinik dan Komunitas' ]);
+        DB::table('bagians')->insert([ 'nama_bagian'=>'Farmakologi dan Hewan Coba' ]);
+        DB::table('bagians')->insert([ 'nama_bagian'=>'Farmakognosi dan Fitokimia' ]);
+        DB::table('bagians')->insert([ 'nama_bagian'=>'Mikrobiologi dan Biologi Farmasi' ]);
+        DB::table('bagians')->insert([ 'nama_bagian'=>'Farmasetika' ]);
+        DB::table('bagians')->insert([ 'nama_bagian'=>'Teknologi Farmasi' ]);
+        DB::table('bagians')->insert([ 'nama_bagian'=>'Kimia Analisis' ]);
+        DB::table('bagians')->insert([ 'nama_bagian'=>'Kimia Medisinal' ]);
+    }
+}
diff --git a/resources/views/admin/login.blade.php b/resources/views/admin/login.blade.php
new file mode 100644
index 0000000..151dd3d
--- /dev/null
+++ b/resources/views/admin/login.blade.php
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <title>{{ $title }}</title>
+
+  <!-- Google Font: Source Sans Pro -->
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
+  <!-- Font Awesome -->
+  <link rel="stylesheet" href="{{ asset('/')}}plugins/fontawesome-free/css/all.min.css">
+  <!-- icheck bootstrap -->
+  <link rel="stylesheet" href="{{ asset('/')}}plugins/icheck-bootstrap/icheck-bootstrap.min.css">
+  <!-- Theme style -->
+  <link rel="stylesheet" href="{{ asset('/')}}dist/css/adminlte.min.css">
+</head>
+<body class="hold-transition login-page">
+<div class="login-box">
+  <!-- /.login-logo -->
+  <div class="card card-outline card-primary">
+    <div class="card-header text-center">
+      <a href="{{ route('login') }}" class="h1"><b>PINTU</b>v2</a>
+    </div>
+    <div class="card-body">
+        @if ($errors->any())
+            <div class="alert alert-danger">
+            <ul>
+                @foreach ($errors->all() as $error )
+                <li>{{ $error }}</li>
+                @endforeach
+            </ul>
+            </div>
+        @endif
+      <p class="login-box-msg">Silahkan Login Menggunakan NIP / Email</p>
+      <form action="{{ route('admin.ceklogin') }}" method="post">
+       @csrf
+        <div class="input-group mb-3">
+          <input type="email" class="form-control" placeholder="Email" name="email" required value="{{ old('email') }}">
+          <div class="input-group-append">
+            <div class="input-group-text">
+              <span class="fas fa-envelope"></span>
+            </div>
+          </div>
+        </div>
+        <div class="input-group mb-3">
+          <input type="password" class="form-control" placeholder="Password" name="password" required>
+          <div class="input-group-append">
+            <div class="input-group-text">
+              <span class="fas fa-lock"></span>
+            </div>
+          </div>
+        </div>
+        <div class="row">
+          <div class="col-8">
+            <div class="icheck-primary">
+              <input type="checkbox" id="remember" name="remember">
+              <label for="remember">
+                Remember Me
+              </label>
+            </div>
+          </div>
+          <!-- /.col -->
+          <div class="col-4">
+            <button type="submit" class="btn btn-primary btn-block">Sign In</button>
+          </div>
+          <!-- /.col -->
+        </div>
+      </form>
+    </div>
+    <!-- /.card-body -->
+  </div>
+  <!-- /.card -->
+</div>
+<!-- /.login-box -->
+
+<!-- jQuery -->
+<script src="{{ asset('/')}}plugins/jquery/jquery.min.js"></script>
+<!-- Bootstrap 4 -->
+<script src="{{ asset('/')}}plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
+<!-- AdminLTE App -->
+<script src="{{ asset('/')}}dist/js/adminlte.min.js"></script>
+</body>
+</html>
diff --git a/resources/views/layanan-dpudpa/index.blade.php b/resources/views/layanan-dpudpa/index.blade.php
index e1f6ed9..2e7ca7f 100644
--- a/resources/views/layanan-dpudpa/index.blade.php
+++ b/resources/views/layanan-dpudpa/index.blade.php
@@ -10,19 +10,19 @@
 <!-- Add Content Here -->
 @section('content')
 <!-- Include Sidebar -->
-@include('layout.navbars.sidebar', ['title' => 'Layanan Akademik'])
+@include('layout.navbars.sidebar')
 <div class="content-wrapper">
     <!-- Main content -->
     <section class="content-header">
       <div class="container-fluid">
         <div class="row mb-2">
           <div class="col-sm-6">
-            <h1>Blank Page</h1>
+            <h1>Pengajuan DPU / DPA</h1>
           </div>
           <div class="col-sm-6">
             <ol class="breadcrumb float-sm-right">
-              <li class="breadcrumb-item"><a href="#">Home</a></li>
-              <li class="breadcrumb-item active">Blank Page</li>
+              <li class="breadcrumb-item"><a href="{{ route('admin.dashboard') }}">Admin</a></li>
+              <li class="breadcrumb-item active">Pengajuan DPU / DPA</li>
             </ol>
           </div>
         </div>
@@ -31,438 +31,78 @@
 
     <section class="content">
       <div class="card">
-        <div class="card-header">
-          <h3 class="card-title">DataTable with default features</h3>
-        </div>
         <!-- /.card-header -->
         <div class="card-body">
+          <div class="alert alert-info alert-dismissible">
+            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
+            <h5><i class="icon fas fa-info"></i> Perhatian!</h5>
+            <span >CaseID Akan muncul ketika pengajuan telah diterima untuk menghindari data duplikat untuk mahasiswa yang sama</span>
+          </div>
           <table id="example1" class="table table-bordered table-striped">
             <thead>
             <tr>
-              <th>Rendering engine</th>
-              <th>Browser</th>
-              <th>Platform(s)</th>
-              <th>Engine version</th>
-              <th>CSS grade</th>
+              <th>CaseID</th>
+              <th>NIM</th>
+              <th>DPU</th>
+              <th>DPA</th>
+              <th>Action</th>
             </tr>
             </thead>
             <tbody>
+            @foreach ($data as $datas)
             <tr>
-              <td>Trident</td>
-              <td>Internet
-                Explorer 4.0
-              </td>
-              <td>Win 95+</td>
-              <td> 4</td>
-              <td>X</td>
-            </tr>
-            <tr>
-              <td>Trident</td>
-              <td>Internet
-                Explorer 5.0
-              </td>
-              <td>Win 95+</td>
-              <td>5</td>
-              <td>C</td>
-            </tr>
-            <tr>
-              <td>Trident</td>
-              <td>Internet
-                Explorer 5.5
-              </td>
-              <td>Win 95+</td>
-              <td>5.5</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Trident</td>
-              <td>Internet
-                Explorer 6
-              </td>
-              <td>Win 98+</td>
-              <td>6</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Trident</td>
-              <td>Internet Explorer 7</td>
-              <td>Win XP SP2+</td>
-              <td>7</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Trident</td>
-              <td>AOL browser (AOL desktop)</td>
-              <td>Win XP</td>
-              <td>6</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Firefox 1.0</td>
-              <td>Win 98+ / OSX.2+</td>
-              <td>1.7</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Firefox 1.5</td>
-              <td>Win 98+ / OSX.2+</td>
-              <td>1.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Firefox 2.0</td>
-              <td>Win 98+ / OSX.2+</td>
-              <td>1.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Firefox 3.0</td>
-              <td>Win 2k+ / OSX.3+</td>
-              <td>1.9</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Camino 1.0</td>
-              <td>OSX.2+</td>
-              <td>1.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Camino 1.5</td>
-              <td>OSX.3+</td>
-              <td>1.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Netscape 7.2</td>
-              <td>Win 95+ / Mac OS 8.6-9.2</td>
-              <td>1.7</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Netscape Browser 8</td>
-              <td>Win 98SE+</td>
-              <td>1.7</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Netscape Navigator 9</td>
-              <td>Win 98+ / OSX.2+</td>
-              <td>1.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.0</td>
-              <td>Win 95+ / OSX.1+</td>
-              <td>1</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.1</td>
-              <td>Win 95+ / OSX.1+</td>
-              <td>1.1</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.2</td>
-              <td>Win 95+ / OSX.1+</td>
-              <td>1.2</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.3</td>
-              <td>Win 95+ / OSX.1+</td>
-              <td>1.3</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.4</td>
-              <td>Win 95+ / OSX.1+</td>
-              <td>1.4</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.5</td>
-              <td>Win 95+ / OSX.1+</td>
-              <td>1.5</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.6</td>
-              <td>Win 95+ / OSX.1+</td>
-              <td>1.6</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.7</td>
-              <td>Win 98+ / OSX.1+</td>
-              <td>1.7</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Mozilla 1.8</td>
-              <td>Win 98+ / OSX.1+</td>
-              <td>1.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Seamonkey 1.1</td>
-              <td>Win 98+ / OSX.2+</td>
-              <td>1.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Gecko</td>
-              <td>Epiphany 2.20</td>
-              <td>Gnome</td>
-              <td>1.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Webkit</td>
-              <td>Safari 1.2</td>
-              <td>OSX.3</td>
-              <td>125.5</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Webkit</td>
-              <td>Safari 1.3</td>
-              <td>OSX.3</td>
-              <td>312.8</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Webkit</td>
-              <td>Safari 2.0</td>
-              <td>OSX.4+</td>
-              <td>419.3</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Webkit</td>
-              <td>Safari 3.0</td>
-              <td>OSX.4+</td>
-              <td>522.1</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Webkit</td>
-              <td>OmniWeb 5.5</td>
-              <td>OSX.4+</td>
-              <td>420</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Webkit</td>
-              <td>iPod Touch / iPhone</td>
-              <td>iPod</td>
-              <td>420.1</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Webkit</td>
-              <td>S60</td>
-              <td>S60</td>
-              <td>413</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Opera 7.0</td>
-              <td>Win 95+ / OSX.1+</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Opera 7.5</td>
-              <td>Win 95+ / OSX.2+</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Opera 8.0</td>
-              <td>Win 95+ / OSX.2+</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Opera 8.5</td>
-              <td>Win 95+ / OSX.2+</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Opera 9.0</td>
-              <td>Win 95+ / OSX.3+</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Opera 9.2</td>
-              <td>Win 88+ / OSX.3+</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Opera 9.5</td>
-              <td>Win 88+ / OSX.3+</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Opera for Wii</td>
-              <td>Wii</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Nokia N800</td>
-              <td>N800</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Presto</td>
-              <td>Nintendo DS browser</td>
-              <td>Nintendo DS</td>
-              <td>8.5</td>
-              <td>C/A<sup>1</sup></td>
-            </tr>
-            <tr>
-              <td>KHTML</td>
-              <td>Konqureror 3.1</td>
-              <td>KDE 3.1</td>
-              <td>3.1</td>
-              <td>C</td>
-            </tr>
-            <tr>
-              <td>KHTML</td>
-              <td>Konqureror 3.3</td>
-              <td>KDE 3.3</td>
-              <td>3.3</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>KHTML</td>
-              <td>Konqureror 3.5</td>
-              <td>KDE 3.5</td>
-              <td>3.5</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Tasman</td>
-              <td>Internet Explorer 4.5</td>
-              <td>Mac OS 8-9</td>
-              <td>-</td>
-              <td>X</td>
-            </tr>
-            <tr>
-              <td>Tasman</td>
-              <td>Internet Explorer 5.1</td>
-              <td>Mac OS 7.6-9</td>
-              <td>1</td>
-              <td>C</td>
-            </tr>
-            <tr>
-              <td>Tasman</td>
-              <td>Internet Explorer 5.2</td>
-              <td>Mac OS 8-X</td>
-              <td>1</td>
-              <td>C</td>
-            </tr>
-            <tr>
-              <td>Misc</td>
-              <td>NetFront 3.1</td>
-              <td>Embedded devices</td>
-              <td>-</td>
-              <td>C</td>
-            </tr>
-            <tr>
-              <td>Misc</td>
-              <td>NetFront 3.4</td>
-              <td>Embedded devices</td>
-              <td>-</td>
-              <td>A</td>
-            </tr>
-            <tr>
-              <td>Misc</td>
-              <td>Dillo 0.8</td>
-              <td>Embedded devices</td>
-              <td>-</td>
-              <td>X</td>
-            </tr>
-            <tr>
-              <td>Misc</td>
-              <td>Links</td>
-              <td>Text only</td>
-              <td>-</td>
-              <td>X</td>
-            </tr>
-            <tr>
-              <td>Misc</td>
-              <td>Lynx</td>
-              <td>Text only</td>
-              <td>-</td>
-              <td>X</td>
-            </tr>
-            <tr>
-              <td>Misc</td>
-              <td>IE Mobile</td>
-              <td>Windows Mobile 6</td>
-              <td>-</td>
-              <td>C</td>
-            </tr>
-            <tr>
-              <td>Misc</td>
-              <td>PSP browser</td>
-              <td>PSP</td>
-              <td>-</td>
-              <td>C</td>
-            </tr>
-            <tr>
-              <td>Other browsers</td>
-              <td>All others</td>
-              <td>-</td>
-              <td>-</td>
-              <td>U</td>
+              <td>{{ $datas->caseid }}</td>
+              <td>{{ $datas->nim }} </td>
+              <td>{{ $datas->dpu_nama_gelar }}</td>
+              <td>{{ $datas->dpa_nama_gelar }}</td>
+              <td><button class="btn btn-primary" data-toggle="modal" data-target="#LY{{ $datas->id }}" >Details</button> | <button class="btn btn-success">Terima</button> | <button class="btn btn-danger">Tolak</button></td>
             </tr>
+            <div class="modal fade" id="LY{{$datas->id}}">
+              <div class="modal-dialog modal-lg">
+                <div class="modal-content">
+                  <div class="modal-header">
+                    <h4 class="modal-title">Details Data <b>{{ $datas->caseid }}</b></h4>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                      <span aria-hidden="true">&times;</span>
+                    </button>
+                  </div>
+                  <div class="modal-body">
+                  <div class="row">
+                    <div class="col">
+                      <label for="nim">NIM:</label>
+                      <input type="text" class="form-control form-control-border" readonly value="{{ $datas->nim }}">
+                      <label for="nama">Nama Mahasiswa:</label>
+                      <input type="text" class="form-control form-control-border" readonly value="{{ $datas->nama }}">
+                      <label for="dosen_dpu">Dosen DPU: {{ $datas->ttd_dpu === '-' ? 'Belum Tanda Tangan' : 'Telah TTD Pada '.$datas->ttd_dpu }}</label>
+                      <input type="text" class="form-control form-control-border" readonly value="{{ $datas->dpu_nama_gelar }}">
+                      <label for="dosen_dpa">Dosen DPA: {{ $datas->ttd_dpa === '-' ? 'Belum Tanda Tangan' : 'Telah TTD Pada '.$datas->ttd_dpa }}</label>
+                      <input type="text" class="form-control form-control-border" readonly value="{{ $datas->dpa_nama_gelar }}">
+                      <label for="dosen_kombi">Kombi: </label>
+                      <input type="text" class="form-control form-control-border" readonly value="{{ $datas->ttd_kombi === '-' ? 'Belum Tanda Tangan' : 'Telah TTD Pada '.$datas->ttd_kombi }}">
+                      <label for="file_transkrip">Lihat File Transkrip:</label>
+                      <a href="{{asset('storage')}}/{{ $datas->nim }}/{{ $datas->bukti_transkrip_nilai }}" target="_blank"><input type="text" class="form-control form-control-border" readonly value="Klik Disini"></a>
+                    </div>
+                  </div>
+                  </div>
+                  <div class="modal-footer justify-content-between">
+                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+                  </form>
+                  </div>
+                </div>
+                <!-- /.modal-content -->
+              </div>
+              <!-- /.modal-dialog -->
+            </div>
+            @endforeach
             </tbody>
             <tfoot>
-            <tr>
-              <th>Rendering engine</th>
-              <th>Browser</th>
-              <th>Platform(s)</th>
-              <th>Engine version</th>
-              <th>CSS grade</th>
-            </tr>
+              <tr>
+                <th>CaseID</th>
+                <th>NIM</th>
+                <th>DPU</th>
+                <th>DPA</th>
+                <th>Action</th>
+              </tr>
             </tfoot>
           </table>
         </div>
@@ -503,6 +143,7 @@
             }
         },"csv", "excel", "pdf", "print", "colvis"]
     }).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');
+
   });
 </script>
 @endpush
diff --git a/resources/views/layanan-dpudpa/tambah.blade.php b/resources/views/layanan-dpudpa/tambah.blade.php
index 9c7e31c..0bfd852 100644
--- a/resources/views/layanan-dpudpa/tambah.blade.php
+++ b/resources/views/layanan-dpudpa/tambah.blade.php
@@ -12,12 +12,54 @@
       </div>
       <!-- /.card-header -->
       <div class="card-body">
+        @if ($errors->any())
+            <div class="alert alert-danger">
+              <ul>
+                @foreach ($errors->all() as $error )
+                  <li>{{ $error }}</li>
+                @endforeach
+              </ul>
+            </div>
+          @endif
+          @if(session('success'))
+          <div class="alert alert-success">
+            <ul>
+                <li>{{ session('success') }}</li>
+            </ul>
+          </div>
+          @endif
+          @if(session('error'))
+          <div class="alert alert-danger">
+            <ul>
+                <li>{{ session('error') }}</li>
+            </ul>
+          </div>
+          @endif
+        <form action="{{ route('layanan-dpudpa.store') }}" method="post" enctype="multipart/form-data">
+        @csrf
         <div class="row">
           <div class="col">
             <label for="nim">NIM Mahasiswa</label>
-            <input type="text" name="nim" id="nim" class="form-control" placeholder="Masukkan NIM Mahasiswa">
+            <input type="text" name="nim" id="nim" class="form-control" placeholder="Masukkan NIM Mahasiswa" value="{{old('nim')}}" required>
             <label for="nama">Nama Mahasiswa</label>
-            <input type="text" name="nama" id="nama" class="form-control" placeholder="Masukkan Nama Mahasiswa">
+            <input type="text" name="nama" id="nama" class="form-control" placeholder="Masukkan Nama Mahasiswa" value="{{old('nama')}}"  required>
+            <label for="nomor_hp">Nomor Handphone Mahasiswa (WhatsApp)</label>
+            <input type="text" name="nomor_hp" id="nomor_hp" class="form-control" placeholder="Masukkan Nomor Handphone Mahasiswa (WhatsApp)" value="{{old('nomor_hp')}}" required>
+            <label for="email">Email Mahasiswa</label>
+            <input type="text" name="email" id="email" class="form-control" placeholder="Masukkan Email Mahasiswa" value="{{old('email')}}" required>
+            <label for="bagian">Bagian Lab:</label>
+              <select class="form-control select2" style="width: 100%;" id="bagian" name="bagian">
+                <option selected>Pilih Laboratorium</option>
+                <option value="1">Farmasi Klinik Dan Komunitas</option>
+                <option value="2">Farmakologi Dan Hewan Coba</option>
+                <option value="3">Farmakognosi dan Fitokimia</option>
+                <option value="4">Mikrobiologi dan Bioteknologi Farmasi</option>
+                <option value="5">Farmasetika</option>
+                <option value="6">Teknologi Farmasi</option>
+                <option value="7">Kimia Analisis</option>
+                <option value="8">Kimia Medisinal</option>
+                                                
+              </select>
           </div>
           <!-- /.col -->
         </div>
@@ -25,15 +67,24 @@
         <div class="row">
           <div class="col">
             <div class="form-group">
-              <label>Dosen Pembimbing Utama</label>
-              <select class="form-control select2" style="width: 100%;">
-                <option selected>Pilih Dosen</option>
-                <option>Alaska</option>
-                <option>California</option>
-                <option>Delaware</option>
-                <option>Tennessee</option>
-                <option>Texas</option>
-                <option>Washington</option>
+              <label for="dosen_dpu">Dosen Pembimbing Utama</label>
+              <select class="form-control select2" style="width: 100%;" id="dosen_dpu" name="dosen_dpu">
+                <option selected>Pilih Dosen Pembimbing Utama</option>
+                @foreach ($dosen as $item)
+                <option value="{{$item->id}}" {{ old('dosen_dpu') === $item->id ? 'selected' : '' }}>{{ $item->nama_gelar }}</option>
+                @endforeach
+              </select>
+            </div>
+            <!-- /.form-group -->
+          </div>
+          <div class="col">
+            <div class="form-group">
+              <label for="dosen_dpa">Dosen Pembimbing Anggota</label>
+              <select class="form-control select2" style="width: 100%;" id="dosen_dpa" name="dosen_dpa">
+                <option>Pilih Dosen Pembimbing Anggota</option>
+                @foreach ($dosen as $item)
+                <option value="{{$item->id}}" {{ old('dosen_dpa') === $item->id ? 'selected' : '' }}>{{ $item->nama_gelar }}</option>
+                @endforeach
               </select>
             </div>
             <!-- /.form-group -->
@@ -41,10 +92,20 @@
           <!-- /.col -->
         </div>
         <!-- /.row -->
-      </div>
-      <!-- /.card-body -->
-      <div class="card-footer">
-        .
+        <div class="row">
+          <div class="col">
+            <label for="judul_seminar_proposal">Judul Skripsi / Tugas Akhir</label>
+            <input type="text" name="judul_seminar_proposal" id="judul_seminar_proposal" class="form-control" placeholder="Masukkan Judul Skripsi / Tugas Akhir yang Diajukan" value="{{old('judul_seminar_proposal')}}" required>
+            <label for="file_transkrip">Transkrip Nilai (*File Bertentuk PDF, Dan Ukuran Maksimal file :4Mb)</label>
+            <input type="file" name="file_transkrip" id="file_transkrip" class="form-control" required>
+          </div>
+        </div>
+        <div class="row">
+          <div class="col py-3">
+            <button type="submit" class="btn btn-primary">Submit</button>
+          </div>
+        </div>
+      </form>
       </div>
     </div>
     <!-- /.card -->
diff --git a/resources/views/layout/app_guest.blade.php b/resources/views/layout/app_guest.blade.php
index 2057301..2e10407 100644
--- a/resources/views/layout/app_guest.blade.php
+++ b/resources/views/layout/app_guest.blade.php
@@ -3,7 +3,7 @@
 <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <title>AdminLTE 3 | Advanced form elements</title>
+  <title>{{ $title }}</title>
 
   <!-- Google Font: Source Sans Pro -->
   <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
@@ -30,9 +30,9 @@
   <!-- Main Sidebar Container -->
   <aside class="main-sidebar sidebar-dark-primary elevation-4">
     <!-- Brand Logo -->
-    <a href="{{asset('/')}}index3.html" class="brand-link">
+    <a href="#" class="brand-link">
       <img src="{{asset('/')}}dist/img/AdminLTELogo.png" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8">
-      <span class="brand-text font-weight-light">AdminLTE 3</span>
+      <span class="brand-text font-weight-light">PINTU</span>
     </a>
 
     <!-- Sidebar -->
diff --git a/resources/views/layout/navbars/sidebar.blade.php b/resources/views/layout/navbars/sidebar.blade.php
index bf1f2f9..46031d8 100644
--- a/resources/views/layout/navbars/sidebar.blade.php
+++ b/resources/views/layout/navbars/sidebar.blade.php
@@ -4,7 +4,7 @@
     <!-- Brand Logo -->
     <a href="#" class="brand-link">
       <img src="{{ asset('/') }}dist/img/AdminLTELogo.png" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8">
-      <span class="brand-text font-weight-light">AdminLTE 3</span>
+      <span class="brand-text font-weight-light">PINTU</span>
     </a>
 
     <!-- Sidebar -->
@@ -15,7 +15,7 @@
           <img src="{{ asset('/') }}dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image">
         </div>
         <div class="info">
-          <a href="#" class="d-block">Alexander Pierce</a>
+          <a href="#" class="d-block">{{ Auth::user()->nama_depan }} {{ Auth::user()->nama_belakang }}</a>
         </div>
       </div>
 
@@ -53,7 +53,8 @@
               </p>
             </a>
           </li>
-          <li class="nav-header">Administrasi</li>
+          <li class="nav-header">ADMINISTRASI</li>
+          @role('Super Administrator')
           <li class="nav-item">
             <a href="{{ route('users.index') }}" class="nav-link {{ Request::is('admin/users') ? 'active' : '' }}">
               <i class="nav-icon fas fa-users"></i>
@@ -70,6 +71,7 @@
               </p>
             </a>
           </li>
+          @endrole
           <li class="nav-item">
             <a href="{{ route('mahasiswa.index') }}" class="nav-link {{ Request::is('admin/mahasiswa') ? 'active' : '' }}">
               <i class="nav-icon fas fa-user-graduate"></i>
@@ -79,6 +81,18 @@
             </a>
           </li>
         </ul>
+
+        <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
+          <li class="nav-header">Lainnya</li>
+          <li class="nav-item">
+            <a href="{{ route('admin.logout') }}" class="nav-link">
+              <i class="nav-icon fas fa-power-off"></i>
+              <p>
+                Logout
+              </p>
+            </a>
+          </li>
+        </ul>
       </nav>
       <!-- /.sidebar-menu -->
     </div>
diff --git a/resources/views/mahasiswa/index.blade.php b/resources/views/mahasiswa/index.blade.php
index 8760f37..d0b1708 100644
--- a/resources/views/mahasiswa/index.blade.php
+++ b/resources/views/mahasiswa/index.blade.php
@@ -20,7 +20,7 @@
           </div>
           <div class="col-sm-6">
             <ol class="breadcrumb float-sm-right">
-              <li class="breadcrumb-item"><a href="#">Admin</a></li>
+              <li class="breadcrumb-item"><a href="{{ route('admin.dashboard') }}">Admin</a></li>
               <li class="breadcrumb-item active">Manajemen Mahasiswa</li>
             </ol>
           </div>
@@ -93,7 +93,9 @@
                     <div class="row">
                       <div class="col">
                         <form action="{{ route('mahasiswa.update')}}" method="post">
+                          @method('PUT')
                           @csrf
+                        <input type="hidden" name="id" value="{{$users->id}}">
                         <label for="nim">NIM</label>
                         <input type="text" name="nim" id="nim" class="form-control form-control-sm" placeholder="Masukkan NIM Mahasiswa" value="{{ $users->nim }}">
                         <label for="nama">Nama</label>
@@ -200,10 +202,10 @@
                   <div class="modal-body">
                     <div class="row">
                       <div class="col">
-                        <form action="{{ route('users.destroy')}}" method="post">
+                        <form action="{{ route('mahasiswa.destroy')}}" method="post">
                           @csrf
                           @method('DELETE')
-                        Anda Yakin ingin Menghapus Data ini ?
+                          Anda Yakin ingin Menghapus Data ini ?
                         <input type="hidden" name="id" id="id" value="{{$users->id}}">
                       </div>
                       <!-- /.col -->
@@ -375,26 +377,9 @@
   $(function () {
     $("#example1").DataTable({
       "responsive": true, "lengthChange": false, "autoWidth": false,
-      // "buttons": [{
-      //       // New button configuration
-      //       text: 'Tambah Data', // Replace with your desired button text
-      //       action: function ( e, dt, node, config ) {
-      //           // Perform your custom action here, e.g., open a new tab with the external link
-      //           window.location.href = "#tambahUser";
-      //       }
-      //   }
-      //   ,"csv", "excel", "pdf", "print", "colvis"
-      // ]
-    }).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');
+    }).container().appendTo('#example1_wrapper .col-md-6:eq(0)');
     $('.select2').select2();
   });
 </script>
-<!-- Select2 -->
-
-<script>
-  $(function () {
-    //Initialize Select2 Elements
-    
-  });
 @endpush
 
diff --git a/resources/views/user/index.blade.php b/resources/views/user/index.blade.php
index 6757018..9e7c997 100644
--- a/resources/views/user/index.blade.php
+++ b/resources/views/user/index.blade.php
@@ -20,7 +20,7 @@
           </div>
           <div class="col-sm-6">
             <ol class="breadcrumb float-sm-right">
-              <li class="breadcrumb-item"><a href="#">Admin</a></li>
+              <li class="breadcrumb-item"><a href="{{ route('admin.dashboard') }}">Admin</a></li>
               <li class="breadcrumb-item active">Manajemen User</li>
             </ol>
           </div>
@@ -73,7 +73,11 @@
               <td>{{ $users->nip }}</td>
               <td>{{ $users->nama_gelar }}</td>
               <td>{{ $users->email }}</td>
-              <td>{{ $users->nama_roles }}</td>
+              <td>
+                @foreach ($users->roles as $role)
+                | {{ $role->name }} 
+                @endforeach
+              </td>
               <td class="text-center">
                 <button class="btn btn-sm btn-success" data-toggle="modal" data-target="#user{{$users->id}}">Edit</button> | 
                 <button class="btn btn-sm btn-danger" data-toggle="modal" data-target="#userdestroy{{$users->id}}">Hapus</button></td>
@@ -94,26 +98,19 @@
                         <form action="{{ route('users.update')}}" method="post">
                         @csrf
                         @method('PUT')
-                        <input type="hidden" name="id" id="id" value="{{$users->id}}">
+                        <input type="hidden" name="id" id="id" value="{{$users->id}}" required>
                         <label for="nip">NIP</label>
-                        <input type="text" name="nip" id="nip" class="form-control" placeholder="Masukkan NIP Dosen" value="{{ $users->nip }}">
+                        <input type="text" name="nip" id="nip" class="form-control" placeholder="Masukkan NIP Dosen" value="{{ $users->nip }}" required>
                         <label for="nama_depan">Nama Depan</label>
-                        <input type="text" name="nama_depan" id="nama_depan" class="form-control" placeholder="Masukkan Nama Depan"  value="{{ $users->nama_depan }}">
+                        <input type="text" name="nama_depan" id="nama_depan" class="form-control" placeholder="Masukkan Nama Depan"  value="{{ $users->nama_depan }}" required>
                         <label for="nama_belakang">Nama Belakang</label>
-                        <input type="text" name="nama_belakang" id="nama_belakang" class="form-control" placeholder="Masukkan Nama Belakang" value="{{ $users->nama_belakang }}">
+                        <input type="text" name="nama_belakang" id="nama_belakang" class="form-control" placeholder="Masukkan Nama Belakang" value="{{ $users->nama_belakang }}" required>
                         <label for="nama_gelar">Nama Lengkap Dengan Gelar</label>
-                        <input type="text" name="nama_gelar" id="nama_gelar" class="form-control" placeholder="Masukkan Nama Lengkap Dengan Gelar" value="{{ $users->nama_gelar }}">
+                        <input type="text" name="nama_gelar" id="nama_gelar" class="form-control" placeholder="Masukkan Nama Lengkap Dengan Gelar" value="{{ $users->nama_gelar }}" required>
                         <label for="Email">Email</label>
-                        <input type="email" name="email" id="Email" class="form-control" placeholder="Masukkan Email" value="{{ $users->email }}">
+                        <input type="email" name="email" id="Email" class="form-control" placeholder="Masukkan Email" value="{{ $users->email }}" required>
                         <label for="ettd">Kode E-TTD</label>
-                        <input type="text" name="ettd" id="ettd" class="form-control" placeholder="Masukkan Kode E-TTD" value="{{ $users->ettd }}">
-                        <label for="user_roles_id">Role User</label>
-                        <select name="user_roles_id" id="user_roles_id" class="form-control">
-                          <option>Pilih Role User</option>
-                          @foreach($role as $roles)
-                          <option value="{{$roles->id}}" {{ $users->user_roles_id === $roles->id ? 'selected' : '' }}>{{$roles->nama}}</option>
-                          @endforeach
-                        </select>
+                        <input type="text" name="ettd" id="ettd" class="form-control" placeholder="Masukkan Kode E-TTD" value="{{ $users->ettd }}" required>
                       </div>
                       <!-- /.col -->
                     </div>
@@ -197,24 +194,17 @@
                   <form action="{{ route('users.store')}}" method="post">
                   @csrf
                   <label for="nip">NIP</label>
-                  <input type="text" name="nip" id="nip" class="form-control" placeholder="Masukkan NIP Dosen" value="{{ old('nip')}}">
+                  <input type="text" name="nip" id="nip" class="form-control" placeholder="Masukkan NIP Dosen" value="{{ old('nip')}}" required>
                   <label for="nama_depan">Nama Depan</label>
-                  <input type="text" name="nama_depan" id="nama_depan" class="form-control" placeholder="Masukkan Nama Depan"  value="{{ old('nama_depan')}}">
+                  <input type="text" name="nama_depan" id="nama_depan" class="form-control" placeholder="Masukkan Nama Depan"  value="{{ old('nama_depan')}}" required>
                   <label for="nama_belakang">Nama Belakang</label>
-                  <input type="text" name="nama_belakang" id="nama_belakang" class="form-control" placeholder="Masukkan Nama Belakang" value="{{ old('nama_belakang')}}">
+                  <input type="text" name="nama_belakang" id="nama_belakang" class="form-control" placeholder="Masukkan Nama Belakang" value="{{ old('nama_belakang')}}" required>
                   <label for="nama_gelar">Nama Lengkap Dengan Gelar</label>
-                  <input type="text" name="nama_gelar" id="nama_gelar" class="form-control" placeholder="Masukkan Nama Lengkap Dengan Gelar">
+                  <input type="text" name="nama_gelar" id="nama_gelar" class="form-control" placeholder="Masukkan Nama Lengkap Dengan Gelar" required>
                   <label for="Email">Email</label>
-                  <input type="email" name="email" id="Email" class="form-control" placeholder="Masukkan Email">
+                  <input type="email" name="email" id="Email" class="form-control" placeholder="Masukkan Email" required>
                   <label for="ettd">Kode E-TTD</label>
-                  <input type="text" name="ettd" id="ettd" class="form-control" placeholder="Masukkan Kode E-TTD">
-                  <label for="user_roles_id">Role User</label>
-                  <select name="user_roles_id" id="user_roles_id" class="form-control">
-                    <option selected>Pilih Role User</option>
-                    @foreach($role as $roles)
-                    <option value="{{$roles->id}}">{{$roles->nama}}</option>
-                    @endforeach
-                  </select>
+                  <input type="text" name="ettd" id="ettd" class="form-control" placeholder="Masukkan Kode E-TTD" required>
                 </div>
                 <!-- /.col -->
               </div>
diff --git a/resources/views/user/user_roles_index.blade.php b/resources/views/user/user_roles_index.blade.php
index bc666d7..717a316 100644
--- a/resources/views/user/user_roles_index.blade.php
+++ b/resources/views/user/user_roles_index.blade.php
@@ -9,19 +9,19 @@
 <!-- Add Content Here -->
 @section('content')
 <!-- Include Sidebar -->
-@include('layout.navbars.sidebar', ['title' => 'Layanan Akademik'])
+@include('layout.navbars.sidebar')
 <div class="content-wrapper">
     <!-- Main content -->
     <section class="content-header">
       <div class="container-fluid">
         <div class="row mb-2">
           <div class="col-sm-6">
-            <h1>Blank Page</h1>
+            <h1>Manajemen User</h1>
           </div>
           <div class="col-sm-6">
             <ol class="breadcrumb float-sm-right">
-              <li class="breadcrumb-item"><a href="#">Home</a></li>
-              <li class="breadcrumb-item active">Blank Page</li>
+              <li class="breadcrumb-item"><a href="{{ route('admin.dashboard') }}">Admin</a></li>
+              <li class="breadcrumb-item active">Manajemen User</li>
             </ol>
           </div>
         </div>
@@ -43,10 +43,34 @@
           </div>
         </div>
         <div class="card-body">
+          @if ($errors->any())
+            <div class="alert alert-danger">
+              <ul>
+                @foreach ($errors->all() as $error )
+                  <li>{{ $error }}</li>
+                @endforeach
+              </ul>
+            </div>
+          @endif
+          @if(session('success'))
+          <div class="alert alert-success">
+            <ul>
+                <li>{{ session('success') }}</li>
+            </ul>
+          </div>
+          @endif
+          @if(session('error'))
+          <div class="alert alert-danger">
+            <ul>
+                <li>{{ session('error') }}</li>
+            </ul>
+          </div>
+          @endif
+          <button class="btn btn-primary" data-toggle="modal" data-target="#modal-default">Tambah Data</button>
           <table id="example1" class="table table-bordered table-striped">
             <thead>
             <tr>
-              <th>ID</th>
+              <th>No</th>
               <th>Nama Role User</th>
               <th>Action</th>
             </tr>
@@ -54,10 +78,81 @@
             <tbody>
             @foreach ($data as $datas)
             <tr>
-              <td>{{ $datas->id }}</td>
-              <td>{{ $datas->nama }}</td>
-              <td class="text-center"><button class="btn btn-sm btn-success">Edit</button> | <button class="btn btn-sm btn-danger">Hapus</button></td>
+              <td>{{ $loop->iteration }}</td>
+              <td>{{ $datas->name }}</td>
+              <td class="text-center"><button class="btn btn-success" data-toggle="modal" data-target="#modal{{ $loop->iteration }}">Edit</button> | <button class="btn btn-primary" data-toggle="modal" data-target="#assign{{ $loop->iteration }}">Assign Roles</button>
             </tr>
+            <div class="modal fade" id="modal{{ $loop->iteration }}">
+              <div class="modal-dialog">
+                <div class="modal-content">
+                  <div class="modal-header">
+                    <h4 class="modal-title">Edit Nama Roles</h4>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                      <span aria-hidden="true">&times;</span>
+                    </button>
+                  </div>
+                  <div class="modal-body">
+                    <div class="row">
+                      <div class="col">
+                        <form action="#" method="post">
+                        @csrf
+                        <label for="role_name">Nama Role:</label>
+                        <input type="text" name="role_name" id="role_name" class="form-control" placeholder="Masukkan nama Role" value="{{ $datas->name }}" required>
+                      </div>
+                      <!-- /.col -->
+                    </div>
+                  </div>
+                  <div class="modal-footer justify-content-between">
+                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+                    <button type="submit" class="btn btn-primary">Tambah</button>
+                  </form>
+                  </div>
+                </div>
+                <!-- /.modal-content -->
+              </div>
+              <!-- /.modal-dialog -->
+            </div>
+            <div class="modal fade" id="assign{{ $loop->iteration }}">
+              <div class="modal-dialog modal-lg">
+                <div class="modal-content">
+                  <div class="modal-header">
+                    <h4 class="modal-title">Assign <b>{{ $datas->name }}</b>  Ke:</h4>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                      <span aria-hidden="true">&times;</span>
+                    </button>
+                  </div>
+                  <div class="modal-body">
+                    <div class="row">
+                      <div class="col">
+                        <form action="{{ route('users-roles.assign')}}" method="post">
+                        @csrf
+                        <input type="hidden" name="roles_user" value="{{ $datas->name }}">
+                        <label class="col-form-label">User: </label>
+                        <div class="form-check">
+                          <input type="checkbox" class="form-check-input" id="checkAll">
+                          <label for="checkAll" class="form-check-label">Check All</label>
+                        </div>
+                        @foreach ($user as $users)
+                        <div class="form-check">
+                          <input type="checkbox" class="itemCheckbox form-check-input" name="checkboxes[]" value="{{$users->id}}">
+                          <label for="{{$users->id}}" class="form-check-label">{{ $users->nama_gelar }}</label>
+                        </div>
+                        @endforeach
+                        </select>
+                      </div>
+                      <!-- /.col -->
+                    </div>
+                  </div>
+                  <div class="modal-footer justify-content-between">
+                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+                    <button type="submit" class="btn btn-primary">Tambah</button>
+                  </form>
+                  </div>
+                </div>
+                <!-- /.modal-content -->
+              </div>
+              <!-- /.modal-dialog -->
+            </div>
             @endforeach
             </tbody>
             <tfoot>
@@ -76,6 +171,37 @@
         <!-- /.card-footer-->
       </div>
       <!-- /.card -->
+      <!-- /.Modal ADD DATA -->
+      <div class="modal fade" id="modal-default">
+        <div class="modal-dialog">
+          <div class="modal-content">
+            <div class="modal-header">
+              <h4 class="modal-title">Tambah Data</h4>
+              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                <span aria-hidden="true">&times;</span>
+              </button>
+            </div>
+            <div class="modal-body">
+              <div class="row">
+                <div class="col">
+                  <form action="{{ route('users-roles.store') }}" method="post">
+                  @csrf
+                  <label for="role_name">Nama Role:</label>
+                  <input type="text" name="role_name" id="role_name" class="form-control" placeholder="Masukkan nama Role" value="{{ old('role_name')}}" required>
+                </div>
+                <!-- /.col -->
+              </div>
+            </div>
+            <div class="modal-footer justify-content-between">
+              <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+              <button type="submit" class="btn btn-primary">Tambah</button>
+            </form>
+            </div>
+          </div>
+          <!-- /.modal-content -->
+        </div>
+        <!-- /.modal-dialog -->
+      </div>
     </section>
     <!-- /.content -->
 </div>
@@ -101,17 +227,23 @@
   $(function () {
     $("#example1").DataTable({
       "responsive": true, "lengthChange": false, "autoWidth": false,
-      "buttons": [{
-            // New button configuration
-            text: 'Tambah Data', // Replace with your desired button text
-            action: function ( e, dt, node, config ) {
-                // Perform your custom action here, e.g., open a new tab with the external link
-                window.location.href = "#tambahUser";
-            }
-        }
-        //,"csv", "excel", "pdf", "print", "colvis"
-      ]
-    }).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');
+    }).container().appendTo('#example1_wrapper .col-md-6:eq(0)');
+    //checkAll button
+  });
+  const checkAll = document.getElementById('checkAll');
+  const itemCheckboxes = document.querySelectorAll('.itemCheckbox');
+
+  checkAll.addEventListener('change', function() {
+    for (const checkbox of itemCheckboxes) {
+      checkbox.checked = this.checked;
+    }
+  });
+
+  // Optionally, update the "Check All" text based on checked items:
+  itemCheckboxes.forEach(checkbox => {
+    checkbox.addEventListener('change', function() {
+      checkAll.checked = [...itemCheckboxes].every(box => box.checked);
+    });
   });
 </script>
 @endpush
diff --git a/routes/web.php b/routes/web.php
index 9634e7c..9f51ce1 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -7,6 +7,7 @@
 use App\Http\Controllers\UserController;
 use App\Http\Controllers\LayananPengajuanDpuDpaController;
 use App\Http\Controllers\MahasiswaController;
+use App\Http\Controllers\SesiLoginController;
 
 /*
 |--------------------------------------------------------------------------
@@ -19,23 +20,39 @@
 |
 */
 
-Route::group(['prefix' => 'admin'], function () {
-    Route::get('/', [AdminController::class, 'index'])->name('admin.dashboard');
-    Route::get('/layanan-dpudpa', [LayananPengajuanDpuDpaController::class, 'index'])->name('layanan-dpudpa.index');
+Route::get('/layanan-dpudpa/tambah', [LayananPengajuanDpuDpaController::class, 'tambah'])->name('layanan-dpudpa.tambah');
+Route::post('/layanan-dpudpa/tambah', [LayananPengajuanDpuDpaController::class, 'store'])->name('layanan-dpudpa.store');
+
+
+Route::middleware(['guest'])->group(function () {
+    route::get('/admin/login',[SesiLoginController::class, 'login'])->name('login');
+    route::post('/admin/login',[SesiLoginController::class, 'ceklogin'])->name('admin.ceklogin');
+
+    
+});
+
+Route::get('/home', function(){
+    return redirect('/admin');
+});
+
+Route::middleware(['auth'])->group( function () {
+    Route::get('/admin', [AdminController::class, 'index'])->name('admin.dashboard');
+    Route::get('/admin/logout', [SesiLoginController::class, 'logout'])->name('admin.logout');
+    Route::get('/admin/layanan-dpudpa', [LayananPengajuanDpuDpaController::class, 'index'])->name('layanan-dpudpa.index');
     //User
-    Route::get('/users', [UserController::class, 'index'])->name('users.index');
-    Route::POST('/users', [UserController::class, 'store'])->name('users.store');
-    Route::PUT('/users', [UserController::class, 'update'])->name('users.update');
-    Route::DELETE('/users', [UserController::class, 'destroy'])->name('users.destroy');
+    Route::get('/admin/users', [UserController::class, 'index'])->name('users.index');
+    Route::POST('/admin/users', [UserController::class, 'store'])->name('users.store');
+    Route::PUT('/admin/users', [UserController::class, 'update'])->name('users.update');
+    Route::DELETE('/admin/users', [UserController::class, 'destroy'])->name('users.destroy');
     //Mahasiswa
-    Route::get('/mahasiswa', [MahasiswaController::class, 'index'])->name('mahasiswa.index');
-    Route::POST('/mahasiswa', [MahasiswaController::class, 'store'])->name('mahasiswa.store');
-    Route::PUT('/mahasiswa', [MahasiswaController::class, 'update'])->name('mahasiswa.update');
-    Route::DELETE('/mahasiswa', [MahasiswaController::class, 'destroy'])->name('mahasiswa.destroy');
+    Route::get('/admin/mahasiswa', [MahasiswaController::class, 'index'])->name('mahasiswa.index');
+    Route::POST('/admin/mahasiswa', [MahasiswaController::class, 'store'])->name('mahasiswa.store');
+    Route::PUT('/admin/mahasiswa', [MahasiswaController::class, 'update'])->name('mahasiswa.update');
+    Route::DELETE('/admin/mahasiswa', [MahasiswaController::class, 'destroy'])->name('mahasiswa.destroy');
     //User Roles
-    Route::get('/users-roles', [UserController::class, 'userroles_index'])->name('users-roles.index');
+    Route::get('/admin/users-roles', [UserController::class, 'userroles_index'])->name('users-roles.index');
+    Route::POST('/admin/users-roles', [UserController::class, 'userroles_store'])->name('users-roles.store');
+    Route::POST('/admin/users-roles/assign', [UserController::class, 'userroles_assign'])->name('users-roles.assign');
 });
 
 
-Route::get('/layanan-dpudpa/tambah', [LayananPengajuanDpuDpaController::class, 'tambah'])->name('layanan-dpudpa.tambah');
-Route::post('/layanan-dpudpa/tambah', [LayananPengajuanDpuDpaController::class, 'store'])->name('layanan-dpudpa.store');
\ No newline at end of file
diff --git a/storage/debugbar/.gitignore b/storage/debugbar/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/debugbar/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore