From ebcc377718c232db6da043966d9a415b71abab6f Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sat, 13 Sep 2025 11:29:26 +0700 Subject: [PATCH] feat(login): membuat fitur login --- app/Livewire/Auth/Login.php | 55 ++++++++++++++++++ .../views/components/layouts/auth.blade.php | 19 ++++++ resources/views/livewire/auth/login.blade.php | 58 +++++++++++++++++++ routes/web.php | 5 ++ 4 files changed, 137 insertions(+) create mode 100644 app/Livewire/Auth/Login.php create mode 100644 resources/views/components/layouts/auth.blade.php create mode 100644 resources/views/livewire/auth/login.blade.php diff --git a/app/Livewire/Auth/Login.php b/app/Livewire/Auth/Login.php new file mode 100644 index 0000000..d3b638e --- /dev/null +++ b/app/Livewire/Auth/Login.php @@ -0,0 +1,55 @@ + 'Masuk Akun', +])] +class Login extends Component +{ + #[Validate(['required', 'string'], attribute: 'nama pengguna atau alamat surel')] + public string $login = ''; + + #[Validate('required', attribute: 'kata sandi')] + public string $password = ''; + + public function auth() + { + $this->validate(); + + $identifier = filter_var($this->login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; + + if (! auth()->attempt( + [$identifier => $this->login, 'password' => $this->password], + )) { + $this->redirectRoute('login', navigate: true); + + return; + } + + if (auth()->user()->status !== UserStatus::ACTIVE) { + auth()->logout(); + + $this->redirectRoute('login', navigate: true); + } + + session()->regenerate(); + + $this->redirectIntended('/studio/dashboard/overview', navigate: true); + } + + public function updated(string $prop, string $value) + { + $this->validateOnly($prop); + } + + public function render() + { + return view('livewire.auth.login'); + } +} diff --git a/resources/views/components/layouts/auth.blade.php b/resources/views/components/layouts/auth.blade.php new file mode 100644 index 0000000..8443082 --- /dev/null +++ b/resources/views/components/layouts/auth.blade.php @@ -0,0 +1,19 @@ + + + + + + + {{ $title }} | {{ config('app.name') }} + @vite(['resources/css/app.css', 'resources/js/app.js']) + @fluxAppearance + + + + + + {{ $slot }} + @fluxScripts + + + diff --git a/resources/views/livewire/auth/login.blade.php b/resources/views/livewire/auth/login.blade.php new file mode 100644 index 0000000..fc9af41 --- /dev/null +++ b/resources/views/livewire/auth/login.blade.php @@ -0,0 +1,58 @@ +
+
+
+
+ + +
+ YD +
+
+
+
+ + Selamat datang! + + Silakan akses panel dengan memasukkan nama pengguna, alamat surel, dan kata sandi Anda. + + +
+ + + +
+ Kata Sandi + + Lupa kata sandi? +
+ + + + +
+ + Masuk +
+
+
+ +
+
+
+ + + + + +
+ +
+ Solusi terbaik untuk kebutuhan parfum Anda. +
+
+
+
diff --git a/routes/web.php b/routes/web.php index 86a06c5..d040582 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,7 +1,12 @@ name('homepage'); + +Route::middleware('guest')->prefix('auth')->group(function () { + Route::get('login', Login::class)->name('login'); });