diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php new file mode 100644 index 0000000..2b5916d --- /dev/null +++ b/app/Http/Controllers/AdminController.php @@ -0,0 +1,25 @@ +user()->department_id)->get(); // Example query + + // return view('coordinator.responses', compact('responses')); + return view('coordinator.responses'); + } +} diff --git a/app/Http/Controllers/FacultyController.php b/app/Http/Controllers/FacultyController.php new file mode 100644 index 0000000..a062bec --- /dev/null +++ b/app/Http/Controllers/FacultyController.php @@ -0,0 +1,39 @@ +validate([ + 'response' => 'required|string', + ]); + + // Save the response, perhaps to a 'responses' table + // Response::create([ + // 'faculty_id' => auth()->user()->id, + // 'response' => $validated['response'], + // ]); + + // Redirect or return a success message + return redirect()->route('faculty.dashboard')->with('status', 'Response submitted successfully'); + } +} diff --git a/app/Http/Middleware/CheckRole.php b/app/Http/Middleware/CheckRole.php new file mode 100644 index 0000000..91f4fc7 --- /dev/null +++ b/app/Http/Middleware/CheckRole.php @@ -0,0 +1,25 @@ +role->name === $role) { + return $next($request); + } + + abort(403, 'Unauthorized access.'); + } +} diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php new file mode 100644 index 0000000..f76671f --- /dev/null +++ b/resources/views/admin/dashboard.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.app') + +@section('header') +

+ Admin Dashboard +

+@endsection + +@section('content') +
+
+
+ Welcome, Admin! Here you can manage roles, users, and departments. +
+
+
+ Manage Roles
+ Manage Departments
+ Manage Users
+ Edit Profile +
+
+@endsection diff --git a/resources/views/admin/responses.blade.php b/resources/views/admin/responses.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/coordinator/dashboard.blade.php b/resources/views/coordinator/dashboard.blade.php new file mode 100644 index 0000000..6f68b7c --- /dev/null +++ b/resources/views/coordinator/dashboard.blade.php @@ -0,0 +1,22 @@ +@extends('layouts.app') + +@section('header') +

+ Coordinator Dashboard +

+@endsection + +@section('content') +
+
+
+ Welcome, Coordinator! Manage department-related tasks here. +
+
+
+ View Departments
+ View Faculty
+ Edit Profile +
+
+@endsection diff --git a/resources/views/coordinator/responses.blade.php b/resources/views/coordinator/responses.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/faculty/dashboard.blade.php b/resources/views/faculty/dashboard.blade.php new file mode 100644 index 0000000..70845d8 --- /dev/null +++ b/resources/views/faculty/dashboard.blade.php @@ -0,0 +1,20 @@ +@extends('layouts.app') + +@section('header') +

+ Faculty Dashboard +

+@endsection + +@section('content') +
+
+
+ Welcome, Faculty! Manage your tasks and profile here. +
+
+
+ Edit Profile +
+
+@endsection diff --git a/resources/views/faculty/response-form.blade.php b/resources/views/faculty/response-form.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index c5ff315..9b13da3 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -19,17 +19,17 @@ @include('layouts.navigation') - @isset($header) + @hasSection('header')
- {{ $header }} + @yield('header')
- @endisset + @endif
- {{ $slot }} + @yield('content')
diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index c2d3a65..1f8dfc8 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -15,6 +15,28 @@ {{ __('Dashboard') }} + + + + @can('isAdmin') + + {{ __('View Form Responses') }} + + @endcan + + @can('isCoordinator') + + {{ __('View Form Responses') }} + + @endcan + + @can('isFaculty') + + {{ __('Respond to a Form') }} + + @endcan @@ -70,6 +92,25 @@ {{ __('Dashboard') }} + + + @can('isAdmin') + + {{ __('View Form Responses') }} + + @endcan + + @can('isCoordinator') + + {{ __('View Form Responses') }} + + @endcan + + @can('isFaculty') + + {{ __('Respond to a Form') }} + + @endcan diff --git a/routes/web.php b/routes/web.php index 8f9c46f..b38956b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,31 +2,65 @@ use App\Http\Controllers\ProfileController; use Illuminate\Support\Facades\Route; - use App\Http\Controllers\RoleController; use App\Http\Controllers\DepartmentController; use App\Http\Controllers\UserController; - - +use App\Http\Controllers\AdminController; +use App\Http\Controllers\CoordinatorController; +use App\Http\Controllers\FacultyController; +use App\Http\Middleware\CheckRole; Route::get('/', function () { return view('welcome'); }); Route::get('/dashboard', function () { - return view('dashboard'); + // Redirect users to different pages based on their role + $user = auth()->user(); + + if ($user->role->name === 'Admin') { + return redirect()->route('admin.dashboard'); + } elseif ($user->role->name === 'Coordinator') { + return redirect()->route('coordinator.dashboard'); + } elseif ($user->role->name === 'Faculty') { + return redirect()->route('faculty.dashboard'); + } else { + return abort(403, 'Unauthorized'); + } })->middleware(['auth', 'verified'])->name('dashboard'); + Route::middleware('auth')->group(function () { Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); }); +// Admin routes +Route::middleware(['auth', CheckRole::class . ':Admin'])->group(function () { + Route::get('/admin', [AdminController::class, 'index'])->name('admin.dashboard'); + Route::get('/admin/responses', [AdminController::class, 'viewResponses'])->name('admin.responses'); +}); + +// Coordinator routes +Route::middleware(['auth', CheckRole::class . ':Coordinator'])->group(function () { + Route::get('/coordinator', [CoordinatorController::class, 'index'])->name('coordinator.dashboard'); + Route::get('/coordinator/responses', [CoordinatorController::class, 'viewResponses'])->name('coordinator.responses'); +}); + + +// Faculty routes +Route::middleware(['auth', CheckRole::class . ':Faculty'])->group(function () { + Route::get('/faculty', [FacultyController::class, 'index'])->name('faculty.dashboard'); + Route::get('/faculty/response-form', [FacultyController::class, 'responseForm'])->name('faculty.responseForm'); + Route::post('/faculty/submit-response', [FacultyController::class, 'submitResponse'])->name('faculty.submitResponse'); +}); + +// API Resources Route::apiResources([ 'roles' => RoleController::class, 'departments' => DepartmentController::class, 'users' => UserController::class, ]); -require __DIR__.'/auth.php'; +require __DIR__ . '/auth.php';