167 lines
6.3 KiB
PHP
167 lines
6.3 KiB
PHP
<?php
|
|
|
|
/* by joan 5-08-2023 */
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Support\Str;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Session;
|
|
use App\Notifications\UserCredentialsNotification;
|
|
use App\Notifications\EmailVerificationNotification;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
public function register_email(Request $request)
|
|
{
|
|
// Validar los datos recibidos en la solicitud
|
|
$request->validate([
|
|
'email' => 'required|email',
|
|
]);
|
|
|
|
// Buscar el usuario por su dirección de correo electrónico
|
|
$user = User::where('email', $request->email)->first();
|
|
if ($user && $user->email_verified_at != NULL) {
|
|
// Si el usuario ya existe y su campo "verification_code" es verdadero, no enviar nuevamente
|
|
return response()->json(['message' => 'La cuenta ya existe'], 400);
|
|
}
|
|
|
|
if (!$user) {
|
|
// Si el usuario no existe, generar un código de verificación aleatorio de 6 dígitos numéricos
|
|
$verificationCode = rand(10000, 99999);
|
|
|
|
// Crear un nuevo usuario con el correo electrónico y el código de verificación
|
|
$user = User::create([
|
|
'email' => $request->email,
|
|
'verification_code' => $verificationCode,
|
|
]);
|
|
|
|
// Guardar el correo en sesión
|
|
session(['registered_email' => $request->email]);
|
|
} else {
|
|
// Si el usuario ya existe pero no se ha enviado el código, generar un nuevo código
|
|
$verificationCode = rand(10000, 99999);
|
|
|
|
// Actualizar el código de verificación y el campo "verification_code"
|
|
$user->verification_code = $verificationCode;
|
|
$user->save();
|
|
}
|
|
|
|
// Enviar la notificación al correo del usuario con el código de verificación
|
|
$user->notify(new EmailVerificationNotification($verificationCode));
|
|
|
|
// Devolver una respuesta (opcional)
|
|
return response()->json(['message' => 'Usuario creado correctamente'], 201);
|
|
}
|
|
|
|
|
|
|
|
/* // Validar los datos recibidos en la solicitud
|
|
$request->validate([
|
|
'email' => 'required|email',
|
|
]);
|
|
|
|
// Buscar el usuario por su dirección de correo electrónico
|
|
$user = User::where('email', $request->email)->first();
|
|
|
|
// Si el usuario ya existe, reenviar el código de verificación existente
|
|
if ($user) {
|
|
$verificationCode = $user->verification_code;
|
|
} else {
|
|
// Generar un código de verificación aleatorio de 6 dígitos numéricos
|
|
$verificationCode = rand(100000, 999999);
|
|
|
|
// Crear un nuevo usuario con el correo electrónico y el código de verificación
|
|
$user = User::create([
|
|
'email' => $request->email,
|
|
'verification_code' => $verificationCode,
|
|
]);
|
|
}
|
|
|
|
// Enviar la notificación al correo del usuario con el código de verificación
|
|
$user->notify(new EmailVerificationNotification($verificationCode));
|
|
|
|
// Devolver una respuesta (opcional)
|
|
return response()->json(['message' => 'Usuario creado correctamente'], 201); */
|
|
public function verify_code(Request $request)
|
|
{
|
|
// Validar el correo electrónico
|
|
$request->validate([
|
|
'email' => 'required|email',
|
|
'codes' => 'required'
|
|
]);
|
|
|
|
// Verificar si el correo electrónico coincide con el almacenado en la sesión
|
|
/* if ($request->email !== session('registered_email')) {
|
|
return response()->json(['message' => 'Correo no coincide'], 400);
|
|
} */
|
|
|
|
// Buscar el usuario por su dirección de correo electrónico
|
|
$user = User::where('email', $request->email)->first();
|
|
|
|
// Verificar si el usuario y el código coinciden
|
|
if ($user && $user->verification_code === $request->codes) {
|
|
// Cambiar la lógica aquí para redireccionar o retornar otro mensaje
|
|
$user->email_verified_at = now();
|
|
$temporaryPassword = Str::random(8);
|
|
$user->password = Hash::make($temporaryPassword);
|
|
|
|
if ($request->account_type == "seller") {
|
|
$user->user_type = "seller";
|
|
}
|
|
|
|
$user->save();
|
|
|
|
// Enviar la notificación con las credenciales
|
|
$user->notify(new UserCredentialsNotification($temporaryPassword));
|
|
|
|
return response()->json(['message' => 'Código verificado correctamente']);
|
|
} else {
|
|
return response()->json(['message' => 'Código no coincide'], 400);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* public function register_email(Request $request)
|
|
{
|
|
dd("si");
|
|
|
|
// Validar los datos recibidos en la solicitud
|
|
$request->validate([
|
|
'email' => 'required|email',
|
|
]);
|
|
|
|
// Buscar el usuario por su dirección de correo electrónico
|
|
$user = User::where('email', $request->email)->first();
|
|
if ($user && $user->verification_code == "true") {
|
|
// Si el usuario ya existe y su campo "verification_code" es verdadero, no enviar nuevamente
|
|
return response()->json(['message' => 'La cuenta ya existe'], 400);
|
|
}
|
|
|
|
if (!$user) {
|
|
// Si el usuario no existe, generar un código de verificación aleatorio de 6 dígitos numéricos
|
|
$verificationCode = rand(100000, 999999);
|
|
|
|
// Crear un nuevo usuario con el correo electrónico y el código de verificación
|
|
$user = User::create([
|
|
'email' => $request->email,
|
|
'verification_code' => $verificationCode,
|
|
]);
|
|
} else ($user && !$user->verification_code) {
|
|
// Si el usuario ya existe pero no se ha enviado el código, generar un nuevo código
|
|
$verificationCode = rand(100000, 999999);
|
|
|
|
// Actualizar el código de verificación y el campo "verification_code"
|
|
$user->verification_code = $verificationCode;
|
|
$user->save();
|
|
}
|
|
|
|
// Enviar la notificación al correo del usuario con el código de verificación
|
|
$user->notify(new EmailVerificationNotification($verificationCode));
|
|
|
|
// Devolver una respuesta (opcional)
|
|
return response()->json(['message' => 'Usuario creado correctamente'], 201);
|
|
} */
|