From f38f8a286f8d9aa62cb8fc65bdf45417913ac3dc Mon Sep 17 00:00:00 2001 From: ariefabbauftech-ai Date: Mon, 1 Sep 2025 09:45:58 +0700 Subject: [PATCH] [Login Admin] Done --- .../Http/Controllers/AdminAuthController.php | 41 +++++++ .../Controllers/AdminAuthController.php.php | 36 ------ backend/app/Models/Admin.php | 10 +- backend/config/auth.php | 81 +------------ ...5_08_29_091312_create_admins_table.php.php | 8 +- backend/database/seeders/AdminSeeder.php | 14 ++- backend/database/seeders/DatabaseSeeder.php | 16 +-- backend/public/images/logo.png | Bin 0 -> 20947 bytes .../views/admin/auth/login.blade.php | 109 +++++++++++++++++ .../resources/views/admin/dashboard.blade.php | 25 ++-- backend/resources/views/admin/login.blade.php | 114 ------------------ backend/routes/web.php | 18 ++- 12 files changed, 203 insertions(+), 269 deletions(-) create mode 100644 backend/app/Http/Controllers/AdminAuthController.php delete mode 100644 backend/app/Http/Controllers/AdminAuthController.php.php create mode 100644 backend/public/images/logo.png create mode 100644 backend/resources/views/admin/auth/login.blade.php delete mode 100644 backend/resources/views/admin/login.blade.php diff --git a/backend/app/Http/Controllers/AdminAuthController.php b/backend/app/Http/Controllers/AdminAuthController.php new file mode 100644 index 0000000..aa58424 --- /dev/null +++ b/backend/app/Http/Controllers/AdminAuthController.php @@ -0,0 +1,41 @@ +validate([ + 'email' => ['required','email'], + 'password' => ['required'], + ]); + + $remember = $request->boolean('remember'); + + if (Auth::guard('admin')->attempt($credentials, $remember)) { + $request->session()->regenerate(); + return redirect()->intended(route('admin.dashboard')); + } + + return back()->withErrors([ + 'email' => 'Email atau password salah.', + ])->onlyInput('email'); + } + + public function logout(Request $request) + { + Auth::guard('admin')->logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + return redirect()->route('admin.login'); + } +} diff --git a/backend/app/Http/Controllers/AdminAuthController.php.php b/backend/app/Http/Controllers/AdminAuthController.php.php deleted file mode 100644 index 62fab46..0000000 --- a/backend/app/Http/Controllers/AdminAuthController.php.php +++ /dev/null @@ -1,36 +0,0 @@ -only('email', 'password'); - - if (Auth::guard('admin')->attempt($credentials)) { - return redirect()->route('admin.dashboard')->with('success', 'Login berhasil!'); - } - - return back()->with('error', 'Email atau password salah.'); - } - - // Logout - public function logout(Request $request) - { - Auth::guard('admin')->logout(); - return redirect()->route('admin.login'); - } -} diff --git a/backend/app/Models/Admin.php b/backend/app/Models/Admin.php index e8cd987..4678227 100644 --- a/backend/app/Models/Admin.php +++ b/backend/app/Models/Admin.php @@ -9,13 +9,7 @@ class Admin extends Authenticatable { use Notifiable; - protected $table = 'admins'; + protected $fillable = ['name','email','password']; - protected $fillable = [ - 'username', 'email', 'password', - ]; - - protected $hidden = [ - 'password', 'remember_token', - ]; + protected $hidden = ['password','remember_token']; } diff --git a/backend/config/auth.php b/backend/config/auth.php index 734d8e1..3a8d9d6 100644 --- a/backend/config/auth.php +++ b/backend/config/auth.php @@ -2,35 +2,11 @@ return [ - /* - |-------------------------------------------------------------------------- - | Authentication Defaults - |-------------------------------------------------------------------------- - | - | This option controls the default authentication "guard" and password - | reset options for your application. You may change these defaults - | as required, but they're a perfect start for most applications. - | - */ - 'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ], - /* - |-------------------------------------------------------------------------- - | Authentication Guards - |-------------------------------------------------------------------------- - | - | Next, you may define every authentication guard for your application. - | A great default configuration has been defined for you here which - | uses session storage and the Eloquent user provider. - | - | Supported drivers: "session", "token" - | - */ - 'guards' => [ // Guard untuk user biasa 'web' => [ @@ -38,39 +14,13 @@ return [ 'provider' => 'users', ], - // Guard untuk admin (login via web session) + // Guard untuk admin 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], - - // Guard API untuk user (misalnya dengan sanctum / token) - 'api' => [ - 'driver' => 'token', - 'provider' => 'users', - 'hash' => false, - ], - - // Guard API untuk admin - 'admin-api' => [ - 'driver' => 'token', - 'provider' => 'admins', - 'hash' => false, - ], ], - /* - |-------------------------------------------------------------------------- - | User Providers - |-------------------------------------------------------------------------- - | - | All authentication drivers have a user provider. This defines how the - | users are retrieved from your database or other storage systems. - | - | Supported drivers: "database", "eloquent" - | - */ - 'providers' => [ // Provider untuk user biasa 'users' => [ @@ -83,25 +33,8 @@ return [ 'driver' => 'eloquent', 'model' => App\Models\Admin::class, ], - - // Kalau mau pakai database langsung (tidak lewat model) - // 'users' => [ - // 'driver' => 'database', - // 'table' => 'users', - // ], ], - /* - |-------------------------------------------------------------------------- - | Resetting Passwords - |-------------------------------------------------------------------------- - | - | Anda dapat menentukan beberapa konfigurasi reset password jika ada - | lebih dari satu tabel atau model user dan ingin pengaturan reset - | yang berbeda berdasarkan tipe user tertentu. - | - */ - 'passwords' => [ 'users' => [ 'provider' => 'users', @@ -109,8 +42,6 @@ return [ 'expire' => 60, 'throttle' => 60, ], - - // Kalau admin juga butuh reset password, bisa tambahkan ini 'admins' => [ 'provider' => 'admins', 'table' => 'password_reset_tokens', @@ -119,16 +50,6 @@ return [ ], ], - /* - |-------------------------------------------------------------------------- - | Password Confirmation Timeout - |-------------------------------------------------------------------------- - | - | Jumlah detik sebelum konfirmasi password kadaluarsa. - | Default: 3 jam (10800 detik). - | - */ - 'password_timeout' => 10800, ]; diff --git a/backend/database/migrations/2025_08_29_091312_create_admins_table.php.php b/backend/database/migrations/2025_08_29_091312_create_admins_table.php.php index b4e66a6..30675a0 100644 --- a/backend/database/migrations/2025_08_29_091312_create_admins_table.php.php +++ b/backend/database/migrations/2025_08_29_091312_create_admins_table.php.php @@ -5,10 +5,11 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { - public function up(): void { + public function up(): void + { Schema::create('admins', function (Blueprint $table) { $table->id(); - $table->string('username')->unique(); + $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); @@ -16,7 +17,8 @@ return new class extends Migration { }); } - public function down(): void { + public function down(): void + { Schema::dropIfExists('admins'); } }; diff --git a/backend/database/seeders/AdminSeeder.php b/backend/database/seeders/AdminSeeder.php index 077f5a0..54edbc5 100644 --- a/backend/database/seeders/AdminSeeder.php +++ b/backend/database/seeders/AdminSeeder.php @@ -2,16 +2,20 @@ namespace Database\Seeders; -use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use App\Models\Admin; use Illuminate\Database\Seeder; +use Illuminate\Support\Facades\Hash; class AdminSeeder extends Seeder { - /** - * Run the database seeds. - */ public function run(): void { - // + Admin::updateOrCreate( + ['email' => 'admin@example.com'], + [ + 'name' => 'Super Admin', + 'password' => Hash::make('password123'), // ganti setelah login + ] + ); } } diff --git a/backend/database/seeders/DatabaseSeeder.php b/backend/database/seeders/DatabaseSeeder.php index a9f4519..126e57c 100644 --- a/backend/database/seeders/DatabaseSeeder.php +++ b/backend/database/seeders/DatabaseSeeder.php @@ -7,16 +7,10 @@ use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { - /** - * Seed the application's database. - */ public function run(): void - { - // \App\Models\User::factory(10)->create(); - - // \App\Models\User::factory()->create([ - // 'name' => 'Test User', - // 'email' => 'test@example.com', - // ]); - } +{ + $this->call([ + AdminSeeder::class, + ]); +} } diff --git a/backend/public/images/logo.png b/backend/public/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2587762d4ed0584647462b59501970126f12f7 GIT binary patch literal 20947 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 literal 0 HcmV?d00001 diff --git a/backend/resources/views/admin/auth/login.blade.php b/backend/resources/views/admin/auth/login.blade.php new file mode 100644 index 0000000..4819afe --- /dev/null +++ b/backend/resources/views/admin/auth/login.blade.php @@ -0,0 +1,109 @@ + + + + + + + Login Admin + + + + + + + + + diff --git a/backend/resources/views/admin/dashboard.blade.php b/backend/resources/views/admin/dashboard.blade.php index 400aab4..f44277f 100644 --- a/backend/resources/views/admin/dashboard.blade.php +++ b/backend/resources/views/admin/dashboard.blade.php @@ -1,14 +1,21 @@ - - + + - Admin Dashboard + + + Admin Dashboard + - -

