From a786de2801b5bdaa2cd7f48329fbc68f2cd895f2 Mon Sep 17 00:00:00 2001 From: kizadl Date: Tue, 21 Apr 2026 20:48:46 +0700 Subject: [PATCH] crud user --- .../Controllers/Admin/DashboardController.php | 18 +++ .../{ => Admin}/UserController.php | 15 +- resources/js/components/AppHeader.vue | 4 +- resources/js/components/AppSidebar.vue | 6 +- resources/js/components/public/BentoGrid.vue | 150 ++++++++++++++++++ resources/js/components/public/FinalCta.vue | 32 ++++ resources/js/components/public/Footer.vue | 55 +++++++ resources/js/components/public/Hero.vue | 78 +++++++++ .../js/components/public/LogoMarquee.vue | 42 +++++ resources/js/components/public/Navbar.vue | 99 ++++++++++++ resources/js/components/public/Pricing.vue | 148 +++++++++++++++++ resources/js/pages/Dashboard.vue | 47 ------ resources/js/pages/Welcome.vue | 2 +- resources/js/pages/admin/Dashboard.vue | 43 +++++ .../js/pages/{ => admin}/user/UserCreate.vue | 2 +- .../js/pages/{ => admin}/user/UserDelete.vue | 2 +- .../js/pages/{ => admin}/user/UserEdit.vue | 2 +- .../js/pages/{ => admin}/user/UserIndex.vue | 2 +- resources/js/pages/public/Home.vue | 21 +++ routes/web.php | 19 ++- tests/Feature/DashboardTest.php | 4 +- 21 files changed, 718 insertions(+), 73 deletions(-) create mode 100644 app/Http/Controllers/Admin/DashboardController.php rename app/Http/Controllers/{ => Admin}/UserController.php (84%) create mode 100644 resources/js/components/public/BentoGrid.vue create mode 100644 resources/js/components/public/FinalCta.vue create mode 100644 resources/js/components/public/Footer.vue create mode 100644 resources/js/components/public/Hero.vue create mode 100644 resources/js/components/public/LogoMarquee.vue create mode 100644 resources/js/components/public/Navbar.vue create mode 100644 resources/js/components/public/Pricing.vue delete mode 100644 resources/js/pages/Dashboard.vue create mode 100644 resources/js/pages/admin/Dashboard.vue rename resources/js/pages/{ => admin}/user/UserCreate.vue (99%) rename resources/js/pages/{ => admin}/user/UserDelete.vue (96%) rename resources/js/pages/{ => admin}/user/UserEdit.vue (98%) rename resources/js/pages/{ => admin}/user/UserIndex.vue (99%) create mode 100644 resources/js/pages/public/Home.vue diff --git a/app/Http/Controllers/Admin/DashboardController.php b/app/Http/Controllers/Admin/DashboardController.php new file mode 100644 index 0000000..6eb248f --- /dev/null +++ b/app/Http/Controllers/Admin/DashboardController.php @@ -0,0 +1,18 @@ + $user, + ]); + } +} diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/Admin/UserController.php similarity index 84% rename from app/Http/Controllers/UserController.php rename to app/Http/Controllers/Admin/UserController.php index 29c49f2..bf42296 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -1,7 +1,8 @@ $user, ]); } @@ -28,7 +29,7 @@ public function index() public function create() { // - return Inertia::render('user/UserCreate'); + return Inertia::render('admin/user/UserCreate'); } /** @@ -53,7 +54,7 @@ public function store(Request $request) DB::commit(); - return redirect()->route('users.index')->with('success', 'User berhasil ditambahkan.'); + return redirect()->route('admin.users.index')->with('success', 'User berhasil ditambahkan.'); } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'Gagal menambahkan user: ' . $e->getMessage()); @@ -75,7 +76,7 @@ public function edit(string $id) { // $user = User::findOrFail($id); - return Inertia::render('user/UserEdit', [ + return Inertia::render('admin/user/UserEdit', [ 'user' => $user, ]); } @@ -110,7 +111,7 @@ public function update(Request $request, string $id) DB::commit(); - return redirect()->route('users.index')->with('success', 'User berhasil diupdate.'); + return redirect()->route('admin.users.index')->with('success', 'User berhasil diupdate.'); } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'Gagal mengupdate user: ' . $e->getMessage()); @@ -126,7 +127,7 @@ public function destroy(string $id) try { $user = User::findOrFail($id); $user->delete(); - return redirect()->route('users.index')->with('success', 'User berhasil dihapus.'); + return redirect()->route('admin.users.index')->with('success', 'User berhasil dihapus.'); } catch (\Exception $e) { return redirect()->back()->with('error', 'Gagal menghapus user: ' . $e->getMessage()); } diff --git a/resources/js/components/AppHeader.vue b/resources/js/components/AppHeader.vue index 3e1724a..2e21855 100644 --- a/resources/js/components/AppHeader.vue +++ b/resources/js/components/AppHeader.vue @@ -56,7 +56,7 @@ const activeItemStyles = const mainNavItems: NavItem[] = [ { title: 'Dashboard', - href: route('dashboard'), + href: route('admin.dashboard'), icon: LayoutGrid, }, ]; @@ -146,7 +146,7 @@ const rightNavItems: NavItem[] = [ - + diff --git a/resources/js/components/AppSidebar.vue b/resources/js/components/AppSidebar.vue index a2d20a7..8f1548e 100644 --- a/resources/js/components/AppSidebar.vue +++ b/resources/js/components/AppSidebar.vue @@ -20,12 +20,12 @@ import type { NavItem } from '@/types'; const mainNavItems: NavItem[] = [ { title: 'Dashboard', - href: route('dashboard'), + href: route('admin.dashboard'), icon: LayoutGrid, }, { title: 'Users', - href: route('users.index'), + href: route('admin.users.index'), icon: Users, }, ]; @@ -50,7 +50,7 @@ const footerNavItems: NavItem[] = [ - + diff --git a/resources/js/components/public/BentoGrid.vue b/resources/js/components/public/BentoGrid.vue new file mode 100644 index 0000000..d674f0c --- /dev/null +++ b/resources/js/components/public/BentoGrid.vue @@ -0,0 +1,150 @@ + + + diff --git a/resources/js/components/public/FinalCta.vue b/resources/js/components/public/FinalCta.vue new file mode 100644 index 0000000..eeb1dee --- /dev/null +++ b/resources/js/components/public/FinalCta.vue @@ -0,0 +1,32 @@ + + + diff --git a/resources/js/components/public/Footer.vue b/resources/js/components/public/Footer.vue new file mode 100644 index 0000000..936a471 --- /dev/null +++ b/resources/js/components/public/Footer.vue @@ -0,0 +1,55 @@ + + + diff --git a/resources/js/components/public/Hero.vue b/resources/js/components/public/Hero.vue new file mode 100644 index 0000000..6ef3f30 --- /dev/null +++ b/resources/js/components/public/Hero.vue @@ -0,0 +1,78 @@ + + + diff --git a/resources/js/components/public/LogoMarquee.vue b/resources/js/components/public/LogoMarquee.vue new file mode 100644 index 0000000..5d50c86 --- /dev/null +++ b/resources/js/components/public/LogoMarquee.vue @@ -0,0 +1,42 @@ + + + diff --git a/resources/js/components/public/Navbar.vue b/resources/js/components/public/Navbar.vue new file mode 100644 index 0000000..dc18e97 --- /dev/null +++ b/resources/js/components/public/Navbar.vue @@ -0,0 +1,99 @@ + + + diff --git a/resources/js/components/public/Pricing.vue b/resources/js/components/public/Pricing.vue new file mode 100644 index 0000000..34c8ca2 --- /dev/null +++ b/resources/js/components/public/Pricing.vue @@ -0,0 +1,148 @@ + + + diff --git a/resources/js/pages/Dashboard.vue b/resources/js/pages/Dashboard.vue deleted file mode 100644 index ca26f66..0000000 --- a/resources/js/pages/Dashboard.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - diff --git a/resources/js/pages/Welcome.vue b/resources/js/pages/Welcome.vue index 0110393..2a1398d 100644 --- a/resources/js/pages/Welcome.vue +++ b/resources/js/pages/Welcome.vue @@ -26,7 +26,7 @@ withDefaults(