diff --git a/app/Constants/Links.php b/app/Constants/Links.php
index e1b51899c58f7de5d61d780b6bd4d45589de69e0..9c57b189de782b1bf192825cba6ee709550a1725 100644
--- a/app/Constants/Links.php
+++ b/app/Constants/Links.php
@@ -38,7 +38,7 @@ class Links {
   const LINK_KOTA_PENYEDIA_SWAKELOLA = "/rekap/kota"."/{id_kota}"."/satker"."/{id_satker}"."/swakelola/penyedia-swakelola";
   const LINK_KABUPATEN_PENYEDIA_SWAKELOLA = "/rekap/kabupaten"."/{id_kabupaten}"."/satker"."/{id_satker}"."/swakelola/penyedia-swakelola";
 
-  const LINK_UNDUH_PAKET_RUP = "/unduh/paketRUP";
+  const LINK_UNDUH_PAKET_RUP = "/unduh/paketRUP"."/{satker_id}";
   const LINK_UNDUH_PAKET_RUP_PDF = "/unduh/paketRUP/{satker}/download";
   const LINK_UNDUH_MATERI = "/unduh/materi";
 
@@ -51,7 +51,7 @@ class Links {
   const LINK_CARI_PAKET = "/search";
 
   const LINK_FIND_PAKET = "/findsearch"."/{tahun_anggaran}"."/{keyword}"."/{jenisPengadaan}"."/{metodePengadaan}";
-  const LINK_STATUS_PAKET = "/status";
+  const LINK_STATUS_PAKET = "/status"."/{satker_id}";
   const LINK_UMUMKAN_PAKET = "/status/pengumuman"."/{id_paket}";
   const LINK_KLASIFIKASI_PAKET = "/status/klasifikasi"."/{id_paket}"."/{status}"."/{jenis_paket}";
   const LINK_JENIS_PAKET = "/status/jenispaket"."/{kode_rup}";
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index ebc88fc81af614febe19e9d3c385e583b30cc0c8..f011272268cb0ca9ecd09abacd33a72dd133e723 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -6,8 +6,9 @@ use App\Http\Controllers\Controller;
 use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Facades\Validator;
 use Illuminate\Foundation\Auth\RegistersUsers;
+use Illuminate\Support\Str;
 use App\Model\User;
-
+use App\Model\Satker;
 class RegisterController extends Controller
 {
     /*
@@ -40,6 +41,10 @@ class RegisterController extends Controller
         $this->middleware('guest');
     }
 
+    public function showRegistrationForm() {
+        $satkers = Satker::all();
+        return view('auth.register', ['satkers' => $satkers]);
+    }
     /**
      * Get a validator for an incoming registration request.
      *
@@ -52,6 +57,7 @@ class RegisterController extends Controller
             'name' => ['required', 'string', 'max:255'],
             'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
             'password' => ['required', 'string', 'min:8', 'confirmed'],
+            'satker' => ['required'],
         ]);
     }
 
@@ -67,7 +73,9 @@ class RegisterController extends Controller
             'name' => $data['name'],
             'email' => $data['email'],
             'password' => Hash::make($data['password']),
+            'satker_id' => $data['satker'],
             'role' => strtolower($data['role']),
+            'api_token' => Str::random(60),
         ]);
     }
 }
diff --git a/app/Http/Controllers/CariPaket/FindPaketController.php b/app/Http/Controllers/CariPaket/FindPaketController.php
index 043911a3d09840d6f2b3cf62972f82de63802aa8..729f521d00fbd3a181ef1e0bf1b062e98230d6c0 100644
--- a/app/Http/Controllers/CariPaket/FindPaketController.php
+++ b/app/Http/Controllers/CariPaket/FindPaketController.php
@@ -84,23 +84,39 @@ class FindPaketController extends Controller
 
       if (($keyword == '') and ($jenisP == 'Semua') and ($metode == 'Semua')){
         foreach ($data as $d){
-          if ($d->$tahun == $tahunA){
+          if ($d->tahun == $tahunA){
             array_push($result, $d);
           }
         }
-        return response()->json(['result' => $result]);
+        return response()->json(['dataPaket' => $result]);
       } else {
-        if ($jenisP == 'Semua'){
-          $jenisP = '';
-        }
-
-        if ($metode == 'Semua'){
-          $metode = '';
+        if (($jenisP == 'Semua') and ($metode == 'Semua')){
+          foreach ($data as $d){
+            if ((strpos($d->paket, $keyword) > -1) and ($d->tahun == $tahunA)){
+              array_push($result, $d);
+            }
+          }
+          return response()->json(['dataPaket' => $result]);
+        } else if (($jenisP == 'Semua') and ($metode != 'Semua')){
+          foreach ($data as $d){
+            if ((strpos($d->paket, $keyword) > -1) and ($d->tahun == $tahunA) and (strpos($d->metode,$metode) > -1)){
+              array_push($result, $d);
+            }
+          }
+          return response()->json(['dataPaket' => $result]);
+        } else if (($jenisP != 'Semua') and ($metode == 'Semua')){
+          foreach ($data as $d){
+            if ((strpos($d->paket, $keyword) > -1) and ($d->tahun == $tahunA) and (strpos($d->metode,$metode) > -1)){
+              array_push($result, $d);
+            }
+          }
+          return response()->json(['dataPaket' => $result]);
         }
 
         foreach ($data as $d){
-          if (strpos($d->paket, $keyword) and ($d->$tahun == $tahunA) and strpos($d->$jenisPengadaan,$jenisP) and strpos($d->$metode,$metode))
+          if ((strpos($d->paket, $keyword) > -1) and ($d->tahun == $tahunA) and (strpos($d->jenisPengadaan,$jenisP) > -1) and (strpos($d->metode,$metode) > -1)){
             array_push($result, $d);
+          }
         }
       }
       
diff --git a/app/Http/Controllers/Status/StatusController.php b/app/Http/Controllers/Status/StatusController.php
index 2556aa54306b8df94a160e9f80c931db339a7152..0377e46fe72701e6a0668482eb0c0a1ebf6095e9 100644
--- a/app/Http/Controllers/Status/StatusController.php
+++ b/app/Http/Controllers/Status/StatusController.php
@@ -4,17 +4,15 @@ namespace App\Http\Controllers\Status;
 
 use App\Http\Controllers\Controller;
 use App\Model\Paket;
-use App\Model\PaketPenyedia;
-use App\Model\PaketSwakelola;
-use App\Model\PaketPenyediaSwakelola;
 use App\Util\PaketClass;
 use Illuminate\Http\Request;
+// use Illuminate\Support\Facades\Auth;
 
 class StatusController extends Controller
 {
 
-    public function showPaket(){
-        $pakets = Paket::get();
+    public function showPaket($m_satker_id){
+        $pakets = Paket::where('m_satker_id', $m_satker_id)->get();
 
         $paketClasses = [];
         foreach ($pakets as $paketDatum){
@@ -24,31 +22,6 @@ class StatusController extends Controller
             array_push($paketClasses, $paket);
         }
 
-        // append paket penyedia, swakelola, penyedia swakelola dg status 4 (sudah diumumkan)
-        $pakets = PaketPenyedia::get();
-        foreach ($pakets as $paketDatum){
-            $paket = new PaketClass($paketDatum->id, $paketDatum->kegiatan, $paketDatum->pid,
-                $paketDatum->nama, $paketDatum->sumber_dana, $paketDatum->lokasi, $paketDatum->deskripsi, 
-                $paketDatum->penyedia->nama, $paketDatum->pagu, $paketDatum->d_start_work, '4');
-            array_push($paketClasses, $paket);
-        }
-
-        $pakets = PaketSwakelola::get();
-        foreach ($pakets as $paketDatum){
-            $paket = new PaketClass($paketDatum->id, $paketDatum->kegiatan, $paketDatum->pid,
-                $paketDatum->nama, $paketDatum->sumber_dana, $paketDatum->lokasi, $paketDatum->deskripsi, 
-                $paketDatum->penyedia->nama, $paketDatum->pagu, $paketDatum->d_start_work, '4');
-            array_push($paketClasses, $paket);
-        }
-
-        $pakets = PaketPenyediaSwakelola::get();
-        foreach ($pakets as $paketDatum){
-            $paket = new PaketClass($paketDatum->id, $paketDatum->kegiatan, $paketDatum->pid,
-                $paketDatum->nama, $paketDatum->sumber_dana, $paketDatum->lokasi, $paketDatum->deskripsi, 
-                $paketDatum->penyedia->nama, $paketDatum->pagu, $paketDatum->d_start_work, '4');
-            array_push($paketClasses, $paket);
-        }
-
-        return response()->json(['paket' => $paketClasses]);
+        return response()->json(['paket' => $paketClasses, 'm_satker_id' => $m_satker_id]);
     }
 }
\ No newline at end of file
diff --git a/app/Http/Controllers/Unduh/PaketRUPController.php b/app/Http/Controllers/Unduh/PaketRUPController.php
index 58b00a1c471963bb31872cae1de5bf34eddf0774..10b995368ec0efc7c8fd71e9fabd9c8141bca4ec 100644
--- a/app/Http/Controllers/Unduh/PaketRUPController.php
+++ b/app/Http/Controllers/Unduh/PaketRUPController.php
@@ -11,8 +11,8 @@ use Illuminate\Http\Request;
 
 class PaketRUPController extends Controller
 {
-    public function showSatkerYear(){
-      $satkers = Satker::all();
+    public function showSatkerYear($id){
+      $satkers = Satker::where('id', $id)->get();
       $result = [];
       $tahun = [];
 
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index a3d8c48d5ab4ca4bfbd5266adcbab483ce371418..22d3e9eddc69adbcde706cacb7ff119fae802099 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -51,6 +51,7 @@ class Kernel extends HttpKernel
      * @var array
      */
     protected $routeMiddleware = [
+        'role' => \App\Http\Middleware\CheckRole::class,
         'auth' => \App\Http\Middleware\Authenticate::class,
         'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
         'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
@@ -73,6 +74,7 @@ class Kernel extends HttpKernel
         \Illuminate\Session\Middleware\StartSession::class,
         \Illuminate\View\Middleware\ShareErrorsFromSession::class,
         \App\Http\Middleware\Authenticate::class,
+        \App\Http\Middleware\CheckRole::class,
         \Illuminate\Session\Middleware\AuthenticateSession::class,
         \Illuminate\Routing\Middleware\SubstituteBindings::class,
         \Illuminate\Auth\Middleware\Authorize::class,
diff --git a/app/Http/Middleware/CheckRole.php b/app/Http/Middleware/CheckRole.php
new file mode 100644
index 0000000000000000000000000000000000000000..d5b074dd5295209a0ce731826dcb39fa0de3f0be
--- /dev/null
+++ b/app/Http/Middleware/CheckRole.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+
+class CheckRole
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next, $role)
+    {
+        if ($request->user()){
+            if ($request->ajax()) {
+                return response('Unauthorized.', 401);
+            } else {
+                return redirect('home');
+            }
+        }
+
+        return $next($request);
+    }
+}
diff --git a/app/Model/User.php b/app/Model/User.php
index 2d8d9dd220edc4eee565886980739a0133ac2855..c8b8216b24736310dd00402e2b4e0fc51d245dcb 100644
--- a/app/Model/User.php
+++ b/app/Model/User.php
@@ -16,7 +16,7 @@ class User extends Authenticatable
      * @var array
      */
     protected $fillable = [
-        'name', 'email', 'password','role'
+        'name', 'email', 'password','role', 'satker_id', 'api_token'
     ];
 
     /**
diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2019_03_21_042453_create_users_table.php
similarity index 80%
rename from database/migrations/2014_10_12_000000_create_users_table.php
rename to database/migrations/2019_03_21_042453_create_users_table.php
index b1993d3820208627d53adf4a98c3807a6317ac2f..6eb1570fcddcff30fbf0c9277c9512a292fdb592 100644
--- a/database/migrations/2014_10_12_000000_create_users_table.php
+++ b/database/migrations/2019_03_21_042453_create_users_table.php
@@ -19,8 +19,11 @@ class CreateUsersTable extends Migration
             $table->string('email')->unique();
             $table->timestamp('email_verified_at')->nullable();
             $table->string('password');
+            $table->string('api_token', 80)->unique()->nullable()->default(null);
             $table->enum('role', ['pa', 'ppk']);
             $table->rememberToken();
+            $table->unsignedBigInteger('satker_id');
+            $table->foreign('satker_id')->references('id')->on('m_satker');
             $table->timestamps();
         });
     }
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
index f957f303b2d05f3405364a03e526299f21844383..70f7db1981e019e313c017720cd8c0c371e7601b 100644
--- a/database/seeds/DatabaseSeeder.php
+++ b/database/seeds/DatabaseSeeder.php
@@ -28,7 +28,6 @@ class DatabaseSeeder extends Seeder
     public function run()
     {
         $this->call([
-            UserSeeder::class,
             TypeSeeder::class,
             KLDISeeder::class,
             ProvinsiSeeder::class,
@@ -37,6 +36,7 @@ class DatabaseSeeder extends Seeder
             PenyediaSeeder::class,
             PengadaanSeeder::class,
             SatkerSeeder::class,
+            UserSeeder::class,
             BelanjaSeeder::class,
             PokjaSeeder::class,
             JenisPaketSeeder::class,
@@ -62,8 +62,8 @@ class UserSeeder extends Seeder {
 
     public function run()
     {
-        User::create(['name' => 'test', 'email'=>'test@gmail.com', 'password'=>'test', 'role'=>'pa']);
-        User::create(['name' => 'test2', 'email'=>'test2@gmail.com', 'password'=>'test2', 'role'=>'ppk']);
+        User::create(['name' => 'test', 'email'=>'test@gmail.com', 'password'=>'test', 'satker_id' => 1, 'role'=>'pa', 'api_token' => 'asdfghjkl']);
+        User::create(['name' => 'test2', 'email'=>'test2@gmail.com', 'password'=>'test2', 'satker_id' => 3,'role'=>'ppk', 'api_token' => '12345678']);
     }
 }
 
diff --git a/resources/js/components/ModalKlasifikasiComponent.vue b/resources/js/components/ModalKlasifikasiComponent.vue
index 68901fa1ec3311577c3561882fa87e499673fbee..285604a225088ca6eb2ea71fd554f114e0594367 100644
--- a/resources/js/components/ModalKlasifikasiComponent.vue
+++ b/resources/js/components/ModalKlasifikasiComponent.vue
@@ -38,7 +38,7 @@
 
 <script>
 export default {
-  props: ['idPaket', 'namaPaket', 'title', 'status'],
+  props: ['idPaket', 'namaPaket', 'title', 'status', 'apiToken'],
   data: function() {
     return{
       item : null,
@@ -49,7 +49,8 @@ export default {
   methods: {
     klasifikasi: function(id, jenisPaket) {
       var status = this.status;
-      var url = "/api/status/klasifikasi/" + this.idPaket + "/" + status + "/" + jenisPaket;
+      var url = "/api/status/klasifikasi/" + this.idPaket + "/" + status + "/" + jenisPaket + "?api_token=" + this.apiToken;
+      
       axios
       .get(url)
       .then(response => {
diff --git a/resources/js/components/ModalPengumumanComponent.vue b/resources/js/components/ModalPengumumanComponent.vue
index a1817457c19b82e2f322d8384d77970faed40b47..bf8ab85a8d9862d28624219b18825d7ebd3cf0ce 100644
--- a/resources/js/components/ModalPengumumanComponent.vue
+++ b/resources/js/components/ModalPengumumanComponent.vue
@@ -35,7 +35,7 @@
 
 <script>
 export default {
-  props: ['idPaket', 'kegiatan', 'namaPaket'],
+  props: ['idPaket', 'kegiatan', 'namaPaket', 'apiToken'],
   data: function() {
     return{
       item : null,
@@ -44,7 +44,8 @@ export default {
   },
   methods: {
     simpan: function(id) {
-      var url = "/api/status/pengumuman/" + this.idPaket;
+      var url = "/api/status/pengumuman/" + this.idPaket + "?api_token=" + this.apiToken;
+      
       axios
       .get(url)
       .then(response => {
diff --git a/resources/js/components/NavbarComponent.vue b/resources/js/components/NavbarComponent.vue
index ad4f3808b711d27c89a4fa63a87ecda7a5ff2354..0328b3c7409ea932b7cc9fb867259c884bd90612 100644
--- a/resources/js/components/NavbarComponent.vue
+++ b/resources/js/components/NavbarComponent.vue
@@ -27,7 +27,7 @@
         <li v-bind:class="{ active: isUnduh }" class="nav-item">
           <b-nav-item-dropdown text="Unduh">
             <b-dropdown-item href="/unduh/materi">Materi</b-dropdown-item>
-            <b-dropdown-item v-if="userRole === 'pa' || userRole === 'ppk'" href="/unduh/paketRUP">Paket RUP</b-dropdown-item>
+            <b-dropdown-item v-if="userRole === 'pa' || userRole === 'ppk'" :href="'/unduh/paketRUP/'+satkerId">Paket RUP</b-dropdown-item>
           </b-nav-item-dropdown>
         </li>
         <li v-if="userRole === 'pa' || userRole === 'ppk'" class="nav-item">
@@ -35,7 +35,7 @@
             <b-dropdown-item href="#">Kelola OPD</b-dropdown-item>
             <b-dropdown-item href="#">Kelola Pengguna</b-dropdown-item>
             <b-dropdown-item href="#">Kelola Anggaran</b-dropdown-item>
-            <b-dropdown-item href="/status">Status Paket</b-dropdown-item>
+            <b-dropdown-item :href="'/status/'+satkerId">Status Paket</b-dropdown-item>
           </b-nav-item-dropdown>
         </li>
       </ul>
@@ -56,7 +56,7 @@
 <script>
 import BootstrapVue from "bootstrap-vue";
 export default {
-  props: ["isRekap", "isCariPaket", "isUnduh", "isBerita", "userName", "userRole"],
+  props: ["isRekap", "isCariPaket", "isUnduh", "isBerita", "userName", "userRole", 'satkerId'],
   mounted() {
     console.log("Navbar Component mounted.");
   }
diff --git a/resources/js/components/StatusPaketTableComponent.vue b/resources/js/components/StatusPaketTableComponent.vue
index b82f3c82c793d68881b316e453164b6b20b95b6a..3e00d5a43ee9a64abde5f0e095d23256f69acbdf 100644
--- a/resources/js/components/StatusPaketTableComponent.vue
+++ b/resources/js/components/StatusPaketTableComponent.vue
@@ -1,106 +1,160 @@
-<template> 
-<div>
-
+<template>
+  <div>
     <div style="padding: 0px 30px 0px 30px">
-        <div class="text-center" style="color: #2e3436; font-size: 21pt; text-align: center; padding-top: 15px;">    
-            Status Paket
-        </div>
-        <div style="margin-bottom: 30px">
-        </div>
+      <div
+        class="text-center"
+        style="color: #2e3436; font-size: 21pt; text-align: center; padding-top: 15px;"
+      >Status Paket</div>
+      <div style="margin-bottom: 30px"></div>
     </div>
 
     <div class="col-sm-12">
       <table class="table table-striped text-center" id="status-paket">
-          <thead>
-            <tr style="background-color: #F05155;border-bottom: 4px solid #ddd">
-                <th style="color: white" class="text-left">No</th>
-                <th style="color: white" class="text-left">Kegiatan</th>
-                <th style="color: white" class="text-left">Nama Paket</th>
-                <th class="text-left" style="color: white">Pagu (Rp.)</th>
-                <th class="text-left" style="color: white">Sumber Dana</th>
-                <th class="text-left" style="color: white">Mulai Pekerjaan</th>
-                <th class="text-left" style="color: white">D</th>
-                <th class="text-left" style="color: white">FD</th>
-                <th class="text-left" style="color: white">U</th>
-            </tr>
-          </thead>
-          <tbody>
-            <tr v-for="item in paket" :key="item.no">
-                <td class="text-left">{{item.no}}</td>
-                <td class="text-left">{{item.kegiatan}}</td>
-                <td class="text-left">{{item.namaPaket}}</td>
-                <td class="text-right">{{item.pagu}}</td>
-                <td class="text-left">{{item.sumberDana}}</td>
-                <td class="text-left">{{item.mulaiPekerjaan}}</td>
-                <td>
-                    <input v-if="item.status === '1'" :id="'klasifikasi' + item.idPaket" v-on:click="klasifikasi(item.idPaket, item.status, item.namaPaket)" type="checkbox" name="D" value="D">
-                    <input v-else type="checkbox" name="D" value="D" checked disabled>
-                </td>
-                <td>
-                    <input v-if="item.status === '1'" type="checkbox" name="FD" value="FD" disabled>
-                    <input v-else-if="item.status === '2'" :id="'finalisasi' + item.idPaket" v-on:click="finalisasi(item.idPaket, item.status, item.namaPaket, item.kodeRUP)" type="checkbox" name="FD" value="FD">
-                    <input v-else type="checkbox" name="FD" value="FD" checked disabled>
-                </td>
-                <td>
-                    <input v-if="item.status === '3'" :id="'umumkan' + item.idPaket" v-on:click="pengumuman(item.idPaket, item.namaPaket, item.kegiatan)" type="checkbox" name="U" value="U">
-                    <input v-else-if="item.status === '4'" type="checkbox" name="U" value="U" checked disabled>
-                    <input v-else type="checkbox" name="U" value="U" disabled>
-                </td>
-            </tr>
-          </tbody>
-            <modal-klasifikasi-component
-                :id="'klasifikasiModal'+idPaketModal" :idPaket="idPaketModal"
-                :namaPaket="namaPaketModal" :title="titleModal"
-                :status="statusPaket" ref="modalKlasifikasi">
-            </modal-klasifikasi-component>
+        <thead>
+          <tr style="background-color: #F05155;border-bottom: 4px solid #ddd">
+            <th style="color: white" class="text-left">No</th>
+            <th style="color: white" class="text-left">Kegiatan</th>
+            <th style="color: white" class="text-left">Nama Paket</th>
+            <th class="text-left" style="color: white">Pagu (Rp.)</th>
+            <th class="text-left" style="color: white">Sumber Dana</th>
+            <th class="text-left" style="color: white">Mulai Pekerjaan</th>
+            <th class="text-left" style="color: white">D</th>
+            <th class="text-left" style="color: white">FD</th>
+            <th class="text-left" style="color: white">U</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr v-for="item in paket" :key="item.no">
+            <td class="text-left">{{item.no}}</td>
+            <td class="text-left">{{item.kegiatan}}</td>
+            <td class="text-left">{{item.namaPaket}}</td>
+            <td class="text-right">{{item.pagu}}</td>
+            <td class="text-left">{{item.sumberDana}}</td>
+            <td class="text-left">{{item.mulaiPekerjaan}}</td>
+            <td>
+              <input v-if="userRole === 'pa'" type="checkbox" name="D" value="D" disabled>
+              <input
+                v-else-if="item.status === '1'"
+                :id="'klasifikasi' + item.idPaket"
+                v-on:click="klasifikasi(item.idPaket, item.status, item.namaPaket)"
+                type="checkbox"
+                name="D"
+                value="D"
+              >
+              <input
+                v-else-if="item.status > '1'"
+                :id="'klasifikasi' + item.idPaket"
+                type="checkbox"
+                name="D"
+                value="D"
+                checked
+                disabled
+              >
+            </td>
+            <td>
+              <input
+                v-if="item.status === '2' && userRole !== 'pa'"
+                :id="'finalisasi' + item.idPaket"
+                v-on:click="finalisasi(item.idPaket, item.status, item.namaPaket, item.kodeRUP)"
+                type="checkbox"
+                name="FD"
+                value="FD"
+              >
+              <input
+                v-else-if="item.status > '2'"
+                :id="'finalisasi' + item.idPaket"
+                type="checkbox"
+                name="FD"
+                value="FD"
+                checked 
+                disabled
+              >
+              <input v-else-if="userRole === 'pa'" type="checkbox" name="FD" value="FD" disabled>
+            </td>
+            <td>
+              <input v-if="userRole === 'ppk'" type="checkbox" name="U" value="U" disabled>
+              <input
+                v-else-if="item.status === '3'"
+                :id="'umumkan' + item.idPaket"
+                v-on:click="pengumuman(item.idPaket, item.namaPaket, item.kegiatan)"
+                type="checkbox"
+                name="U"
+                value="U"
+              >
+              <input
+                v-else-if="item.status === '4'"
+                type="checkbox"
+                name="U"
+                value="U"
+                checked
+                disabled
+              >
+              <input v-else type="checkbox" name="U" value="U" disabled>
+            </td>
+          </tr>
+        </tbody>
+        <modal-klasifikasi-component
+          :id="'klasifikasiModal'+idPaketModal"
+          :idPaket="idPaketModal"
+          :namaPaket="namaPaketModal"
+          :title="titleModal"
+          :apiToken="this.apiToken"
+          :status="statusPaket"
+          ref="modalKlasifikasi"
+        ></modal-klasifikasi-component>
 
-            <modal-pengumuman-component
-                :id="'pengumumanModal'+idPaketModal" :idPaket="idPaketModal" 
-                :kegiatan="kegiatanModal" :namaPaket="namaPaketModal">
-            </modal-pengumuman-component>
-          <tfoot>
-                <tr>
-                    <th class="text-left"></th>
-                    <th class="text-left search">Kegiatan</th>
-                    <th class="text-left search">Nama Paket</th>
-                    <th class="text-right"></th>
-                    <th class="text-left search">Sumber Dana</th>
-                    <th class="text-right"></th>
-                    <th class="text-right"></th>
-                    <th class="text-right"></th>
-                    <th class="text-right"></th>
-                </tr>
+        <modal-pengumuman-component
+          :id="'pengumumanModal'+idPaketModal"
+          :idPaket="idPaketModal"
+          :kegiatan="kegiatanModal"
+          :apiToken="apiToken"
+          :namaPaket="namaPaketModal"
+        ></modal-pengumuman-component>
+        <tfoot>
+          <tr>
+            <th class="text-left"></th>
+            <th class="text-left search">Kegiatan</th>
+            <th class="text-left search">Nama Paket</th>
+            <th class="text-right"></th>
+            <th class="text-left search">Sumber Dana</th>
+            <th class="text-right"></th>
+            <th class="text-right"></th>
+            <th class="text-right"></th>
+            <th class="text-right"></th>
+          </tr>
         </tfoot>
       </table>
     </div>
-</div>
+  </div>
 </template>
 
 <script>
 export default {
-    props: ['apiLink'],
-    data: function(){
-        return {
-            paket: null,
-            idModal: null,
-            idPaketModal: null,
-            namaPaketModal: null,
-            kegiatanModal: null,
-            titleModal: null,
-            statusPaket: null
-        }
-    }, 
-    mounted: function(){
+  props: ["apiLink", "apiToken", "userRole", 'satkerId'],
+  data: function() {
+    return {
+      paket: null,
+      idModal: null,
+      idPaketModal: null,
+      namaPaketModal: null,
+      kegiatanModal: null,
+      titleModal: null,
+      statusPaket: null
+    };
+  },
+  mounted: function() {
     axios
       .get(this.apiLink)
       .then(response => {
         this.paket = response.data.paket;
       })
-      .then(()=>{
+      .then(() => {
         // Setup - add a text input to each footer cell
         $("#status-paket tfoot th.search").each(function() {
           var title = $(this).text();
-          $(this).html('<input type="text" placeholder="Search ' + title + '" />');
+          $(this).html(
+            '<input type="text" placeholder="Search ' + title + '" />'
+          );
         });
 
         // DataTable
@@ -117,93 +171,92 @@ export default {
             }
           });
         });
-      })
-    },
-    methods: {
-        pengumuman: function(id, nama, kegiatan) {
-            this.idModal = 'pengumumanModal' + id;
-            this.idPaketModal = id;
-            this.namaPaketModal = nama;
-            this.kegiatanModal = kegiatan;
-            $('#umumkan' + id).on('change', function(e){
-                if(e.target.checked){
-                    $('#pengumumanModal' + id).modal('show');
-                }
-            });
+      });
+  },
+  methods: {
+    pengumuman: function(id, nama, kegiatan) {
+      this.idModal = "pengumumanModal" + id;
+      this.idPaketModal = id;
+      this.namaPaketModal = nama;
+      this.kegiatanModal = kegiatan;
+      $("#umumkan" + id).on("change", function(e) {
+        if (e.target.checked) {
+          $("#pengumumanModal" + id).modal("show");
+        }
+      });
 
-            $('#batalUmumkan').on('click', function(e) {
-                $('#umumkan' + id).prop('checked', false);
-            });
+      $("#batalUmumkan").on("click", function(e) {
+        $("#umumkan" + id).prop("checked", false);
+      });
 
-            $('#simpanUmumkan').on('click', function(e) {
-                $('#pengumumanModal' + id).modal('hide');
-                window.location.reload();
-            });
-        },
-        klasifikasi: function(id, status, nama) {
-            this.titleModal = 'Klasifikasi Paket';
-            this.idModal = 'klasifikasiModal' + id;
-            this.idPaketModal = id;
-            this.namaPaketModal = nama;
-            this.statusPaket = status;
+      $("#simpanUmumkan").on("click", function(e) {
+        $("#pengumumanModal" + id).modal("hide");
+        window.location.reload();
+      });
+    },
+    klasifikasi: function(id, status, nama) {
+      this.titleModal = "Klasifikasi Paket";
+      this.idModal = "klasifikasiModal" + id;
+      this.idPaketModal = id;
+      this.namaPaketModal = nama;
+      this.statusPaket = status;
 
-            var instance = this;
-            $('#klasifikasi' + id).on('change', function(e){
-                if(e.target.checked){
-                    instance.$refs.modalKlasifikasi.setJenisPaket(0);
-                    $('#klasifikasiModal' + id).modal('show');
-                }
-            });
+      var instance = this;
+      $("#klasifikasi" + id).on("change", function(e) {
+        if (e.target.checked) {
+          instance.$refs.modalKlasifikasi.setJenisPaket(0);
+          $("#klasifikasiModal" + id).modal("show");
+        }
+      });
 
-            $('#batalKlasifikasi').on('click', function(e) {
-                $('#klasifikasi' + id).prop('checked', false);
-            });
+      $("#batalKlasifikasi").on("click", function(e) {
+        $("#klasifikasi" + id).prop("checked", false);
+      });
 
-            $('#simpanKlasifikasi').on('click', function(e) {
-                $('#klasifikasiModal' + id).modal('hide');
-                window.location.reload();
-            });
-        },
-        finalisasi: function(id, status, nama, kodeRUP) {
-            this.titleModal = 'Finalisasi Klasifikasi Paket';
-            this.idModal = 'finalisasiModal' + id;
-            this.idPaketModal = id;
-            this.namaPaketModal = nama;
-            this.statusPaket = status;
+      $("#simpanKlasifikasi").on("click", function(e) {
+        $("#klasifikasiModal" + id).modal("hide");
+        window.location.reload();
+      });
+    },
+    finalisasi: function(id, status, nama, kodeRUP) {
+      this.titleModal = "Finalisasi Klasifikasi Paket";
+      this.idModal = "finalisasiModal" + id;
+      this.idPaketModal = id;
+      this.namaPaketModal = nama;
+      this.statusPaket = status;
 
-            var instance = this;
-            var url = "/api/status/jenispaket/" + kodeRUP;
-            axios
-            .get(url)
-            .then(function(instance) {
-                return function(response) {
-                    var jenisPaket = response.data.jenis_paket;
-                    if ($('#finalisasi' + id).is(':checked')) {
-                        instance.$refs.modalKlasifikasi.setJenisPaket(jenisPaket);
-                        $('#klasifikasiModal' + id).modal('show');
-                    }
-                }
-            }(this))
+      var instance = this;
+      var url = "/api/status/jenispaket/" + kodeRUP;
+      axios.get(url).then(
+        (function(instance) {
+          return function(response) {
+            var jenisPaket = response.data.jenis_paket;
+            if ($("#finalisasi" + id).is(":checked")) {
+              instance.$refs.modalKlasifikasi.setJenisPaket(jenisPaket);
+              $("#klasifikasiModal" + id).modal("show");
+            }
+          };
+        })(this)
+      );
 
-            $('#batalKlasifikasi').on('click', function(e) {
-                $('#finalisasi' + id).prop('checked', false);
-            });
+      $("#batalKlasifikasi").on("click", function(e) {
+        $("#finalisasi" + id).prop("checked", false);
+      });
 
-            $('#simpanKlasifikasi').on('click', function(e) {
-                $('#klasifikasiModal' + id).modal('hide');
-                window.location.reload();
-            });
-        }
+      $("#simpanKlasifikasi").on("click", function(e) {
+        $("#klasifikasiModal" + id).modal("hide");
+        window.location.reload();
+      });
     }
-}
-
+  }
+};
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style scoped>
-    tfoot input {
-        width: 100%;
-        padding: 3px;
-        box-sizing: border-box;
-    }
+tfoot input {
+  width: 100%;
+  padding: 3px;
+  box-sizing: border-box;
+}
 </style>
\ No newline at end of file
diff --git a/resources/js/components/UnduhPaketComponent.vue b/resources/js/components/UnduhPaketComponent.vue
index 506d96fbe53f923f79d1d6f6a98b7d41dcc1c377..fc92351194d04ab93e7e881a3f6b14017bdc8eb0 100644
--- a/resources/js/components/UnduhPaketComponent.vue
+++ b/resources/js/components/UnduhPaketComponent.vue
@@ -59,7 +59,7 @@ window.onload = function(){
 }
 
 export default {
-  props: ['apiLink'],
+  props: ['apiLink', 'satkerId'],
   data: function(){
     return{
       resultData: null
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php
index 6846c4803e0ec5cb2d8b79d99872c182c40ae9b5..f705656654bef8abfeb09dbb8c68e940cb8fab4c 100644
--- a/resources/views/auth/register.blade.php
+++ b/resources/views/auth/register.blade.php
@@ -3,7 +3,7 @@
 @section('content')
 <div class="container content">
     <div class="row justify-content-center">
-        <div class="col-md-8">
+        <div class="col-md-10">
             <div class="card my-lg-5">
                 <div class="card-header">{{ __('Register') }}</div>
 
@@ -78,6 +78,24 @@
                             </div>
                         </div>
 
+                        <div class="form-group row">
+                            <label for="role" class="col-md-4 col-form-label text-md-right">{{ __('Satker') }}</label>
+
+                            <div class="col-md-6">
+                                <select name="satker">
+                                    @foreach ($satkers as $satker)
+                                        <option value="{{$satker->id}}">{{$satker->nama}}</option>
+                                    @endforeach
+                                </select> 
+
+                                @if ($errors->has('satker'))
+                                    <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $errors->first('satker') }}</strong>
+                                    </span>
+                                @endif
+                            </div>
+                        </div>
+
                         <div class="form-group row mb-0">
                             <div class="col-md-6 offset-md-4">
                                 <button type="submit" class="btn btn-primary">
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index f85a8c6f26425afecbd17501ef3473921f052e68..1df588a3b65460b17d0d82d883a3d5ad63270d97 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -10,7 +10,8 @@
             @section('navbar')
                 <navbar-component 
                 user-name="{{ (Auth::check()) ? Auth::user()->name : ''}}" 
-                user-role="{{ (Auth::check()) ? Auth::user()->role : ''}}"></navbar-component>
+                user-role="{{ (Auth::check()) ? Auth::user()->role : ''}}"
+                satker-id="{{(Auth::check()) ? Auth::user()->satker_id : ''}}"></navbar-component>
             @show
 
             <div class="container-fluid">
diff --git a/resources/views/rekap/general.blade.php b/resources/views/rekap/general.blade.php
index 3137366eb7d740c966b5133dbeeb85616f50d888..4f874e31d4662da5fcac2eb024a5d1d3763497da 100644
--- a/resources/views/rekap/general.blade.php
+++ b/resources/views/rekap/general.blade.php
@@ -1,9 +1,5 @@
 @extends('layouts.app')
 
-@section('navbar')
-<navbar-component is-rekap=true></navbar-component>
-@endsection
-
 @section('content')
 <div class="row justify-content-center">
     <div class="col-md p-0 m-0">
diff --git a/resources/views/statusPaket/status.blade.php b/resources/views/statusPaket/status.blade.php
index 1171e8256a4734cfdf0e1a2ec821a426cbe85015..f2c94d7f0a5f407e8ee693decf0668698d85f97e 100644
--- a/resources/views/statusPaket/status.blade.php
+++ b/resources/views/statusPaket/status.blade.php
@@ -4,7 +4,10 @@
 <div class="row justify-content-center">
     <div class="col-md p-0 m-0">
     <div class="jumbotron jumbotron-fluid text-center m-0">
-        <status-paket-component api-link={{$apiLink}}></status-paket-component>
+        <status-paket-component 
+        api-token = "{{ (Auth::check()) ? Auth::user()->api_token : ''}}"
+        user-role = "{{ (Auth::check()) ? Auth::user()->role : ''}}"
+        api-link={{$apiLink}} satker-id={{Auth::user()->satker_id}}></status-paket-component>
     </div>
     </div>
 </div>
diff --git a/resources/views/unduh/paketRUP.blade.php b/resources/views/unduh/paketRUP.blade.php
index e58f2e9ca979937a310f750eee0241ce6839aaad..8d092335fad5b5bd6453eee8c4edf9597f214d5e 100644
--- a/resources/views/unduh/paketRUP.blade.php
+++ b/resources/views/unduh/paketRUP.blade.php
@@ -4,7 +4,7 @@
 <div class="row justify-content-center content">
     <div class="col-md p-0 m-0">
         <div class="jumbotron jumbotron-fluid m-0">
-            <unduh-paket-component api-link="{{$apiLink}}"></unduh-paket-component>
+            <unduh-paket-component api-link="{{$apiLink}}" satker-id={{Auth::user()->satker_id}}></unduh-paket-component>
         </div>
     </div>
 </div>
diff --git a/routes/api.php b/routes/api.php
index 060b7978067ab7e0dbd6da25c7d3a7836b4db02f..05df65234a8758f9e94bead09089ee0c5da79afc 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -61,8 +61,8 @@ Route::get(Links::LINK_MODAL_PENYEDIA_SWAKELOLA, 'PenyediaSwakelola\PenyediaSwak
 Route::get(Links::LINK_UNDUH_MATERI, 'Unduh\MateriController@showMateri');
 
 Route::get(Links::LINK_STATUS_PAKET, 'Status\StatusController@showPaket');
-Route::get(Links::LINK_UMUMKAN_PAKET, 'Status\PengumumanController@classifyPaket');
-Route::get(Links::LINK_KLASIFIKASI_PAKET, 'Status\KlasifikasiController@changeStatus');
+Route::get(Links::LINK_UMUMKAN_PAKET, 'Status\PengumumanController@classifyPaket')->middleware('role:pa');
+Route::get(Links::LINK_KLASIFIKASI_PAKET, 'Status\KlasifikasiController@changeStatus')->middleware('role:ppk');
 Route::get(Links::LINK_JENIS_PAKET, 'Status\KlasifikasiController@getJenisPaket');
 Route::get(Links::LINK_MODAL_CARI_PAKET, 'CariPaket\ModalCariPaketController@showDetailPaket');
 
diff --git a/routes/web.php b/routes/web.php
index 490a852d32e7543925c9540c07709592d668b5d0..b8b030c8a4c51d8b53dc1b03093ce379c3be3804 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -136,8 +136,9 @@ Route::get(Links::LINK_DETAIL_KAB, function($id_kabupaten){
     return view('rekap.general', ['apiLink'=>$apiLink]);            
 });
 
-Route::get(Links::LINK_UNDUH_PAKET_RUP, function(){
-    return view('unduh.paketRUP', ['apiLink'=>'/api'.Links::LINK_UNDUH_PAKET_RUP]);
+Route::get(Links::LINK_UNDUH_PAKET_RUP, function($m_satker_id){
+    $apiLink = str_replace('{satker_id}',$m_satker_id,'/api'.Links::LINK_UNDUH_PAKET_RUP);
+    return view('unduh.paketRUP', ['apiLink'=> $apiLink]);        
 })->middleware('auth');
 
 Route::get(Links::LINK_UNDUH_MATERI, function(){
@@ -171,6 +172,7 @@ Route::get(Links::LINK_FIND_PAKET, function($tahunA, $keyword, $jenisP, $metode)
     return view('cariPaket.caripaket', ['apiLink'=>'/api'.Links::LINK_FIND_PAKET]);
 });
 
-Route::get(Links::LINK_STATUS_PAKET, function(){
-    return view('statusPaket.status', ['apiLink'=>'/api'.Links::LINK_STATUS_PAKET]);
+Route::get(Links::LINK_STATUS_PAKET, function($m_satker_id){
+    $apiLink = str_replace('{satker_id}',$m_satker_id,'/api'.Links::LINK_STATUS_PAKET);
+    return view('statusPaket.status', ['apiLink'=> $apiLink]);        
 })->middleware('auth');
\ No newline at end of file