From 74f52a9e7d70846e41b3f74e2266484d9e964cce Mon Sep 17 00:00:00 2001 From: pesu98 Date: Mon, 11 May 2026 11:46:03 +0800 Subject: [PATCH] tambah role functionality --- app/Http/Controllers/RoleController.php | 18 ++++++++ app/Http/Controllers/UserController.php | 16 +++++++ resources/views/roles/create.blade.php | 32 ++++++++++++++ resources/views/roles/index.blade.php | 12 ++++++ resources/views/users/index.blade.php | 56 +++++++++++++++++++++++++ routes/web.php | 2 + 6 files changed, 136 insertions(+) create mode 100644 app/Http/Controllers/UserController.php create mode 100644 resources/views/roles/create.blade.php create mode 100644 resources/views/users/index.blade.php diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php index f65a9f7..348a95e 100644 --- a/app/Http/Controllers/RoleController.php +++ b/app/Http/Controllers/RoleController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers; use App\Models\Role; +use Illuminate\Http\RedirectResponse; +use Illuminate\Http\Request; use Illuminate\View\View; class RoleController extends Controller @@ -13,4 +15,20 @@ class RoleController extends Controller return view('roles.index', compact('roles')); } + + public function create(): View + { + return view('roles.create'); + } + + public function store(Request $request): RedirectResponse + { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255', 'unique:roles,name'], + ]); + + Role::create($validated); + + return redirect()->route('roles.index')->with('success', __('Role created successfully.')); + } } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000..3201ed4 --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,16 @@ +paginate(10); + + return view('users.index', compact('users')); + } +} diff --git a/resources/views/roles/create.blade.php b/resources/views/roles/create.blade.php new file mode 100644 index 0000000..a0fe162 --- /dev/null +++ b/resources/views/roles/create.blade.php @@ -0,0 +1,32 @@ + + +

+ {{ __('New Role') }} +

+
+ +
+
+
+
+
+ @csrf + +
+ + + +
+ +
+ {{ __('Create Role') }} + + {{ __('Cancel') }} + +
+
+
+
+
+
+
diff --git a/resources/views/roles/index.blade.php b/resources/views/roles/index.blade.php index fc778d3..2f97378 100644 --- a/resources/views/roles/index.blade.php +++ b/resources/views/roles/index.blade.php @@ -9,6 +9,18 @@
+ + + @if (session('success')) +
+ {{ session('success') }} +
+ @endif + diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php new file mode 100644 index 0000000..ab5255d --- /dev/null +++ b/resources/views/users/index.blade.php @@ -0,0 +1,56 @@ + + +

+ {{ __('Users') }} +

+
+ +
+
+
+
+
+ + + + + + + + + @foreach ($users as $user) + + + + + + @endforeach + +
+ {{ __('Name') }} + + {{ __('Email') }} + + {{ __('Joined') }} +
+ {{ $user->name }} + + {{ $user->email }} + + {{ $user->created_at->format('M j, Y') }} +
+ + @if ($users->isEmpty()) +

{{ __('No users found.') }}

+ @endif + + @if ($users->hasPages()) +
+ {{ $users->links() }} +
+ @endif +
+
+
+ + diff --git a/routes/web.php b/routes/web.php index 2e52264..ab50ce3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -16,6 +16,8 @@ Route::get('/dashboard', function () { Route::middleware('auth')->group(function () { Route::get('/users', [UserController::class, 'index'])->name('users.index'); Route::get('/roles', [RoleController::class, 'index'])->name('roles.index'); + Route::get('/roles/create', [RoleController::class, 'create'])->name('roles.create'); + Route::post('/roles', [RoleController::class, 'store'])->name('roles.store'); 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');