fix seeder menu role and user assign, create 503 page and fix redirect home
This commit is contained in:
@@ -15,17 +15,23 @@ class DatabaseSeeder extends Seeder
|
|||||||
*/
|
*/
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
// User::factory(10)->create();
|
User::updateOrCreate(
|
||||||
|
['email' => 'user@demo.com'], // Kondisi pencarian
|
||||||
|
[
|
||||||
|
'name' => 'Darkone',
|
||||||
|
'email_verified_at' => now(),
|
||||||
|
'password' => Hash::make('password'),
|
||||||
|
'firstname' => 'John',
|
||||||
|
'lastname' => 'Doe',
|
||||||
|
'position' => 'crusial',
|
||||||
|
'remember_token' => Str::random(10),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
User::factory()->create([
|
$this->call([
|
||||||
'name' => 'Darkone',
|
RoleSeeder::class,
|
||||||
'email' => 'user@demo.com',
|
MenuSeeder::class,
|
||||||
'email_verified_at' => now(),
|
UsersRoleMenuSeeder::class
|
||||||
'password' => Hash::make('password'),
|
|
||||||
'firstname' => 'John',
|
|
||||||
'lastname' => 'Doe',
|
|
||||||
'position' => 'crusial',
|
|
||||||
'remember_token' => Str::random(10),
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
287
database/seeders/MenuSeeder.php
Normal file
287
database/seeders/MenuSeeder.php
Normal file
@@ -0,0 +1,287 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\Menu;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
|
||||||
|
class MenuSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*/
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
$menus = [
|
||||||
|
[
|
||||||
|
"name" => "Dashboard",
|
||||||
|
"url" => "/dashboard",
|
||||||
|
"icon" => "mingcute:home-3-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Dashboard Pimpinan",
|
||||||
|
"url" => "dashboard.home",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Dashboard PBG",
|
||||||
|
"url" => "dashboard.pbg",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 2,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Dashboard Potensi",
|
||||||
|
"url" => '/potentials',
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 3,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Luar Sistem",
|
||||||
|
"url" => "dashboard.potentials.inside_system",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Dalam Sistem",
|
||||||
|
"url" => "dashboard.potentials.outside_system",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 2,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "PETA",
|
||||||
|
"url" => "dashboard.maps",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 4,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Master",
|
||||||
|
"url" => "/master",
|
||||||
|
"icon" => "mingcute:cylinder-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 2,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Users",
|
||||||
|
"url" => "users.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Settings",
|
||||||
|
"url" => "/settings",
|
||||||
|
"icon" => "mingcute:settings-6-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 3,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Syncronize",
|
||||||
|
"url" => "settings.syncronize",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Menu",
|
||||||
|
"url" => "menus.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 2,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Role",
|
||||||
|
"url" => "roles.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 3,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Data Settings",
|
||||||
|
"url" => "/data-settings",
|
||||||
|
"icon" => "mingcute:settings-1-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 4,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Setting Dashboard",
|
||||||
|
"url" => "data-settings.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Data",
|
||||||
|
"url" => "/data",
|
||||||
|
"icon" => "mingcute:task-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 5,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "PBG",
|
||||||
|
"url" => "pbg-task.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Reklame",
|
||||||
|
"url" => "web.advertisements.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 2,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Usaha atau Industri",
|
||||||
|
"url" => "business-industries.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 3,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "UMKM",
|
||||||
|
"url" => "web-umkm.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 4,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Pariwisata",
|
||||||
|
"url" => "web-tourisms.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 5,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Tata Ruang",
|
||||||
|
"url" => "web-spatial-plannings.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 6,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "PDAM",
|
||||||
|
"url" => "customers",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 7,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Google Sheets",
|
||||||
|
"url" => "google-sheets",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 8,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "TPA TPT",
|
||||||
|
"url" => "tpa-tpt.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 9,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Laporan",
|
||||||
|
"url" => "/laporan",
|
||||||
|
"icon" => "mingcute:report-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 6,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Lap Pariwisata",
|
||||||
|
"url" => "tourisms-report.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Lap Pimpinan",
|
||||||
|
"url" => "bigdata-resumes",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 2,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Rekap Pembayaran",
|
||||||
|
"url" => "payment-recaps",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 3,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Lap Rekap Data Pembayaran",
|
||||||
|
"url" => "report-payment-recaps",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 4,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Lap PBG (PTSP)",
|
||||||
|
"url" => "report-pbg-ptsp",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 5,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Neng Bedas",
|
||||||
|
"url" => "/chat",
|
||||||
|
"icon" => "mingcute:wechat-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 7,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Chat",
|
||||||
|
"url" => "main-chatbot.index",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Approval",
|
||||||
|
"url" => "/approval",
|
||||||
|
"icon" => "mingcute:user-follow-2-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 8,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Approval Pejabat",
|
||||||
|
"url" => "approval-list",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "Tools",
|
||||||
|
"url" => "/tools",
|
||||||
|
"icon" => "mingcute:tool-line",
|
||||||
|
"parent_id" => null,
|
||||||
|
"sort_order" => 9,
|
||||||
|
"children" => [
|
||||||
|
[
|
||||||
|
"name" => "Undangan",
|
||||||
|
"url" => "invitations",
|
||||||
|
"icon" => null,
|
||||||
|
"sort_order" => 1,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($menus as $menuData) {
|
||||||
|
$this->createOrUpdateMenu($menuData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function createOrUpdateMenu($menuData, $parentId = null){
|
||||||
|
$menuData['parent_id'] = $parentId;
|
||||||
|
|
||||||
|
$menu = Menu::updateOrCreate(['name' => $menuData['name']], Arr::except($menuData, ['children']));
|
||||||
|
|
||||||
|
if(!empty($menuData['children'])){
|
||||||
|
foreach($menuData['children'] as $child){
|
||||||
|
$this->createOrUpdateMenu($child, $menu->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
37
database/seeders/RoleSeeder.php
Normal file
37
database/seeders/RoleSeeder.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use App\Models\Role;
|
||||||
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
|
class RoleSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*/
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
$roles = [
|
||||||
|
[
|
||||||
|
"name" => "superadmin",
|
||||||
|
"description" => "show all menus for super admins",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "admin",
|
||||||
|
"description" => "show only necessary menus for admins",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "operator",
|
||||||
|
"description" => "show only necessary menus for operators",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "user",
|
||||||
|
"description" => "show only necessary menus for users",
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
Role::upsert($roles, ['name']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,400 +13,54 @@ class UsersRoleMenuSeeder extends Seeder
|
|||||||
/**
|
/**
|
||||||
* Run the database seeds.
|
* Run the database seeds.
|
||||||
*/
|
*/
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$roles = [
|
// Fetch roles in a single query
|
||||||
[
|
$roles = Role::whereIn('name', ['superadmin', 'admin', 'operator'])->get()->keyBy('name');
|
||||||
"name" => "superadmin",
|
|
||||||
"description" => "show all menus for super admins",
|
// Fetch all menus in a single query and index by name
|
||||||
|
$menus = Menu::whereIn('name', [
|
||||||
|
'Dashboard', 'Master', 'Settings', 'Data Settings', 'Data', 'Laporan', 'Neng Bedas',
|
||||||
|
'Approval', 'Tools', 'Dashboard Pimpinan', 'Dashboard PBG', 'Users', 'Syncronize',
|
||||||
|
'Menu', 'Role', 'Setting Dashboard', 'PBG', 'Reklame', 'Usaha atau Industri', 'Pariwisata',
|
||||||
|
'Lap Pariwisata', 'UMKM', 'Dashboard Potensi', 'Tata Ruang', 'PDAM', 'PETA',
|
||||||
|
'Lap Pimpinan', 'Chat', 'Dalam Sistem', 'Luar Sistem', 'Google Sheets', 'TPA TPT',
|
||||||
|
'Approval Pejabat', 'Undangan', 'Rekap Pembayaran', 'Lap Rekap Data Pembayaran', 'Lap PBG (PTSP)'
|
||||||
|
])->get()->keyBy('name');
|
||||||
|
|
||||||
|
// Define access levels for each role
|
||||||
|
$permissions = [
|
||||||
|
'superadmin' => [
|
||||||
|
'Dashboard', 'Master', 'Settings', 'Data Settings', 'Data', 'Laporan', 'Neng Bedas',
|
||||||
|
'Approval', 'Tools', 'Dashboard Pimpinan', 'Dashboard PBG', 'Users', 'Syncronize',
|
||||||
|
'Menu', 'Role', 'Setting Dashboard', 'PBG', 'Reklame', 'Usaha atau Industri', 'Pariwisata',
|
||||||
|
'Lap Pariwisata', 'UMKM', 'Dashboard Potensi', 'Tata Ruang', 'PDAM', 'Dalam Sistem',
|
||||||
|
'Luar Sistem', 'Lap Pimpinan', 'Chat', 'Google Sheets', 'TPA TPT', 'Approval Pejabat',
|
||||||
|
'Undangan', 'Rekap Pembayaran', 'Lap Rekap Data Pembayaran', 'Lap PBG (PTSP)'
|
||||||
],
|
],
|
||||||
[
|
'admin' => ['Dashboard', 'Master', 'Settings'],
|
||||||
"name" => "admin",
|
'operator' => ['Dashboard', 'Data', 'Laporan']
|
||||||
"description" => "show only necessary menus for admins",
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "operator",
|
|
||||||
"description" => "show only necessary menus for operators",
|
|
||||||
]
|
|
||||||
];
|
];
|
||||||
|
|
||||||
Role::upsert($roles, ['name']);
|
// Define permission levels
|
||||||
|
$superadminPermissions = ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true];
|
||||||
|
$adminPermissions = ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true];
|
||||||
|
$operatorPermissions = ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false];
|
||||||
|
|
||||||
$parent_menus = [
|
// Assign menus to roles
|
||||||
[
|
foreach ($permissions as $roleName => $menuNames) {
|
||||||
"name" => "Dashboard",
|
$role = $roles[$roleName] ?? null;
|
||||||
"url" => "/dashboard",
|
if ($role) {
|
||||||
"icon" => "mingcute:home-3-line",
|
$role->menus()->sync(
|
||||||
"parent_id" => null,
|
collect($menuNames)->mapWithKeys(fn($menuName) => [
|
||||||
"sort_order" => 1,
|
$menus[$menuName]->id => ($roleName === 'superadmin' ? $superadminPermissions :
|
||||||
],
|
($roleName === 'admin' ? $adminPermissions : $operatorPermissions))
|
||||||
[
|
])->toArray()
|
||||||
"name" => "Master",
|
);
|
||||||
"url" => "/master",
|
}
|
||||||
"icon" => "mingcute:cylinder-line",
|
|
||||||
"parent_id" => null,
|
|
||||||
"sort_order" => 2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Settings",
|
|
||||||
"url" => "/settings",
|
|
||||||
"icon" => "mingcute:settings-6-line",
|
|
||||||
"parent_id" => null,
|
|
||||||
"sort_order" => 3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Data Settings",
|
|
||||||
"url" => "/data-settings",
|
|
||||||
"icon" => "mingcute:settings-1-line",
|
|
||||||
"parent_id" => null,
|
|
||||||
"sort_order" => 4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Data",
|
|
||||||
"url" => "/data",
|
|
||||||
"icon" => "mingcute:task-line",
|
|
||||||
"parent_id" => null,
|
|
||||||
"sort_order" => 5,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Laporan",
|
|
||||||
"url" => "/laporan",
|
|
||||||
"icon" => "mingcute:report-line",
|
|
||||||
"parent_id" => null,
|
|
||||||
"sort_order" => 6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Neng Bedas",
|
|
||||||
"url" => "/chat",
|
|
||||||
"icon" => "mingcute:wechat-line",
|
|
||||||
"parent_id" => null,
|
|
||||||
"sort_order" => 7,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Approval",
|
|
||||||
"url" => "/approval",
|
|
||||||
"icon" => "mingcute:user-follow-2-line",
|
|
||||||
"parent_id" => null,
|
|
||||||
"sort_order" => 8,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Tools",
|
|
||||||
"url" => "/tools",
|
|
||||||
"icon" => "mingcute:tool-line",
|
|
||||||
"parent_id" => null,
|
|
||||||
"sort_order" => 9,
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($parent_menus as $parent_menu) {
|
|
||||||
Menu::firstOrCreate(['name' => $parent_menu['name']], $parent_menu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attach Menus to Roles
|
|
||||||
$superadmin = Role::where('name', 'superadmin')->first();
|
|
||||||
$admin = Role::where('name', 'admin')->first();
|
|
||||||
$operator = Role::where('name', 'operator')->first();
|
|
||||||
|
|
||||||
$dashboard = Menu::where('name', 'Dashboard')->first();
|
|
||||||
$master = Menu::where('name', 'Master')->first();
|
|
||||||
$settings = Menu::where('name', 'Settings')->first();
|
|
||||||
$dataSettings = Menu::where('name', 'Data Settings')->first();
|
|
||||||
$data = Menu::where('name', 'Data')->first();
|
|
||||||
$laporan = Menu::where('name', 'Laporan')->first();
|
|
||||||
$chat_bedas = Menu::where('name', 'Neng Bedas')->first();
|
|
||||||
$approval = Menu::where('name', 'Approval')->first();
|
|
||||||
$tools = Menu::where('name', 'Tools')->first();
|
|
||||||
|
|
||||||
// create children menu
|
|
||||||
$children_menus = [
|
|
||||||
[
|
|
||||||
"name" => "Dashboard Pimpinan",
|
|
||||||
"url" => "dashboard.home",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $dashboard->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Dashboard PBG",
|
|
||||||
"url" => "dashboard.pbg",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $dashboard->id,
|
|
||||||
"sort_order" => 2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Dashboard Potensi",
|
|
||||||
"url" => null,
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $dashboard->id,
|
|
||||||
"sort_order" => 3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "PETA",
|
|
||||||
"url" => "dashboard.maps",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $dashboard->id,
|
|
||||||
"sort_order" => 4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Users",
|
|
||||||
"url" => "users.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $master->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Approval Pejabat",
|
|
||||||
"url" => "approval-list",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $approval->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Syncronize",
|
|
||||||
"url" => "settings.syncronize",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $settings->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Menu",
|
|
||||||
"url" => "menus.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $settings->id,
|
|
||||||
"sort_order" => 2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Role",
|
|
||||||
"url" => "roles.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $settings->id,
|
|
||||||
"sort_order" => 3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Setting Dashboard",
|
|
||||||
"url" => "data-settings.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $dataSettings->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "PBG",
|
|
||||||
"url" => "pbg-task.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Reklame",
|
|
||||||
"url" => "web.advertisements.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Usaha atau Industri",
|
|
||||||
"url" => "business-industries.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "UMKM",
|
|
||||||
"url" => "web-umkm.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Pariwisata",
|
|
||||||
"url" => "web-tourisms.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 5,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Tata Ruang",
|
|
||||||
"url" => "web-spatial-plannings.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "PDAM",
|
|
||||||
"url" => "customers",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 7,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Google Sheets",
|
|
||||||
"url" => "google-sheets",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 8,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "TPA TPT",
|
|
||||||
"url" => "tpa-tpt.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $data->id,
|
|
||||||
"sort_order" => 9,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Lap Pariwisata",
|
|
||||||
"url" => "tourisms-report.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $laporan->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Lap Pimpinan",
|
|
||||||
"url" => "bigdata-resumes",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $laporan->id,
|
|
||||||
"sort_order" => 2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Rekap Pembayaran",
|
|
||||||
"url" => "payment-recaps",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $laporan->id,
|
|
||||||
"sort_order" => 3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Lap Rekap Data Pembayaran",
|
|
||||||
"url" => "report-payment-recaps",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $laporan->id,
|
|
||||||
"sort_order" => 4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Lap PBG (PTSP)",
|
|
||||||
"url" => "report-pbg-ptsp",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $laporan->id,
|
|
||||||
"sort_order" => 5,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Chat",
|
|
||||||
"url" => "main-chatbot.index",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $chat_bedas->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Luar Sistem",
|
|
||||||
"url" => "dashboard.potentials.inside_system",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => Menu::where('name', 'Dashboard Potensi')->first()->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Dalam Sistem",
|
|
||||||
"url" => "dashboard.potentials.outside_system",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => Menu::where('name', 'Dashboard Potensi')->first()->id,
|
|
||||||
"sort_order" => 2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"name" => "Undangan",
|
|
||||||
"url" => "invitations",
|
|
||||||
"icon" => null,
|
|
||||||
"parent_id" => $tools->id,
|
|
||||||
"sort_order" => 1,
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($children_menus as $child_menu) {
|
|
||||||
Menu::firstOrCreate(['name' => $child_menu['name']], $child_menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
$dashboard_pimpinan = Menu::where('name', 'Dashboard Pimpinan')->first();
|
|
||||||
$dashboard_pbg = Menu::where('name', 'Dashboard PBG')->first();
|
|
||||||
$users = Menu::where('name', 'Users')->first();
|
|
||||||
$syncronize = Menu::where('name', 'Syncronize')->first();
|
|
||||||
$setting_menu = Menu::where('name', 'Menu')->first();
|
|
||||||
$setting_role = Menu::where('name', 'Role')->first();
|
|
||||||
$setting_dashboard = Menu::where('name', 'Setting Dashboard')->first();
|
|
||||||
$setting_pbg = Menu::where('name', 'PBG')->first();
|
|
||||||
$reklame = Menu::where('name', 'Reklame')->first();
|
|
||||||
$businessIndustries = Menu::where('name', 'Usaha atau Industri')->first();
|
|
||||||
$pariwisata = Menu::where('name', 'Pariwisata')->first();
|
|
||||||
$laporan_pariwisata = Menu::where('name', 'Lap Pariwisata')->first();
|
|
||||||
$umkm = Menu::where('name', 'UMKM')->first();
|
|
||||||
$lack_of_potentials = Menu::where('name', 'Dashboard Potensi')->first();
|
|
||||||
$spatial_plannings = Menu::where('name', 'Tata Ruang')->first();
|
|
||||||
$pdam = Menu::where('name', 'PDAM')->first();
|
|
||||||
$peta = Menu::where('name', 'PETA')->first();
|
|
||||||
$bigdata_resume = Menu::where('name', 'Lap Pimpinan')->first();
|
|
||||||
$chatbot = Menu::where('name', 'Chat')->first();
|
|
||||||
$dalam_sistem = Menu::where('name', 'Dalam Sistem')->first();
|
|
||||||
$luar_sistem = Menu::where('name', 'Luar Sistem')->first();
|
|
||||||
$google_sheets = Menu::where('name', 'Google Sheets')->first();
|
|
||||||
$tpa_tpt = Menu::where('name', 'TPA TPT')->first();
|
|
||||||
$approval_pejabat = Menu::where('name', 'Approval Pejabat')->first();
|
|
||||||
$intivations = Menu::where('name', 'Undangan')->first();
|
|
||||||
$payment_recap = Menu::where('name', 'Rekap Pembayaran')->first();
|
|
||||||
$report_payment_recap = Menu::where('name', 'Lap Rekap Data Pembayaran')->first();
|
|
||||||
$report_pbg_ptsp = Menu::where('name', 'Lap PBG (PTSP)')->first();
|
|
||||||
|
|
||||||
// Superadmin gets all menus
|
|
||||||
$superadmin->menus()->sync([
|
|
||||||
// parent
|
|
||||||
$dashboard->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
$master->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
$settings->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
$dataSettings->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
$data->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
$laporan->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
$chat_bedas->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
$approval->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
$tools->id => ["allow_show" => true, "allow_create" => false, "allow_update" => false, "allow_destroy" => false],
|
|
||||||
// children
|
|
||||||
$dashboard_pimpinan->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$dashboard_pbg->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$users->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$syncronize->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$setting_menu->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$setting_role->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$setting_dashboard->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$setting_pbg->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$reklame->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$businessIndustries->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$pariwisata->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$laporan_pariwisata->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$umkm->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$lack_of_potentials->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$spatial_plannings->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$pdam->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
// $peta->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$dalam_sistem->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$luar_sistem->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$bigdata_resume->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$chatbot->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$google_sheets->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$tpa_tpt->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$approval_pejabat->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$intivations->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$payment_recap->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$report_payment_recap->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$report_pbg_ptsp->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Admin gets limited menus
|
|
||||||
$admin->menus()->sync([
|
|
||||||
$dashboard->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$master->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$settings->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Operator gets only basic menus with full permissions
|
|
||||||
$operator->menus()->sync([
|
|
||||||
$dashboard->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
$data->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Attach User to role super admin
|
// Attach User to role super admin
|
||||||
User::findOrFail(1)->roles()->sync([$superadmin->id]);
|
User::findOrFail(1)->roles()->sync([$roles['superadmin']->id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
41
resources/views/errors/503.blade.php
Normal file
41
resources/views/errors/503.blade.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
@extends('layouts.base', ['subtitle' => 'Service Unavailable - 503'])
|
||||||
|
|
||||||
|
@section('body-attribuet')
|
||||||
|
class="authentication-bg"
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="account-pages pt-2 pt-sm-5 pb-4 pb-sm-5">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<div class="card auth-card">
|
||||||
|
<div class="card-body p-0">
|
||||||
|
<div class="row align-items-center g-0">
|
||||||
|
<div class="col">
|
||||||
|
<div class="p-4">
|
||||||
|
<div class="mx-auto mb-4 text-center">
|
||||||
|
<div class="mx-auto text-center auth-logo">
|
||||||
|
<!-- Logo placeholder -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<img src="/images/simbg-dputr.png" alt="auth" height="250" class="mt-5 mb-3" />
|
||||||
|
|
||||||
|
<h2 class="fs-22 lh-base">Service Unavailable!</h2>
|
||||||
|
<p class="text-muted mt-1 mb-4">Our site is currently undergoing scheduled maintenance.<br /> Please check back later.</p>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="{{ route('home') }}" class="btn btn-warning">Back to Home</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> <!-- end col -->
|
||||||
|
</div> <!-- end row -->
|
||||||
|
</div> <!-- end card-body -->
|
||||||
|
</div> <!-- end card -->
|
||||||
|
</div> <!-- end col -->
|
||||||
|
</div> <!-- end row -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
@@ -4,8 +4,22 @@
|
|||||||
|
|
||||||
@include('layouts.partials/page-title', ['title' => 'Home', 'subtitle' => 'Home'])
|
@include('layouts.partials/page-title', ['title' => 'Home', 'subtitle' => 'Home'])
|
||||||
|
|
||||||
@endsection
|
<div className="container d-flex justify-content-center align-items-center min-vh-100 bg-light">
|
||||||
|
<div className="col-lg-8 col-md-10 col-sm-12">
|
||||||
|
<div className="card shadow-lg rounded-3 p-4">
|
||||||
|
<div className="card-body text-center">
|
||||||
|
<h1 className="card-title text-primary">Selamat Datang di SIBEDAS PBG!</h1>
|
||||||
|
<p className="card-text text-secondary mt-3">
|
||||||
|
Sistem Informasi Berbasis Data (SIBEDAS) adalah sebuah sistem yang dirancang untuk mengelola dan mengolah data pegawai secara efektif dan efisien.
|
||||||
|
Dengan teknologi modern, SIBEDAS memungkinkan pegawai untuk mendata, melihat, dan memanipulasi informasi pegawai dengan mudah.
|
||||||
|
</p>
|
||||||
|
<p className="card-text text-secondary">
|
||||||
|
PBG (Pegawai Badan Kepegawaian) merupakan unit kerja yang bertanggung jawab atas administrasi kepegawaian.
|
||||||
|
Melalui SIBEDAS PBG, proses manajemen data pegawai menjadi lebih terstruktur, transparan, dan mudah diakses kapan saja.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@section('scripts')
|
|
||||||
@vite(['resources/js/pages/dashboard.js'])
|
|
||||||
@endsection
|
@endsection
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
missing in the digital wilderness.</p>
|
missing in the digital wilderness.</p>
|
||||||
|
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<a href="{{ route('any', 'index') }}" class="btn btn-success">Back to Home</a>
|
<a href="{{ route('home', 'index') }}" class="btn btn-success">Back to Home</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class="authentication-bg"
|
|||||||
<p class="text-muted mt-1 mb-4">The page you're trying to reach seems to have gone <br /> missing in the digital wilderness.</p>
|
<p class="text-muted mt-1 mb-4">The page you're trying to reach seems to have gone <br /> missing in the digital wilderness.</p>
|
||||||
|
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<a href="{{ route('dashboard.home') }}" class="btn btn-danger">Back to Home</a>
|
<a href="{{ route('home') }}" class="btn btn-danger">Back to Home</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ require __DIR__ . '/auth.php';
|
|||||||
Route::group(['middleware' => 'auth'], function(){
|
Route::group(['middleware' => 'auth'], function(){
|
||||||
|
|
||||||
Route::get('', [BigDataController::class, 'index'])->name('any');
|
Route::get('', [BigDataController::class, 'index'])->name('any');
|
||||||
Route::get('/home', [HomeController::class, 'index']);
|
Route::get('/home', [HomeController::class, 'index'])->name('home');
|
||||||
|
|
||||||
//dashboards
|
//dashboards
|
||||||
Route::group(['prefix' => '/dashboards'], function(){
|
Route::group(['prefix' => '/dashboards'], function(){
|
||||||
|
|||||||
Reference in New Issue
Block a user