Halo, {{ Auth::guard('admin')->user()->username }}

- -
+ +
+
+

Admin Dashboard

+ @csrf - - + + +
+
Berhasil login sebagai {{ auth('admin')->user()->name }}
+
diff --git a/backend/resources/views/admin/login.blade.php b/backend/resources/views/admin/login.blade.php deleted file mode 100644 index ff86852..0000000 --- a/backend/resources/views/admin/login.blade.php +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Login Admin - - - - - - - - - - - - diff --git a/backend/routes/web.php b/backend/routes/web.php index df440d2..85bea31 100644 --- a/backend/routes/web.php +++ b/backend/routes/web.php @@ -1,7 +1,19 @@ name('admin.login'); -Route::post('admin/login', [AdminAuthController::class, 'login'])->name('admin.login.post'); -Route::post('admin/logout', [AdminAuthController::class, 'logout'])->name('admin.logout'); +Route::prefix('admin')->name('admin.')->group(function () { + Route::middleware('guest:admin')->group(function () { + Route::get('/login', [AdminAuthController::class, 'showLogin'])->name('login'); + Route::post('/login', [AdminAuthController::class, 'login'])->name('login.post'); + }); + + Route::middleware('auth:admin')->group(function () { + Route::get('/dashboard', function () { + return view('admin.dashboard'); + })->name('dashboard'); + + Route::post('/logout', [AdminAuthController::class, 'logout'])->name('logout'); + }); +});