From 982bd80e8fe68b45dd28e69fe254dc3d7ae2a07b Mon Sep 17 00:00:00 2001 From: MuzakkiABBAUF Date: Thu, 2 Oct 2025 17:06:45 +0700 Subject: [PATCH] add dashboard --- .../Http/Controllers/DashboardController.php | 31 +++ backend-baru/config/auth.php | 100 ++------ .../views/admin/auth/login.blade.php | 232 ++++++++++++++++++ .../resources/views/admin/dashboard.blade.php | 90 +++++++ .../resources/views/layouts/app.blade.php | 164 +++++++++++++ backend-baru/routes/web.php | 22 +- 6 files changed, 558 insertions(+), 81 deletions(-) create mode 100644 backend-baru/app/Http/Controllers/DashboardController.php create mode 100644 backend-baru/resources/views/admin/auth/login.blade.php create mode 100644 backend-baru/resources/views/admin/dashboard.blade.php create mode 100644 backend-baru/resources/views/layouts/app.blade.php diff --git a/backend-baru/app/Http/Controllers/DashboardController.php b/backend-baru/app/Http/Controllers/DashboardController.php new file mode 100644 index 0000000..7f61cd3 --- /dev/null +++ b/backend-baru/app/Http/Controllers/DashboardController.php @@ -0,0 +1,31 @@ +translatedFormat('l, d F Y'); + + // ambil 5 pelanggan terbaru + $recentPelanggan = Pelanggan::latest()->paginate(5); + + return view('admin.dashboard', compact( + 'totalKategori', + 'totalTemplate', + 'totalPelanggan', + 'today', + 'recentPelanggan' + )); + } +} diff --git a/backend-baru/config/auth.php b/backend-baru/config/auth.php index cae0028..fb368df 100644 --- a/backend-baru/config/auth.php +++ b/backend-baru/config/auth.php @@ -2,94 +2,37 @@ 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. - | Of course, a great default configuration has been defined for you - | here which uses session storage and the Eloquent user provider. - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | Supported: "session" - | - */ - 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], + + // Tambahkan guard admin di sini + 'admin' => [ + 'driver' => 'session', + 'provider' => 'admins', + ], ], - /* - |-------------------------------------------------------------------------- - | User Providers - |-------------------------------------------------------------------------- - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | If you have multiple user tables or models you may configure multiple - | sources which represent each model / table. These sources may then - | be assigned to any extra authentication guards you have defined. - | - | Supported: "database", "eloquent" - | - */ - 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], - // 'users' => [ - // 'driver' => 'database', - // 'table' => 'users', - // ], + // Tambahkan provider admins di sini + 'admins' => [ + 'driver' => 'eloquent', + 'model' => App\Models\Admin::class, + ], ], - /* - |-------------------------------------------------------------------------- - | Resetting Passwords - |-------------------------------------------------------------------------- - | - | You may specify multiple password reset configurations if you have more - | than one user table or model in the application and you want to have - | separate password reset settings based on the specific user types. - | - | The expire time is the number of minutes that each reset token will be - | considered valid. This security feature keeps tokens short-lived so - | they have less time to be guessed. You may change this as needed. - | - | The throttle setting is the number of seconds a user must wait before - | generating more password reset tokens. This prevents the user from - | quickly generating a very large amount of password reset tokens. - | - */ - 'passwords' => [ 'users' => [ 'provider' => 'users', @@ -97,19 +40,16 @@ return [ 'expire' => 60, 'throttle' => 60, ], + + // Tambahkan konfigurasi password reset untuk admin + 'admins' => [ + 'provider' => 'admins', + 'table' => 'password_reset_tokens', + 'expire' => 60, + 'throttle' => 60, + ], ], - /* - |-------------------------------------------------------------------------- - | Password Confirmation Timeout - |-------------------------------------------------------------------------- - | - | Here you may define the amount of seconds before a password confirmation - | times out and the user is prompted to re-enter their password via the - | confirmation screen. By default, the timeout lasts for three hours. - | - */ - 'password_timeout' => 10800, -]; +]; \ No newline at end of file diff --git a/backend-baru/resources/views/admin/auth/login.blade.php b/backend-baru/resources/views/admin/auth/login.blade.php new file mode 100644 index 0000000..d048d77 --- /dev/null +++ b/backend-baru/resources/views/admin/auth/login.blade.php @@ -0,0 +1,232 @@ +@extends('layouts.app') + +@section('title', 'Halaman Dasbor') + +@section('content') +
+ +
+

