diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index ad9d424a..78430401 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -133,6 +133,9 @@ class HomeController extends Controller * * @return \Illuminate\Http\Response */ + + //AQUI AGREGO LOS DIFERENTES TIPOS DE USUARIOS + public function dashboard() { if (Auth::user()->user_type == 'seller') { @@ -145,6 +148,8 @@ class HomeController extends Controller return view('frontend.user.customer.dashboard'); } elseif (Auth::user()->user_type == 'delivery_boy') { return view('delivery_boys.dashboard'); + } elseif (Auth::user()->user_type == 'repair') { + return view('workshop.dashboard'); } else { abort(404); } diff --git a/app/Http/Controllers/ShopViewsController.php b/app/Http/Controllers/ShopViewsController.php index 61ab3c48..e77cb9ca 100644 --- a/app/Http/Controllers/ShopViewsController.php +++ b/app/Http/Controllers/ShopViewsController.php @@ -36,7 +36,9 @@ class ShopViewsController extends Controller /* Paso 4 - Cuenta creada correctamente */ public function signup_complete() { - return view('frontend.registro-comercio.views.signup-complete'); + $user = Auth::user(); // Obtener el usuario autenticado + + return view('frontend.registro-comercio.views.signup-complete')->with('user', $user); } /* Paso 1 registro */ diff --git a/app/Http/Controllers/TypeBusinessController.php b/app/Http/Controllers/TypeBusinessController.php index 09c3fce4..6abab429 100644 --- a/app/Http/Controllers/TypeBusinessController.php +++ b/app/Http/Controllers/TypeBusinessController.php @@ -2,7 +2,16 @@ namespace App\Http\Controllers; +use App\Mail\VerificationEmail; +use App\Models\User; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Str; +use Illuminate\Validation\Rules\Password; +use \ReCaptcha\ReCaptcha; class TypeBusinessController extends Controller { @@ -14,6 +23,7 @@ class TypeBusinessController extends Controller public function index() { return view('frontend.registro-comercio.views.business.index'); + } /** @@ -32,9 +42,45 @@ class TypeBusinessController extends Controller * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request, User $user) { - // + // Validación de los campos de registro + $validator = Validator::make($request->all(), [ + 'email' => ['required', 'string', 'email', 'max:255', 'unique:'.User::class], + 'password' => ['required', 'confirmed', Password::defaults()], + 'g-recaptcha-response' => ['required', function ($attribute, $value, $fail) { + $recaptcha = new Recaptcha(env('RECAPTCHA_SECRET_KEY')); + $recaptcha->verify($value); + }], + ]); + + if ($validator->fails()) { + // Si la validación falla, puedes redirigir o devolver una respuesta con los errores + return redirect()->back()->withErrors($validator)->withInput(); + } + + $confirmation_code = Str::random(25); + + $user = new User(); + $user->email = $request->input('email'); + $user->password = Hash::make($request->input('password')); + $user->user_type = 'seller'; + $user->confirmation_code = $confirmation_code; + $user->save(); + + + Mail::to($user->email)->send(new VerificationEmail($user)); + + // Intentar iniciar sesión automáticamente + if (Auth::attempt($request->only('email', 'password'))) { + if (Auth::user()->email_verified_at) { + // La cuenta está verificada, redirige a la página deseada + return redirect()->route('shop.view.signup.complete'); + } else { + // La cuenta no está verificada, redirige a la página de verificación de correo electrónico + return redirect()->route('shop.view.email.verification'); + } + } } /** diff --git a/app/Http/Controllers/TypeWorkshopController.php b/app/Http/Controllers/TypeWorkshopController.php index 52553d95..0411cf73 100644 --- a/app/Http/Controllers/TypeWorkshopController.php +++ b/app/Http/Controllers/TypeWorkshopController.php @@ -2,7 +2,16 @@ namespace App\Http\Controllers; +use App\Mail\VerificationEmail; +use App\Models\User; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Str; +use Illuminate\Validation\Rules\Password; +use \ReCaptcha\ReCaptcha; class TypeWorkshopController extends Controller { @@ -32,9 +41,45 @@ class TypeWorkshopController extends Controller * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request, User $user) { - // + // Validación de los campos de registro + $validator = Validator::make($request->all(), [ + 'email' => ['required', 'string', 'email', 'max:255', 'unique:'.User::class], + 'password' => ['required', 'confirmed', Password::defaults()], + 'g-recaptcha-response' => ['required', function ($attribute, $value, $fail) { + $recaptcha = new Recaptcha(env('RECAPTCHA_SECRET_KEY')); + $recaptcha->verify($value); + }], + ]); + + if ($validator->fails()) { + // Si la validación falla, puedes redirigir o devolver una respuesta con los errores + return redirect()->back()->withErrors($validator)->withInput(); + } + + $confirmation_code = Str::random(25); + + $user = new User(); + $user->email = $request->input('email'); + $user->password = Hash::make($request->input('password')); + $user->user_type = 'repair'; + $user->confirmation_code = $confirmation_code; + $user->save(); + + + Mail::to($user->email)->send(new VerificationEmail($user)); + + // Intentar iniciar sesión automáticamente + if (Auth::attempt($request->only('email', 'password'))) { + if (Auth::user()->email_verified_at) { + // La cuenta está verificada, redirige a la página deseada + return redirect()->route('shop.view.signup.complete'); + } else { + // La cuenta no está verificada, redirige a la página de verificación de correo electrónico + return redirect()->route('shop.view.email.verification'); + } + } } /** diff --git a/app/Http/Controllers/Workshop/DashboardController.php b/app/Http/Controllers/Workshop/DashboardController.php new file mode 100644 index 00000000..75c8ae78 --- /dev/null +++ b/app/Http/Controllers/Workshop/DashboardController.php @@ -0,0 +1,14 @@ +user_type == 'customer' || Auth::user()->user_type == 'seller' || - Auth::user()->user_type == 'delivery_boy') ) { + Auth::user()->user_type == 'delivery_boy'|| + Auth::user()->user_type == 'repair') ) { return $next($request); } diff --git a/resources/views/frontend/registro-comercio/views/account-type.blade.php b/resources/views/frontend/registro-comercio/views/account-type.blade.php index 3684b0f9..86516659 100644 --- a/resources/views/frontend/registro-comercio/views/account-type.blade.php +++ b/resources/views/frontend/registro-comercio/views/account-type.blade.php @@ -66,14 +66,14 @@

Comprador

- +

Negocio

- + diff --git a/resources/views/frontend/registro-comercio/views/business/index.blade.php b/resources/views/frontend/registro-comercio/views/business/index.blade.php index b5899ac7..98337fa0 100644 --- a/resources/views/frontend/registro-comercio/views/business/index.blade.php +++ b/resources/views/frontend/registro-comercio/views/business/index.blade.php @@ -177,7 +177,7 @@
Volver Atrás

Vamos! Únete a nuestra plataforma

@@ -213,31 +213,55 @@ {{-- formulario con correo --}} -