From e03b4d2ac1f11ca74cfac373275ebd450256d18e Mon Sep 17 00:00:00 2001 From: arieeefajar Date: Fri, 24 Jan 2025 15:24:44 +0700 Subject: [PATCH] feat(auth): register page with function --- .../Auth/RegisteredUserController.php | 60 +++-- .../Auth/TwoStepVerifyController.php | 14 ++ .../Auth/VerifyEmailController.php | 4 +- database/seeders/UsersSeeder.php | 2 +- resources/views/auth/login.blade.php | 9 +- resources/views/auth/register.blade.php | 222 ++++++++++++++---- .../auth/two-step-verifycation.blade.php | 180 ++++++++++++++ resources/views/auth/verify-email.blade.php | 31 --- routes/web.php | 11 + 9 files changed, 433 insertions(+), 100 deletions(-) create mode 100644 app/Http/Controllers/Auth/TwoStepVerifyController.php create mode 100644 resources/views/auth/two-step-verifycation.blade.php delete mode 100644 resources/views/auth/verify-email.blade.php diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index a15828f..f0de034 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -4,14 +4,13 @@ use App\Http\Controllers\Controller; use App\Models\User; -use App\Providers\RouteServiceProvider; -use Illuminate\Auth\Events\Registered; -use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rules; use Illuminate\View\View; +use PhpParser\Node\Expr\FuncCall; class RegisteredUserController extends Controller { @@ -28,24 +27,49 @@ public function create(): View * * @throws \Illuminate\Validation\ValidationException */ - public function store(Request $request): RedirectResponse + public function store(Request $request) { - $request->validate([ + $customMessage = [ + 'name.required' => 'Nama wajib diisi', + 'name.max' => 'Nama maksimal 255 karakter', + 'name.string' => 'Nama harus berupa string', + + 'email.required' => 'Email wajib diisi', + 'email.email' => 'Email tidak valid', + 'email.unique' => 'Email sudah terdaftar', + + 'password.required' => 'Password wajib diisi', + 'password.confirmed' => 'Password tidak cocok', + 'password.min' => 'Password minimal 8 karakter', + ]; + + $validator = Validator::make($request->all(), [ 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class], - 'password' => ['required', 'confirmed', Rules\Password::defaults()], - ]); + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'confirmed', Rules\Password::defaults()], + ], $customMessage); - $user = User::create([ - 'name' => $request->name, - 'email' => $request->email, - 'password' => Hash::make($request->password), - ]); + if ($validator->fails()) { + toast($validator->messages()->all()[0], 'error')->position('top')->autoclose(3000); + return redirect()->back()->withInput(); + } - event(new Registered($user)); + DB::beginTransaction(); + $user = new User(); + $user->username = $request->username; + $user->name = $request->name; + $user->email = $request->email; + $user->password = Hash::make($request->password); - Auth::login($user); - - return redirect(RouteServiceProvider::HOME); + try { + $user->save(); + DB::commit(); + toast('Registrasi berhasil', 'success')->position('top')->autoclose(3000); + return redirect()->route('auth.two_step_verify', ['email' => $request->email]); + } catch (\Throwable $th) { + DB::rollBack(); + toast($th->getMessage(), 'error')->position('top')->autoclose(3000); + return redirect()->back(); + } } } diff --git a/app/Http/Controllers/Auth/TwoStepVerifyController.php b/app/Http/Controllers/Auth/TwoStepVerifyController.php new file mode 100644 index 0000000..0f95af0 --- /dev/null +++ b/app/Http/Controllers/Auth/TwoStepVerifyController.php @@ -0,0 +1,14 @@ +user()->hasVerifiedEmail()) { - return redirect()->intended(RouteServiceProvider::HOME.'?verified=1'); + return redirect()->intended(RouteServiceProvider::HOME . '?verified=1'); } if ($request->user()->markEmailAsVerified()) { event(new Verified($request->user())); } - return redirect()->intended(RouteServiceProvider::HOME.'?verified=1'); + return redirect()->intended(RouteServiceProvider::HOME . '?verified=1'); } } diff --git a/database/seeders/UsersSeeder.php b/database/seeders/UsersSeeder.php index e63d054..93f12dc 100644 --- a/database/seeders/UsersSeeder.php +++ b/database/seeders/UsersSeeder.php @@ -18,7 +18,7 @@ public function run(): void User::create([ 'username' => 'admin', 'name' => 'Admin Sage', - 'email' => 'ariefajar739@gmail.com', + 'email' => 'adminSage@gmail.com', 'password' => Hash::make('admin123'), 'role' => 'admin' ]), diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 8295bb0..2c04440 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -111,10 +111,11 @@ class="ri-eye-fill align-middle"> - {{--
-

Don't have an account ? Signup

-
--}} +
+

