From dceb46ab862b05087358e4e31976a203f158d45e Mon Sep 17 00:00:00 2001 From: "@jamaludinarifrohman6661" Date: Thu, 6 Mar 2025 16:50:13 +0700 Subject: [PATCH 1/2] change-request: add custom geo layer --- .../Controllers/Api/TourismController.php | 2 +- resources/js/data/tourisms/data-tourisms.js | 122 ++++++++++++++++-- resources/views/data/tourisms/index.blade.php | 5 +- 3 files changed, 113 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/Api/TourismController.php b/app/Http/Controllers/Api/TourismController.php index 3a20e69..5a2a50c 100644 --- a/app/Http/Controllers/Api/TourismController.php +++ b/app/Http/Controllers/Api/TourismController.php @@ -39,7 +39,7 @@ class TourismController extends Controller $tourisms->village_name = $village ? $village->village_name : null; $district = DB::table('districts')->where('district_code', $tourisms->district_code)->first(); - $tourisms->district_name = $village ? $village->village_name : null; + $tourisms->district_name = $district ? $district->district_name : null; return $tourisms; }); diff --git a/resources/js/data/tourisms/data-tourisms.js b/resources/js/data/tourisms/data-tourisms.js index 728cba1..a6a1922 100644 --- a/resources/js/data/tourisms/data-tourisms.js +++ b/resources/js/data/tourisms/data-tourisms.js @@ -3,6 +3,8 @@ import gridjs from "gridjs/dist/gridjs.umd.js"; import "gridjs/dist/gridjs.umd.js"; import GlobalConfig from "../../global-config.js"; import GeneralTable from "../../table-generator.js"; +import L from "leaflet"; +import "leaflet/dist/leaflet.css"; const dataTourismsColumns = [ "No", @@ -21,6 +23,7 @@ const dataTourismsColumns = [ widht: "120px", formatter: function (cell, row) { const id = row.cells[11].data; + const district = row.cells[4].data; const long = row.cells[9].data; const lat = row.cells[10].data; const model = "data/tourisms"; @@ -32,7 +35,7 @@ const dataTourismsColumns = [ From fbfa2a37bbc75204fe87092c4c2edcb2126a7557 Mon Sep 17 00:00:00 2001 From: "@jamaludinarifrohman6661" Date: Fri, 7 Mar 2025 14:39:46 +0700 Subject: [PATCH 2/2] feature: set role previledge access --- app/Http/Controllers/Api/UsersController.php | 1 + .../Auth/AuthenticatedSessionController.php | 2 - .../BusinessOrIndustriesController.php | 25 +++++- app/Http/Controllers/CustomersController.php | 25 +++++- .../Data/AdvertisementController.php | 25 +++++- .../Data/SpatialPlanningController.php | 26 +++++- .../Controllers/Data/TourismController.php | 24 +++++- app/Http/Controllers/Data/UmkmController.php | 24 +++++- .../Controllers/DataSettingController.php | 25 +++++- .../Controllers/Master/UsersController.php | 25 +++++- app/Http/Controllers/MenusController.php | 25 +++++- .../RequestAssignment/PbgTaskController.php | 26 +++++- app/Http/Controllers/RolesController.php | 25 +++++- .../Settings/SyncronizeController.php | 22 ++++- resources/js/business-industries/index.js | 40 ++++++--- resources/js/customers/index.js | 40 ++++++--- resources/js/data-settings/index.js | 29 +++++-- .../advertisements/data-advertisements.js | 39 +++++++-- .../spatialPlannings/data-spatialPlannings.js | 36 ++++++-- resources/js/data/tourisms/data-tourisms.js | 56 +++++++++--- resources/js/data/umkm/data-umkm.js | 37 ++++++-- resources/js/master/users/users.js | 16 +++- resources/js/menus/index.js | 42 ++++++--- resources/js/pbg-task/index.js | 20 ++++- resources/js/roles/index.js | 50 +++++++---- resources/js/table-generator.js | 9 +- .../views/business-industries/index.blade.php | 9 +- resources/views/customers/index.blade.php | 11 ++- resources/views/data-settings/index.blade.php | 9 +- .../views/data/advertisements/index.blade.php | 21 +++-- .../data/spatialPlannings/index.blade.php | 21 +++-- resources/views/data/tourisms/index.blade.php | 21 +++-- resources/views/data/umkm/index.blade.php | 21 +++-- .../views/layouts/partials/sidebar.blade.php | 85 +++++++++---------- resources/views/master/users/index.blade.php | 13 ++- resources/views/menus/index.blade.php | 9 +- resources/views/pbg_task/index.blade.php | 9 +- resources/views/roles/index.blade.php | 9 +- .../views/settings/syncronize/index.blade.php | 10 ++- 39 files changed, 739 insertions(+), 223 deletions(-) diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index da5c6f4..9dc999b 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -11,6 +11,7 @@ use App\Traits\GlobalApiResponse; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; class UsersController extends Controller { diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php index 9b638b8..4164ee6 100755 --- a/app/Http/Controllers/Auth/AuthenticatedSessionController.php +++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -38,8 +38,6 @@ class AuthenticatedSessionController extends Controller // Buat token untuk API $token = $user->createToken(env('APP_KEY'))->plainTextToken; - - // Simpan token di session (bisa digunakan di JavaScript) session(['api_token' => $token]); return redirect()->intended(RouteServiceProvider::HOME); diff --git a/app/Http/Controllers/BusinessOrIndustriesController.php b/app/Http/Controllers/BusinessOrIndustriesController.php index b2d5b92..4252c35 100644 --- a/app/Http/Controllers/BusinessOrIndustriesController.php +++ b/app/Http/Controllers/BusinessOrIndustriesController.php @@ -4,15 +4,36 @@ namespace App\Http\Controllers; use App\Models\BusinessOrIndustry; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; class BusinessOrIndustriesController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Request $request) { - return view('business-industries.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + return view('business-industries.index', compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/CustomersController.php b/app/Http/Controllers/CustomersController.php index 9c0c8ec..d7c7793 100644 --- a/app/Http/Controllers/CustomersController.php +++ b/app/Http/Controllers/CustomersController.php @@ -4,12 +4,33 @@ namespace App\Http\Controllers; use App\Models\Customer; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class CustomersController extends Controller { - public function index() + public function index(Request $request) { - return view('customers.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + + return view('customers.index', compact('creator', 'updater', 'destroyer')); } public function create() { diff --git a/app/Http/Controllers/Data/AdvertisementController.php b/app/Http/Controllers/Data/AdvertisementController.php index 8140ad2..65275f9 100644 --- a/app/Http/Controllers/Data/AdvertisementController.php +++ b/app/Http/Controllers/Data/AdvertisementController.php @@ -6,15 +6,36 @@ use App\Http\Controllers\Controller; use App\Models\Advertisement; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; class AdvertisementController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Request $request) { - return view('data.advertisements.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + + return view('data.advertisements.index', compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/Data/SpatialPlanningController.php b/app/Http/Controllers/Data/SpatialPlanningController.php index cfbb1f2..09c8b9b 100644 --- a/app/Http/Controllers/Data/SpatialPlanningController.php +++ b/app/Http/Controllers/Data/SpatialPlanningController.php @@ -5,15 +5,37 @@ namespace App\Http\Controllers\Data; use App\Http\Controllers\Controller; use App\Models\SpatialPlanning; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; class SpatialPlanningController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Request $request) { - return view('data.spatialPlannings.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + + return view('data.spatialPlannings.index', compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/Data/TourismController.php b/app/Http/Controllers/Data/TourismController.php index a36f11e..0809eef 100644 --- a/app/Http/Controllers/Data/TourismController.php +++ b/app/Http/Controllers/Data/TourismController.php @@ -6,15 +6,35 @@ use App\Http\Controllers\Controller; use App\Models\Tourism; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; class TourismController extends Controller { /** * Display a listing of the resource */ - public function index() + public function index(Request $request) { - return view('data.tourisms.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + return view('data.tourisms.index', compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/Data/UmkmController.php b/app/Http/Controllers/Data/UmkmController.php index 01bdef8..27f2cf3 100644 --- a/app/Http/Controllers/Data/UmkmController.php +++ b/app/Http/Controllers/Data/UmkmController.php @@ -6,15 +6,35 @@ use App\Http\Controllers\Controller; use App\Models\Umkm; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; class UmkmController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Request $request) { - return view('data.umkm.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + return view('data.umkm.index', compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/DataSettingController.php b/app/Http/Controllers/DataSettingController.php index 1ed4ab4..9d69e13 100644 --- a/app/Http/Controllers/DataSettingController.php +++ b/app/Http/Controllers/DataSettingController.php @@ -8,15 +8,36 @@ use Exception; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Http\Request as IndexRequest; class DataSettingController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(IndexRequest $request) { - return view("data-settings.index"); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + return view("data-settings.index", compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/Master/UsersController.php b/app/Http/Controllers/Master/UsersController.php index 2e50f99..5fa9a60 100644 --- a/app/Http/Controllers/Master/UsersController.php +++ b/app/Http/Controllers/Master/UsersController.php @@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Hash; use App\Models\User; use App\Traits\GlobalApiResponse; use Illuminate\Auth\Events\Registered; +use Illuminate\Support\Facades\Auth; class UsersController extends Controller { @@ -21,9 +22,29 @@ class UsersController extends Controller $users = User::all(); return $this->resSuccess($users); } - public function index(){ + public function index(Request $request){ + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + $users = User::paginate(); - return view('master.users.index', compact('users')); + return view('master.users.index', compact('users', 'creator', 'updater', 'destroyer')); } public function create(){ $roles = Role::all(); diff --git a/app/Http/Controllers/MenusController.php b/app/Http/Controllers/MenusController.php index 0550a35..caf8446 100644 --- a/app/Http/Controllers/MenusController.php +++ b/app/Http/Controllers/MenusController.php @@ -6,15 +6,36 @@ use App\Http\Requests\MenuRequest; use App\Models\Menu; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; class MenusController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Request $request) { - return view('menus.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + + return view('menus.index', compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/RequestAssignment/PbgTaskController.php b/app/Http/Controllers/RequestAssignment/PbgTaskController.php index a72e44f..cdcdaad 100644 --- a/app/Http/Controllers/RequestAssignment/PbgTaskController.php +++ b/app/Http/Controllers/RequestAssignment/PbgTaskController.php @@ -5,15 +5,37 @@ namespace App\Http\Controllers\RequestAssignment; use App\Http\Controllers\Controller; use App\Models\PbgTask; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; class PbgTaskController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Request $request) { - return view('pbg_task.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + + return view('pbg_task.index', compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/RolesController.php b/app/Http/Controllers/RolesController.php index ceff492..2547ef1 100644 --- a/app/Http/Controllers/RolesController.php +++ b/app/Http/Controllers/RolesController.php @@ -10,15 +10,36 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Facades\Auth; class RolesController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Request $request) { - return view("roles.index"); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + + return view("roles.index", compact('creator', 'updater', 'destroyer')); } /** diff --git a/app/Http/Controllers/Settings/SyncronizeController.php b/app/Http/Controllers/Settings/SyncronizeController.php index f50d5a5..dba436d 100644 --- a/app/Http/Controllers/Settings/SyncronizeController.php +++ b/app/Http/Controllers/Settings/SyncronizeController.php @@ -13,7 +13,27 @@ class SyncronizeController extends Controller $this->service_simbg = $service_simbg; } public function index(Request $request){ - return view('settings.syncronize.index'); + $menuId = $request->query('menu_id'); + $user = Auth::user(); + $userId = $user->id; + + // Ambil role_id yang dimiliki user + $roleIds = DB::table('user_role') + ->where('user_id', $userId) + ->pluck('role_id'); + + // Ambil data akses berdasarkan role_id dan menu_id + $roleAccess = DB::table('role_menu') + ->whereIn('role_id', $roleIds) + ->where('menu_id', $menuId) + ->first(); + + // Pastikan roleAccess tidak null sebelum mengakses properti + $creator = $roleAccess->allow_create ?? 0; + $updater = $roleAccess->allow_update ?? 0; + $destroyer = $roleAccess->allow_destroy ?? 0; + + return view('settings.syncronize.index', compact('creator', 'updater', 'destroyer')); } public function syncPbgTask(){ diff --git a/resources/js/business-industries/index.js b/resources/js/business-industries/index.js index bcba970..256eabc 100644 --- a/resources/js/business-industries/index.js +++ b/resources/js/business-industries/index.js @@ -31,6 +31,11 @@ class BusinessIndustries { let tableContainer = document.getElementById( "table-business-industries" ); + + tableContainer.innerHTML = ""; + let canUpdate = tableContainer.getAttribute("data-updater") === "1"; + let canDelete = tableContainer.getAttribute("data-destroyer") === "1"; + // Create a new Grid.js instance only if it doesn't exist this.table = new Grid({ columns: [ @@ -50,17 +55,30 @@ class BusinessIndustries { { name: "Created", width: "180px" }, { name: "Action", - formatter: (cell) => - gridjs.html(` -
- - - - -
- `), + formatter: (cell) => { + + let buttons = `
`; + + if (canUpdate) { + buttons += ` + + + + `; + } + + if (canDelete) { + buttons += ` + + `; + } + + buttons += `
`; + + return gridjs.html(buttons); + }, }, ], pagination: { diff --git a/resources/js/customers/index.js b/resources/js/customers/index.js index 70b0b65..d191378 100644 --- a/resources/js/customers/index.js +++ b/resources/js/customers/index.js @@ -28,6 +28,10 @@ class Customers { initTableCustomers() { let tableContainer = document.getElementById("table-customers"); // Create a new Grid.js instance only if it doesn't exist + + tableContainer.innerHTML = ""; + let canUpdate = tableContainer.getAttribute("data-updater") === "1"; + let canDelete = tableContainer.getAttribute("data-destroyer") === "1"; this.table = new Grid({ columns: [ "ID", @@ -39,17 +43,31 @@ class Customers { "Longitude", { name: "Action", - formatter: (cell) => - gridjs.html(` -
- - - - -
- `), + formatter: (cell) => { + let buttons = ""; + + if (canUpdate) { + buttons += ` + + + + `; + } + + if (canDelete) { + buttons += ` + + `; + } + + if (!canUpdate && !canDelete) { + buttons = `No Privilege`; + } + + return gridjs.html(`
${buttons}
`); + }, }, ], pagination: { diff --git a/resources/js/data-settings/index.js b/resources/js/data-settings/index.js index 7ae9ef7..fa4935d 100644 --- a/resources/js/data-settings/index.js +++ b/resources/js/data-settings/index.js @@ -29,6 +29,10 @@ class DataSettings { initTableDataSettings() { let tableContainer = document.getElementById("table-data-settings"); + + tableContainer.innerHTML = ""; + let canUpdate = tableContainer.getAttribute("data-updater") === "1"; + let canDelete = tableContainer.getAttribute("data-destroyer") === "1" // Create a new Grid.js instance only if it doesn't exist this.table = new Grid({ columns: [ @@ -40,16 +44,29 @@ class DataSettings { name: "Actions", width: "120px", formatter: function (cell) { - return gridjs.html(` -
+ let buttons = ""; + + if (canUpdate) { + buttons += ` - -
- `); + `; + } + + if (!canUpdate && !canDelete) { + buttons = `No Privilege`; + } + + return gridjs.html(`
${buttons}
`); }, }, ], diff --git a/resources/js/data/advertisements/data-advertisements.js b/resources/js/data/advertisements/data-advertisements.js index bade5e5..ce7c0cc 100644 --- a/resources/js/data/advertisements/data-advertisements.js +++ b/resources/js/data/advertisements/data-advertisements.js @@ -4,6 +4,11 @@ import "gridjs/dist/gridjs.umd.js"; import GlobalConfig from "../../global-config.js"; import GeneralTable from "../../table-generator.js"; +// Ambil hak akses dari data-attribute +const tableElement = document.getElementById("reklame-data-table"); +const canUpdate = tableElement.getAttribute("data-updater") === "1"; +const canDelete = tableElement.getAttribute("data-destroyer") === "1"; + const dataAdvertisementsColumns = [ "No", "Nama Wajib Pajak", @@ -17,21 +22,39 @@ const dataAdvertisementsColumns = [ "Kontak", { name: "Actions", - widht: "120px", + width: "120px", formatter: function(cell, row) { const id = row.cells[10].data; const model = "data/advertisements"; - return gridjs.html(` -
+ + let actionButtons = '
'; + let hasPrivilege = false; + + // Tampilkan tombol Edit jika user punya akses update + if (canUpdate) { + hasPrivilege = true; + actionButtons += ` + + `; + } + + // Tampilkan tombol Delete jika user punya akses delete + if (canDelete) { + hasPrivilege = true; + actionButtons += ` -
- `); + data-id="${id}"> + + `; + } + + actionButtons += '
'; + + // Jika tidak memiliki akses, tampilkan teks "No Privilege" + return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege'); } } ]; diff --git a/resources/js/data/spatialPlannings/data-spatialPlannings.js b/resources/js/data/spatialPlannings/data-spatialPlannings.js index b766e32..cba1aa2 100644 --- a/resources/js/data/spatialPlannings/data-spatialPlannings.js +++ b/resources/js/data/spatialPlannings/data-spatialPlannings.js @@ -4,6 +4,11 @@ import "gridjs/dist/gridjs.umd.js"; import GlobalConfig from "../../global-config.js"; import GeneralTable from "../../table-generator.js"; +// Ambil hak akses dari data-attribute +const tableElement = document.getElementById("spatial-planning-data-table"); +const canUpdate = tableElement.getAttribute("data-updater") === "1"; +const canDelete = tableElement.getAttribute("data-destroyer") === "1"; + const dataSpatialPlanningColumns = [ "No", "Nama", @@ -19,18 +24,35 @@ const dataSpatialPlanningColumns = [ formatter: function (cell, row) { const id = row.cells[8].data; const model = "data/spatial-plannings"; - return gridjs.html(` -
+ + let actionButtons = '
'; + let hasPrivilege = false; + + // Tampilkan tombol Edit jika user punya akses update + if (canUpdate) { + hasPrivilege = true; + actionButtons += ` - + + `; + } + + // Tampilkan tombol Delete jika user punya akses delete + if (canDelete) { + hasPrivilege = true; + actionButtons += ` -
- `); + + `; + } + + actionButtons += '
'; + + // Jika tidak memiliki akses, tampilkan teks "No Privilege" + return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege'); }, }, ]; diff --git a/resources/js/data/tourisms/data-tourisms.js b/resources/js/data/tourisms/data-tourisms.js index a6a1922..0106273 100644 --- a/resources/js/data/tourisms/data-tourisms.js +++ b/resources/js/data/tourisms/data-tourisms.js @@ -6,6 +6,12 @@ import GeneralTable from "../../table-generator.js"; import L from "leaflet"; import "leaflet/dist/leaflet.css"; +// Ambil hak akses dari data-attribute +const tableElement = document.getElementById("tourisms-data-table"); +const canView = "1"; +const canUpdate = tableElement.getAttribute("data-updater") === "1"; +const canDelete = tableElement.getAttribute("data-destroyer") === "1"; + const dataTourismsColumns = [ "No", "Nama Perusahaan", @@ -27,23 +33,45 @@ const dataTourismsColumns = [ const long = row.cells[9].data; const lat = row.cells[10].data; const model = "data/tourisms"; - return gridjs.html(` -
- - - + + let actionButtons = '
'; + let hasPrivilege = false; + + // Tampilkan tombol View jika user punya akses view + if (canView) { + hasPrivilege = true; + actionButtons += ` + ` + } + // Tampilkan tombol Edit jika user punya akses update + if (canUpdate) { + hasPrivilege = true; + actionButtons += ` + `; + } + + // Tampilkan tombol Delete jika user punya akses delete + if (canDelete) { + hasPrivilege = true; + actionButtons += ` -
- `); - }, + + ` + } + + actionButtons += '
'; + // Jika tidak memiliki akses, tampilkan teks "No Privilege" + return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege'); + } }, ]; diff --git a/resources/js/data/umkm/data-umkm.js b/resources/js/data/umkm/data-umkm.js index e3f70c5..b087b0d 100644 --- a/resources/js/data/umkm/data-umkm.js +++ b/resources/js/data/umkm/data-umkm.js @@ -3,6 +3,11 @@ import "gridjs/dist/gridjs.umd.js"; import GlobalConfig from "../../global-config.js"; import GeneralTable from "../../table-generator.js"; +// Ambil hak akses dari data-attribute +const tableElement = document.getElementById("umkm-data-table"); +const canUpdate = tableElement.getAttribute("data-updater") === "1"; +const canDelete = tableElement.getAttribute("data-destroyer") === "1"; + const dataUMKMColumns = [ "No", "Nama Usaha", @@ -29,17 +34,35 @@ const dataUMKMColumns = [ formatter: function(cell, row) { const id = row.cells[19].data; const model = "data/umkm"; - return gridjs.html(` -
+ + let actionButtons = '
'; + let hasPrivilege = false; + + // Tampilkan tombol Edit jika user punya akses update + if (canUpdate) { + hasPrivilege = true; + actionButtons += ` + + `; + } + + // Tampilkan tombol Delete jika user punya akses delete + if (canDelete) { + hasPrivilege = true; + actionButtons += ` -
- `); + data-id="${id}"> + + `; + } + + actionButtons += '
'; + + // Jika tidak memiliki akses, tampilkan teks "No Privilege" + return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege'); } } ]; diff --git a/resources/js/master/users/users.js b/resources/js/master/users/users.js index 5506e06..6670cf6 100644 --- a/resources/js/master/users/users.js +++ b/resources/js/master/users/users.js @@ -9,6 +9,12 @@ class UsersTable { } initTableUsers() { + let tableContainer = document.getElementById( + "table-users" + ); + + tableContainer.innerHTML = ""; + let canUpdate = tableContainer.getAttribute("data-updater") === "1"; new Grid({ columns: [ "ID", @@ -20,14 +26,18 @@ class UsersTable { "Roles", { name: "Action", - formatter: (cell) => - gridjs.html(` + formatter: (cell) =>{ + if (!canUpdate) { + return gridjs.html(`No Privilege`); + } + return gridjs.html(` - `), + `); + }, }, ], pagination: { diff --git a/resources/js/menus/index.js b/resources/js/menus/index.js index 92109c5..554caee 100644 --- a/resources/js/menus/index.js +++ b/resources/js/menus/index.js @@ -28,6 +28,9 @@ class Menus { initTableMenus() { let tableContainer = document.getElementById("table-menus"); + tableContainer.innerHTML = ""; + let canUpdate = tableContainer.getAttribute("data-updater") === "1"; + let canDelete = tableContainer.getAttribute("data-destroyer") === "1"; if (this.table) { // If table exists, update its data instead of recreating this.table @@ -68,18 +71,33 @@ class Menus { "Sort Order", { name: "Action", - formatter: (cell) => - gridjs.html(` -
- - - - -
- `), + formatter: (cell) => { + let buttons = `
`; + + if (canUpdate) { + buttons += ` + + + + `; + } + + if (canDelete) { + buttons += ` + + `; + } + + if (!canUpdate && !canDelete) { + buttons += `No Privilege`; + } + + buttons += `
`; + + return gridjs.html(buttons); + }, }, ], pagination: { diff --git a/resources/js/pbg-task/index.js b/resources/js/pbg-task/index.js index 9b1d228..651d327 100644 --- a/resources/js/pbg-task/index.js +++ b/resources/js/pbg-task/index.js @@ -9,6 +9,11 @@ class PbgTasks { } initTableRequestAssignment() { + let tableContainer = document.getElementById("table-pbg-tasks"); + + // Pastikan kontainer kosong sebelum merender ulang Grid.js + tableContainer.innerHTML = ""; + let canUpdate = tableContainer.getAttribute("data-updater") === "1"; new Grid({ columns: [ "ID", @@ -24,13 +29,24 @@ class PbgTasks { { name: "Action", formatter: function (cell) { + let tableContainer = document.getElementById("table-pbg-tasks"); + let canUpdate = tableContainer.getAttribute("data-updater") === "1"; + + if (!canUpdate) { + return gridjs.html(` + No Privilege + `); + } + return gridjs.html(`
- Detail + Detail +
`); }, - }, + } ], search: { server: { diff --git a/resources/js/roles/index.js b/resources/js/roles/index.js index c4ab98d..7ee367c 100644 --- a/resources/js/roles/index.js +++ b/resources/js/roles/index.js @@ -27,6 +27,10 @@ class Roles { initTableRoles() { let tableContainer = document.getElementById("table-roles"); + + tableContainer.innerHTML = ""; + let canUpdate = tableContainer.getAttribute("data-updater") === "1"; + let canDelete = tableContainer.getAttribute("data-destroyer") === "1"; // Create a new Grid.js instance only if it doesn't exist this.table = new gridjs.Grid({ columns: [ @@ -34,22 +38,38 @@ class Roles { "Name", "Description", { - name: "Action", - formatter: (cell) => - gridjs.html(` - - `), + name: "Action", + formatter: (cell) => { + let buttons = `
`; + + if (canUpdate) { + buttons += ` + + + + + Role Menu + + `; + } + + if (canDelete) { + buttons += ` + + `; + } + + if (!canUpdate && !canDelete) { + buttons += `No Privilege`; + } + + buttons += `
`; + + return gridjs.html(buttons); }, + }, ], pagination: { limit: 50, diff --git a/resources/js/table-generator.js b/resources/js/table-generator.js index 45da245..ed81c42 100644 --- a/resources/js/table-generator.js +++ b/resources/js/table-generator.js @@ -12,6 +12,11 @@ class GeneralTable { } init() { + const tableContainer = document.getElementById(this.tableId); + + // Kosongkan container sebelum render ulang + tableContainer.innerHTML = ""; + const table = new Grid({ columns: this.columns, search: this.options.search || { @@ -39,8 +44,8 @@ class GeneralTable { total: (data) => data.meta.total, }, }); - - table.render(document.getElementById(this.tableId)); + + table.render(tableContainer); this.handleActions(); } diff --git a/resources/views/business-industries/index.blade.php b/resources/views/business-industries/index.blade.php index 4dca21c..edab41c 100644 --- a/resources/views/business-industries/index.blade.php +++ b/resources/views/business-industries/index.blade.php @@ -15,9 +15,14 @@
- Upload + @if ($creator) + Upload + @endif +
+
-
diff --git a/resources/views/customers/index.blade.php b/resources/views/customers/index.blade.php index bab6ebf..22c20a5 100644 --- a/resources/views/customers/index.blade.php +++ b/resources/views/customers/index.blade.php @@ -15,10 +15,15 @@
- Create - Upload + @if ($creator) + Create + Upload + @endif +
+
-
diff --git a/resources/views/data-settings/index.blade.php b/resources/views/data-settings/index.blade.php index 8d3d09c..ec005aa 100644 --- a/resources/views/data-settings/index.blade.php +++ b/resources/views/data-settings/index.blade.php @@ -15,9 +15,14 @@
- Create + @if ($creator) + Create + @endif +
+
-
diff --git a/resources/views/data/advertisements/index.blade.php b/resources/views/data/advertisements/index.blade.php index da7898b..dfab65a 100644 --- a/resources/views/data/advertisements/index.blade.php +++ b/resources/views/data/advertisements/index.blade.php @@ -16,16 +16,21 @@
- - + @if ($creator) + + + @endif
-
+
+
diff --git a/resources/views/data/spatialPlannings/index.blade.php b/resources/views/data/spatialPlannings/index.blade.php index da2e4b0..b7a18b3 100644 --- a/resources/views/data/spatialPlannings/index.blade.php +++ b/resources/views/data/spatialPlannings/index.blade.php @@ -14,16 +14,21 @@
- - + @if ($creator) + + + @endif
-
+
+
diff --git a/resources/views/data/tourisms/index.blade.php b/resources/views/data/tourisms/index.blade.php index 2c04566..c5687d6 100644 --- a/resources/views/data/tourisms/index.blade.php +++ b/resources/views/data/tourisms/index.blade.php @@ -14,16 +14,21 @@
- - + @if ($creator) + + + @endif
-
+
+
diff --git a/resources/views/data/umkm/index.blade.php b/resources/views/data/umkm/index.blade.php index 6f8977d..8ab20d8 100644 --- a/resources/views/data/umkm/index.blade.php +++ b/resources/views/data/umkm/index.blade.php @@ -14,16 +14,21 @@
- - + @if ($creator) + + + @endif
-
+
+
diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index 8c75d44..81c5809 100644 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -16,58 +16,49 @@ - +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ @for ($i = 0; $i < 20; $i++) +
+ @endfor
\ No newline at end of file diff --git a/resources/views/master/users/index.blade.php b/resources/views/master/users/index.blade.php index 193f81f..09a3e44 100644 --- a/resources/views/master/users/index.blade.php +++ b/resources/views/master/users/index.blade.php @@ -13,11 +13,16 @@
- - Create - + @if ($creator) + + Create + + @endif +
+
-
diff --git a/resources/views/menus/index.blade.php b/resources/views/menus/index.blade.php index 5884013..f7ea0b4 100644 --- a/resources/views/menus/index.blade.php +++ b/resources/views/menus/index.blade.php @@ -16,10 +16,15 @@
- Create + @if ($creator) + Create + @endif
-
+
+
diff --git a/resources/views/pbg_task/index.blade.php b/resources/views/pbg_task/index.blade.php index c650ea0..db1cdcd 100644 --- a/resources/views/pbg_task/index.blade.php +++ b/resources/views/pbg_task/index.blade.php @@ -13,9 +13,14 @@
- Create + @if ($creator) + Create + @endif +
+
-
diff --git a/resources/views/roles/index.blade.php b/resources/views/roles/index.blade.php index 42d4684..66090b4 100644 --- a/resources/views/roles/index.blade.php +++ b/resources/views/roles/index.blade.php @@ -16,9 +16,14 @@
- Create + @if ($creator) + Create + @endif +
+
-
diff --git a/resources/views/settings/syncronize/index.blade.php b/resources/views/settings/syncronize/index.blade.php index 8287666..2511709 100644 --- a/resources/views/settings/syncronize/index.blade.php +++ b/resources/views/settings/syncronize/index.blade.php @@ -13,10 +13,12 @@
- + @if ($creator) + + @endif