Halaman Dasbor

+
+
+ + {{ $today }} +
+
+
+ + +
+
+
+
Kategori
+

{{ $totalKategori }}

+
+
+ +
+
+
+
+
Template
+

{{ $totalTemplate }}

+
+
+ +
+
+
+
+
Pelanggan
+

{{ $totalPelanggan }}

+
+
+ +
+
+
+ + +
+
+

Pelanggan Terbaru

+ + + + + + + + + + + + + + + + @forelse($recentPelanggan as $index => $pelanggan) + + + + + + + + + + + + @empty + + + + @endforelse + +
NomorNamaTemplateKategoriEmailNo. TeleponHargaTanggal PemesananAksi
+ {{ $recentPelanggan->firstItem() + $index }} + {{ $pelanggan->nama_pemesan }}{{ $pelanggan->nama_template }}{{ $pelanggan->kategori ?? '-' }}{{ $pelanggan->email }}{{ $pelanggan->no_tlpn ?? '-' }} + Rp {{ number_format($pelanggan->harga, 0, ',', '.') }} + + {{ \Carbon\Carbon::parse($pelanggan->created_at)->format('d M Y') }} + +
+ + Detail + + +
+
+ Belum ada data pelanggan. +
+ + +
+
+ {{-- Tombol Previous --}} + @if ($recentPelanggan->onFirstPage()) + Prev + @else + Prev + @endif + + @php + $total = $recentPelanggan->lastPage(); + $current = $recentPelanggan->currentPage(); + @endphp + + {{-- Selalu tampilkan halaman pertama --}} + @if ($current > 2) + 1 + @if ($current > 3) + ... + @endif + @endif + + {{-- Hanya tampilkan 3 halaman di tengah (current-1, current, current+1) --}} + @for ($i = max(1, $current - 1); $i <= min($total, $current + 1); $i++) + @if ($i == $current) + {{ $i }} + @else + {{ $i }} + @endif + @endfor + + {{-- Selalu tampilkan halaman terakhir --}} + @if ($current < $total - 1) + @if ($current < $total - 2) + ... + @endif + {{ $total }} + @endif + + {{-- Tombol Next --}} + @if ($recentPelanggan->hasMorePages()) + Next + @else + Next + @endif +
+
+
+
+ + + @foreach ($recentPelanggan as $pelanggan) + + @endforeach + + + @endsection diff --git a/backend-baru/resources/views/admin/dashboard.blade.php b/backend-baru/resources/views/admin/dashboard.blade.php new file mode 100644 index 0000000..21d2f29 --- /dev/null +++ b/backend-baru/resources/views/admin/dashboard.blade.php @@ -0,0 +1,90 @@ +@extends('layouts.app') + +@section('title', 'Halaman Dasbor') + +@section('content') +
+ +
+

Halaman Dasbor

+
+
+ + 02 Okt 2025 +
+
+
+ + +
+
+
+
Kategori
+

12

+
+
+ +
+
+
+
+
Template
+

34

+
+
+ +
+
+
+
+
Pelanggan
+

56

+
+
+ +
+
+
+ + +
+
+

Pelanggan Terbaru

+ + + + + + + + + + + + + + + + + + + +
NomorNamaTemplateKategoriEmailNo. TeleponHargaTanggal PemesananAksi
+ Belum ada data pelanggan. +
+ + +
+
+ Prev + 1 + Next +
+
+
+
+
+@endsection diff --git a/backend-baru/resources/views/layouts/app.blade.php b/backend-baru/resources/views/layouts/app.blade.php new file mode 100644 index 0000000..f485a73 --- /dev/null +++ b/backend-baru/resources/views/layouts/app.blade.php @@ -0,0 +1,164 @@ + + + + + + + Admin Panel + + + + + + + + +
+

Dasbor

+
+

Selamat datang di panel admin. Ini adalah area konten utama.

+
+
+ + + + + \ No newline at end of file diff --git a/backend-baru/routes/web.php b/backend-baru/routes/web.php index d259f33..8d6f36e 100644 --- a/backend-baru/routes/web.php +++ b/backend-baru/routes/web.php @@ -1,6 +1,8 @@ route('admin.login'); }); + +// Admin Auth +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'); + }); +}); +