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 @@ \ 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') + + + + + +
+ +
+
+
+
Hello card
+
+
+
+
+
+ +
+ +@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') + + + + + +
+ +
+
+
+
Hello card
+
+
+
+
+
+ +
+ +@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') + + + + + +
+ +
+
+
+
Tabel Data
+
+
+ + + + + + + + + + + + +
NoNamaEmailRoleDibuat padaAksi
+
+
+
+ +
+ + + + + + + +@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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + +
+ +
+ + + + + +
+
+ + + + + +
+ +
+
+
+
Hello card
+
+
+
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 03abba3..9aab9b3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,7 @@ use App\Http\Controllers\DashboardController; use App\Http\Controllers\LandingController; use App\Http\Controllers\ProfileController; +use App\Http\Controllers\UsersController; use Illuminate\Support\Facades\Route; Route::get('/', function () { @@ -22,6 +23,8 @@ Route::resource('beranda', LandingController::class); Route::middleware(['auth', 'role.auth'])->group(function() { Route::resource('dashboard', DashboardController::class); + Route::resource('users', UsersController::class); + Route::get('users/fetch/data', [UsersController::class, 'getData'])->name('users.fetchData'); }); require __DIR__.'/auth.php';