diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php new file mode 100644 index 0000000..50796ca --- /dev/null +++ b/app/Http/Controllers/RoleController.php @@ -0,0 +1,23 @@ +orderBy('name') + ->get(['id', 'name', 'created_at']); + + return view('role.index', [ + 'roles' => $roles, + ]); + } +} diff --git a/app/Models/Role.php b/app/Models/Role.php new file mode 100644 index 0000000..c5fa26b --- /dev/null +++ b/app/Models/Role.php @@ -0,0 +1,9 @@ +id(); + $table->string('name')->unique(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('roles'); + } +}; diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index c2d3a65..44109d3 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -15,6 +15,9 @@ {{ __('Dashboard') }} + + {{ __('Roles') }} + @@ -70,6 +73,9 @@ {{ __('Dashboard') }} + + {{ __('Roles') }} + diff --git a/resources/views/role/index.blade.php b/resources/views/role/index.blade.php new file mode 100644 index 0000000..e31be38 --- /dev/null +++ b/resources/views/role/index.blade.php @@ -0,0 +1,42 @@ + + +

+ {{ __('Roles') }} +

+
+ +
+
+
+
+
+ + + + + + + + + + @forelse ($roles as $role) + + + + + + @empty + + + + @endforelse + +
IDNameCreated
{{ $role->id }}{{ $role->name }}{{ $role->created_at?->format('Y-m-d H:i') }}
+ No roles found. +
+
+
+
+
+
+
diff --git a/routes/web.php b/routes/web.php index 74bb7ca..36af0fe 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ middleware(['auth', 'verified'])->name('dashboard'); Route::middleware('auth')->group(function () { + Route::get('/role', [RoleController::class, 'index'])->name('role.index'); 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'); diff --git a/tests/Feature/RoleIndexTest.php b/tests/Feature/RoleIndexTest.php new file mode 100644 index 0000000..8381cd4 --- /dev/null +++ b/tests/Feature/RoleIndexTest.php @@ -0,0 +1,23 @@ +get('/role')->assertRedirect('/login'); +}); + +test('authenticated users can view the role index', function () { + Role::query()->create(['name' => 'Admin']); + Role::query()->create(['name' => 'Editor']); + + $response = $this + ->actingAs(User::factory()->create()) + ->get('/role'); + + $response + ->assertSuccessful() + ->assertSee('Roles') + ->assertSee('Admin') + ->assertSee('Editor'); +});