Belum memiliki akun ? Registrasi sekarang! +

+
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index d4b3d58..6ddad20 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -1,52 +1,186 @@ - -
- @csrf + + - -
- - - + + + + Registrasi | CornQuest + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + +
- -
- - - + +
+
+
+
+
+
+ +
+
+
+
+ + +
+
+
+ +
+
+
Buat Akun Baru
+

Silahkan isi form dibawah ini

+
+
+ + @csrf +
+ + +
+ Harap masukan email +
+
+
+ + +
+ Harap masukan nama lengkap +
+
+ +
+ + +
+ Harap masukan username +
+
+ +
+ + +
+ Harap masukan password +
+
+ +
+ + +
+ Harap masukan password +
+
+ +
+ +
+ + +
+
+ +
+ + +
+

Sudah punya akun ? Login

+
+ +
+
+ +
+
+ + @include('sweetalert::alert') - -
- + +
+
+
+
+
+

© + CornQuest. Crafted with + by LAB KSI Politeknik Negeri Jember +

+
+
+
+
+
+ +
+ - + + + + + + + - -
+ + + + + + + - -
- - - - - -
- -
- - {{ __('Already registered?') }} - - - - {{ __('Register') }} - -
- - + diff --git a/resources/views/auth/two-step-verifycation.blade.php b/resources/views/auth/two-step-verifycation.blade.php new file mode 100644 index 0000000..ab25cf1 --- /dev/null +++ b/resources/views/auth/two-step-verifycation.blade.php @@ -0,0 +1,180 @@ + + + + + + + Two Step Verification | CornQuest + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + +
+
+ + +
+
+
+
+
+
+ +
+
+
+
+ + +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+

Verifikasi Akun Anda

+

Masukkan kode verifikasi yang dikirimkan ke {{ $email }}

+
+ +
+
+
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ + +
+

Tidak menerima email ? Kirim ulang

+
+ +
+
+ +
+ +
+ + + +
+
+
+
+
+

© + CornQuest. Crafted with + by LAB KSI Politeknik Negeri Jember +

+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/auth/verify-email.blade.php b/resources/views/auth/verify-email.blade.php deleted file mode 100644 index 4e4222f..0000000 --- a/resources/views/auth/verify-email.blade.php +++ /dev/null @@ -1,31 +0,0 @@ - -
- {{ __('Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn\'t receive the email, we will gladly send you another.') }} -
- - @if (session('status') == 'verification-link-sent') -
- {{ __('A new verification link has been sent to the email address you provided during registration.') }} -
- @endif - -
-
- @csrf - -
- - {{ __('Resend Verification Email') }} - -
-
- -
- @csrf - - -
-
-
diff --git a/routes/web.php b/routes/web.php index cb27134..3e20c09 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,8 @@ use App\Http\Controllers\Auth\AuthenticatedSessionController; use App\Http\Controllers\Auth\PasswordResetLinkController; +use App\Http\Controllers\Auth\RegisteredUserController; +use App\Http\Controllers\Auth\TwoStepVerifyController; use App\Http\Controllers\DashboardController; use Illuminate\Support\Facades\Route; @@ -25,6 +27,15 @@ Route::post('/', 'store')->name('login_post'); }); + Route::controller(RegisteredUserController::class)->group(function () { + Route::get('/registrasi', 'create')->name('register'); + Route::post('/registrasi', 'store')->name('register_post'); + }); + + Route::controller(TwoStepVerifyController::class)->group(function () { + Route::get('/verifikasi-akun/{email}', 'create')->name('two_step_verify'); + }); + Route::controller(PasswordResetLinkController::class)->group(function () { Route::get('/forgot-password', 'create')->name('forgot_password'); Route::post('/reset-password', 'store')->name('reset_password');