From c4072d9facd3f4d5361139303f3b8bc7c9b65135 Mon Sep 17 00:00:00 2001
From: Mahayoga
Date: Thu, 12 Mar 2026 05:28:42 +0700
Subject: [PATCH] Halaman Admin
---
.../Auth/AuthenticatedSessionController.php | 15 +-
app/Http/Controllers/UsersController.php | 98 ++++
app/Http/Middleware/RoleAuth.php | 6 +-
app/Http/Requests/Auth/LoginRequest.php | 12 +-
app/Models/User.php | 1 +
...3_11_142032_add_column_role_table_user.php | 29 ++
database/seeders/DatabaseSeeder.php | 18 +-
resources/views/admin/layouts/app.blade.php | 13 +-
.../views/admin/layouts/sidebar.blade.php | 115 +----
.../data_hasil_kecemasan/index.blade.php | 43 ++
.../admin/pages/data_soal/index.blade.php | 43 ++
.../admin/pages/data_user/index.blade.php | 229 +++++++++
.../admin/pages/data_user/sample-page.html | 480 ++++++++++++++++++
routes/web.php | 3 +
14 files changed, 1004 insertions(+), 101 deletions(-)
create mode 100644 app/Http/Controllers/UsersController.php
create mode 100644 database/migrations/2026_03_11_142032_add_column_role_table_user.php
create mode 100644 resources/views/admin/pages/data_hasil_kecemasan/index.blade.php
create mode 100644 resources/views/admin/pages/data_soal/index.blade.php
create mode 100644 resources/views/admin/pages/data_user/index.blade.php
create mode 100644 resources/views/admin/pages/data_user/sample-page.html
diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php
index d0c9570..cfd9bc7 100644
--- a/app/Http/Controllers/Auth/AuthenticatedSessionController.php
+++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php
@@ -24,15 +24,18 @@ public function create(): View
*/
public function store(LoginRequest $request)
{
- $request->authenticate();
+ $auth_status = $request->authenticate();
+
+ if(!$auth_status['auth_status']) {
+ return response()->json([
+ 'status' => false,
+ 'msg' => 'Auth Failed'
+ ]);
+ }
$request->session()->regenerate();
- if(Auth::user()->role == 'admin') {
- session(['is_logged_in_admin' => true]);
- } else {
- session(['is_logged_in_admin' => false]);
- }
+ session(['who_roles' => Auth::user()->role]);
session(['is_logged_in' => true]);
diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php
new file mode 100644
index 0000000..34768a6
--- /dev/null
+++ b/app/Http/Controllers/UsersController.php
@@ -0,0 +1,98 @@
+json([
+ 'status' => true,
+ 'data' => $data->toArray()
+ ]);
+ }
+
+ /**
+ * Display a listing of the resource.
+ */
+ public function index()
+ {
+ return view('admin.pages.data_user.index');
+ }
+
+ /**
+ * Show the form for creating a new resource.
+ */
+ public function create()
+ {
+ //
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ */
+ public function store(Request $request)
+ {
+ //
+ }
+
+ /**
+ * Display the specified resource.
+ */
+ public function show(string $id)
+ {
+ $data = User::where('id', $id)->get();
+ return response()->json([
+ 'status' => true,
+ 'data' => $data[0]
+ ]);
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ */
+ public function edit(string $id)
+ {
+ $data = User::where('id', $id)->get();
+ return response()->json([
+ 'status' => true,
+ 'data' => $data[0]
+ ]);
+ }
+
+ /**
+ * Update the specified resource in storage.
+ */
+ public function update(Request $request, string $id)
+ {
+ $data = User::where('id', $id)->update([
+ 'name' => $request->name,
+ 'email' => $request->email,
+ 'role' => $request->role
+ ]);
+
+ return response()->json([
+ 'status' => true,
+ 'msg' => 'Data berhasil di edit'
+ ]);
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ */
+ public function destroy(string $id)
+ {
+ $data = User::where('id', $id)->delete();
+
+ return response()->json([
+ 'status' => true,
+ 'msg' => 'Data berhasil di hapus'
+ ]);
+ }
+}
diff --git a/app/Http/Middleware/RoleAuth.php b/app/Http/Middleware/RoleAuth.php
index 27c99c0..a59a97a 100644
--- a/app/Http/Middleware/RoleAuth.php
+++ b/app/Http/Middleware/RoleAuth.php
@@ -15,7 +15,11 @@ class RoleAuth
*/
public function handle(Request $request, Closure $next): Response
{
- if(!session('is_logged_in_admin')) {
+ if(!session('is_logged_in')) {
+ if(session('who_roles') == 'user') {
+ return redirect()->route('dashboard.index');
+ }
+
return redirect()->route('beranda.index');
}
return $next($request);
diff --git a/app/Http/Requests/Auth/LoginRequest.php b/app/Http/Requests/Auth/LoginRequest.php
index 2574642..4db908c 100644
--- a/app/Http/Requests/Auth/LoginRequest.php
+++ b/app/Http/Requests/Auth/LoginRequest.php
@@ -37,19 +37,29 @@ public function rules(): array
*
* @throws \Illuminate\Validation\ValidationException
*/
- public function authenticate(): void
+ public function authenticate()
{
$this->ensureIsNotRateLimited();
if (! Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) {
RateLimiter::hit($this->throttleKey());
+ return([
+ 'auth_status' => false,
+ 'msg' => 'Email atau kata sandi salah'
+ ]);
+
throw ValidationException::withMessages([
'email' => trans('auth.failed'),
]);
}
RateLimiter::clear($this->throttleKey());
+
+ return([
+ 'auth_status' => true,
+ 'msg' => 'Login berhasil'
+ ]);
}
/**
diff --git a/app/Models/User.php b/app/Models/User.php
index 749c7b7..befbc63 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -21,6 +21,7 @@ class User extends Authenticatable
'name',
'email',
'password',
+ 'role'
];
/**
diff --git a/database/migrations/2026_03_11_142032_add_column_role_table_user.php b/database/migrations/2026_03_11_142032_add_column_role_table_user.php
new file mode 100644
index 0000000..9085ff9
--- /dev/null
+++ b/database/migrations/2026_03_11_142032_add_column_role_table_user.php
@@ -0,0 +1,29 @@
+enum('role', ['admin', 'psikolog', 'user'])->after('password');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('users', function (Blueprint $table) {
+ $table->dropColumn('role');
+ });
+ }
+};
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index 6b901f8..4b393cc 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -17,9 +17,25 @@ public function run(): void
{
// User::factory(10)->create();
+ User::factory()->create([
+ 'name' => 'Test Admin',
+ 'email' => 'admin@gmail.com',
+ 'password' => password_hash('admin1234', PASSWORD_BCRYPT, ['cost' => 12]),
+ 'role' => 'admin',
+ ]);
+
+ User::factory()->create([
+ 'name' => 'Test Psikolog',
+ 'email' => 'psikolog@gmail.com',
+ 'password' => password_hash('psikolog1234', PASSWORD_BCRYPT, ['cost' => 12]),
+ 'role' => 'psikolog',
+ ]);
+
User::factory()->create([
'name' => 'Test User',
- 'email' => 'test@example.com',
+ 'email' => 'user@gmail.com',
+ 'password' => password_hash('user1234', PASSWORD_BCRYPT, ['cost' => 12]),
+ 'role' => 'user',
]);
}
}
diff --git a/resources/views/admin/layouts/app.blade.php b/resources/views/admin/layouts/app.blade.php
index 9f1340b..7da408c 100644
--- a/resources/views/admin/layouts/app.blade.php
+++ b/resources/views/admin/layouts/app.blade.php
@@ -11,6 +11,7 @@
+
@@ -27,6 +28,8 @@
+
+
@@ -58,7 +61,7 @@
-
+ {{-- --}}
@@ -68,12 +71,20 @@
+
+
+
+ @yield('script')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/views/admin/layouts/sidebar.blade.php b/resources/views/admin/layouts/sidebar.blade.php
index dbcbff1..7315ade 100644
--- a/resources/views/admin/layouts/sidebar.blade.php
+++ b/resources/views/admin/layouts/sidebar.blade.php
@@ -3,7 +3,7 @@
@@ -16,100 +16,33 @@
- UI Components
+ Data Master
-
-
-
- Typography
-
-
-
-
-
- Color
-
-
-
-
-
- Icons
-
-
+ @if(Auth::user()->role == 'admin')
+
+
+
+ Data Pengguna
+
+
+ @endif
-
- Pages
-
-
-
-
-
- Login
-
-
-
-
-
- Register
-
-
-
-
- Other
-
-
-
-
-
-
- Sample page
-
-
+ @if(Auth::user()->role == 'psikolog')
+
+
+
+ Data Soal
+
+
+
+
+
+ Data Hasil Kecemasan
+
+
+ @endif
-
-
-
-
Upgrade To Pro
-
To get more features and components
-
Buy Now
-
-
\ No newline at end of file
diff --git a/resources/views/admin/pages/data_hasil_kecemasan/index.blade.php b/resources/views/admin/pages/data_hasil_kecemasan/index.blade.php
new file mode 100644
index 0000000..9c3f6bc
--- /dev/null
+++ b/resources/views/admin/pages/data_hasil_kecemasan/index.blade.php
@@ -0,0 +1,43 @@
+@extends('admin.layouts.app')
+@section('content')
+
+
+
+
+
+
+
+@endsection
+
+@section('script')
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/pages/data_soal/index.blade.php b/resources/views/admin/pages/data_soal/index.blade.php
new file mode 100644
index 0000000..9c3f6bc
--- /dev/null
+++ b/resources/views/admin/pages/data_soal/index.blade.php
@@ -0,0 +1,43 @@
+@extends('admin.layouts.app')
+@section('content')
+
+
+
+
+
+
+
+@endsection
+
+@section('script')
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/pages/data_user/index.blade.php b/resources/views/admin/pages/data_user/index.blade.php
new file mode 100644
index 0000000..18f3c8b
--- /dev/null
+++ b/resources/views/admin/pages/data_user/index.blade.php
@@ -0,0 +1,229 @@
+@extends('admin.layouts.app')
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No
+ Nama
+ Email
+ Role
+ Dibuat pada
+ Aksi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nama User
+
+
+
+ Email
+
+
+
+ Role
+
+ Admin
+ Psikolog
+ User
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apakah anda akan menghapus data user dengan nama ini?
+
+
+
+
+
+@endsection
+
+@section('script')
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin/pages/data_user/sample-page.html b/resources/views/admin/pages/data_user/sample-page.html
new file mode 100644
index 0000000..918720a
--- /dev/null
+++ b/resources/views/admin/pages/data_user/sample-page.html
@@ -0,0 +1,480 @@
+
+
+
+
+
+
Sample Page | Mantis Bootstrap 5 Admin Template
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+