Files
elcaribe/app/Http/Controllers/UserController.php
2023-08-07 15:52:04 -04:00

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);
} */