From 2fba9f7ab8e1e9c027d3e9d24f020579bf9797f8 Mon Sep 17 00:00:00 2001 From: kusowl Date: Thu, 15 Jan 2026 15:07:58 +0530 Subject: [PATCH] refactor: replace user dashboard with explore page and improve broker UI components - Removed `UserDashboardController` and related user dashboard views. - Introduced `ExplorePageController` and redesigned `explore.blade.php` as the main user-facing page. - Updated routing logic to redirect users (non-admin and non-broker) to the `explore` page. - Added dedicated sidebar and layout components for the broker dashboard, improving structure and navigation. --- .../AuthenticatedUserController.php | 3 +- .../Broker/BrokerProfileController.php | 2 +- ...ntroller.php => ExplorePageController.php} | 26 +++++- app/Http/Middleware/HasRole.php | 4 +- .../Requests/StoreBrokerProfileRequest.php | 2 +- app/Models/User.php | 1 - resources/css/app.css | 2 +- resources/js/menu.js | 6 ++ resources/js/sidebar.js | 26 ++++++ .../dashboard/broker/layout.blade.php | 26 ++++++ .../dashboard/broker/navbar.blade.php | 26 +----- .../dashboard/broker/sidebar/index.blade.php | 59 ++++++++++++ .../dashboard/broker/sidebar/item.blade.php | 5 + .../dashboard/page-heading.blade.php | 2 +- .../views/components/icon-square.blade.php | 3 +- resources/views/components/navbar.blade.php | 2 +- resources/views/components/ui/alert.blade.php | 2 +- .../views/components/ui/button.blade.php | 3 +- .../dashboards/broker/deals/create.blade.php | 30 +++--- .../dashboards/broker/deals/edit.blade.php | 35 ++++--- .../views/dashboards/broker/index.blade.php | 24 ++--- .../dashboards/broker/profile/edit.blade.php | 32 ++++--- .../dashboards/broker/profile/show.blade.php | 60 ++++++------ .../views/dashboards/user/index.blade.php | 64 ------------- resources/views/explore.blade.php | 92 +++++++++++++++++++ routes/web.php | 11 +-- 26 files changed, 347 insertions(+), 201 deletions(-) rename app/Http/Controllers/{User/UserDashboardController.php => ExplorePageController.php} (55%) create mode 100644 resources/js/menu.js create mode 100644 resources/js/sidebar.js create mode 100644 resources/views/components/dashboard/broker/layout.blade.php create mode 100644 resources/views/components/dashboard/broker/sidebar/index.blade.php create mode 100644 resources/views/components/dashboard/broker/sidebar/item.blade.php delete mode 100644 resources/views/dashboards/user/index.blade.php create mode 100644 resources/views/explore.blade.php diff --git a/app/Http/Controllers/AuthenticatedUserController.php b/app/Http/Controllers/AuthenticatedUserController.php index 7995968..9573b6a 100644 --- a/app/Http/Controllers/AuthenticatedUserController.php +++ b/app/Http/Controllers/AuthenticatedUserController.php @@ -31,8 +31,7 @@ public function store(AuthenticateUserRequest $request) $route = match ($user->role) { UserTypes::Admin->value => 'admin.dashboard', - UserTypes::Broker->value => 'broker.dashboard', - UserTypes::User->value => 'user.dashboard', + UserTypes::Broker->value, UserTypes::User->value => 'explore', }; return to_route($route); diff --git a/app/Http/Controllers/Broker/BrokerProfileController.php b/app/Http/Controllers/Broker/BrokerProfileController.php index 8379b21..72d668c 100644 --- a/app/Http/Controllers/Broker/BrokerProfileController.php +++ b/app/Http/Controllers/Broker/BrokerProfileController.php @@ -6,7 +6,6 @@ use App\Http\Requests\StoreBrokerProfileRequest; use App\Models\Broker; use App\Models\User; -use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Str; @@ -83,6 +82,7 @@ public function update(StoreBrokerProfileRequest $request, User $profile) ->with('success', 'Profile updated successfully.'); } catch (\Throwable $e) { Log::error('Broker Profile Update Failed: '.$e->getMessage(), $e->getTrace()); + return back()->withInput()->with('error', 'Something went wrong.'); } } diff --git a/app/Http/Controllers/User/UserDashboardController.php b/app/Http/Controllers/ExplorePageController.php similarity index 55% rename from app/Http/Controllers/User/UserDashboardController.php rename to app/Http/Controllers/ExplorePageController.php index 41742f2..1f0e8d9 100644 --- a/app/Http/Controllers/User/UserDashboardController.php +++ b/app/Http/Controllers/ExplorePageController.php @@ -1,15 +1,17 @@ with('profileLink', $this->profileLink()) ->with('deals', $this->deals()); } @@ -38,4 +40,18 @@ protected function deals() ->latest() ->paginate(); } + + /** + * Determines the link to the user's profile dashboard + * based on the user's role. + * + * @return string The URL for the user's dashboard. + */ + protected function profileLink() + { + $user = Auth::user(); + if ($user->role === UserTypes::Broker->value) { + return route('broker.profile.show', $user); + } + } } diff --git a/app/Http/Middleware/HasRole.php b/app/Http/Middleware/HasRole.php index 13b28ac..126a5bc 100644 --- a/app/Http/Middleware/HasRole.php +++ b/app/Http/Middleware/HasRole.php @@ -13,9 +13,9 @@ class HasRole * * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ - public function handle(Request $request, Closure $next, string $role): Response + public function handle(Request $request, Closure $next, ...$roles): Response { - if ($request->user()->role === $role) { + if (in_array($request->user()->role, $roles)) { return $next($request); } else { abort('401'); diff --git a/app/Http/Requests/StoreBrokerProfileRequest.php b/app/Http/Requests/StoreBrokerProfileRequest.php index 85f86fc..44b4cf7 100644 --- a/app/Http/Requests/StoreBrokerProfileRequest.php +++ b/app/Http/Requests/StoreBrokerProfileRequest.php @@ -27,7 +27,7 @@ public function rules(): array 'bio' => 'required|string|min:10|max:255', 'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($this->user()->id)], 'phone' => 'required|string|min:10|max:255', - 'location' => 'required|string|min:3|max:255' + 'location' => 'required|string|min:3|max:255', ]; } } diff --git a/app/Models/User.php b/app/Models/User.php index 3abaf67..27d0737 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -3,7 +3,6 @@ namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; -use App\Enums\UserTypes; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; diff --git a/resources/css/app.css b/resources/css/app.css index c691ffa..b1a7e36 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -18,7 +18,7 @@ @layer components{ @import "./button.css"; .wrapper { - @apply px-4 md:px-12 + @apply px-4 md:px-8 } diff --git a/resources/js/menu.js b/resources/js/menu.js new file mode 100644 index 0000000..9aa48f1 --- /dev/null +++ b/resources/js/menu.js @@ -0,0 +1,6 @@ +function showMenu(e){ + const menu = e.nextElementSibling; + menu.classList.toggle('invisible'); +} + +document.showMenu = showMenu; diff --git a/resources/js/sidebar.js b/resources/js/sidebar.js new file mode 100644 index 0000000..f69116f --- /dev/null +++ b/resources/js/sidebar.js @@ -0,0 +1,26 @@ +const sidebar = document.getElementById('sidebar'); +const sidebarWrapper = document.getElementById('sidebarWrapper'); +const openBtn = document.getElementById('openSidebarBtn') +const closeBtn = document.getElementById('closeSidebarBtn') + +const classList = ['md:w-50', 'lg:w-60']; + +openBtn.addEventListener('click', () => openSidebar()); +closeBtn.addEventListener('click', () => closeSidebar()); + +function openSidebar() { + classList.forEach(cl => sidebarWrapper.classList.toggle(cl)) + + sidebar.classList.toggle('hidden'); + + closeBtn.classList.toggle('hidden') + openBtn.classList.toggle('hidden') +} + +function closeSidebar() { + classList.forEach(cl => sidebarWrapper.classList.toggle(cl)) + openBtn.classList.toggle('hidden') + closeBtn.classList.toggle('hidden') + + sidebar.classList.toggle('hidden'); +} diff --git a/resources/views/components/dashboard/broker/layout.blade.php b/resources/views/components/dashboard/broker/layout.blade.php new file mode 100644 index 0000000..532c1c1 --- /dev/null +++ b/resources/views/components/dashboard/broker/layout.blade.php @@ -0,0 +1,26 @@ +@props(['title' => '']) + +
+
+ @vite('resources/js/nav-menu.js') +
diff --git a/resources/views/components/dashboard/broker/navbar.blade.php b/resources/views/components/dashboard/broker/navbar.blade.php index 4cb03bb..5b7f43a 100644 --- a/resources/views/components/dashboard/broker/navbar.blade.php +++ b/resources/views/components/dashboard/broker/navbar.blade.php @@ -1,32 +1,12 @@