
Ruiz86
Zeta
SEO
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Buenas compañeros, ojala me puedan ayudar, me pasa algo raro en Laravel (me estoy iniciando por lo que seguro que algo se me pasa).
Tengo un back en Laravel 11 (api rest) y un front con React. Antes de exponer el error en concreto, os dejo una llamada que si me funciona.
Función en controller en Laravel para cambiar la contraseña:
Ahora viene el problema, tengo la siguiente funcion "login" dentro del mismo controlador:
Y al llamarla me da este error: Call to undefined method App\\Models\\User::createToken()
Entonces me he ido al modelo y he agregado "HasApiTokens" tal y como he googleado...:
Y al hacer eso, la primera llamada "changePassword" me da error de Cors: "has been blocked by CORS policy: No 'Access-Control-Allow-Origin'".
Y la segunda llamada "login" ya no me da el error de createToken pero también me da error de Cors: "has been blocked by CORS policy: No 'Access-Control-Allow-Origin'".
¿Porque al agregar HasApiTokens al modelo User, me aparece error de Cors? ¿Qué hago mal o que me falta controlar?
Tengo un back en Laravel 11 (api rest) y un front con React. Antes de exponer el error en concreto, os dejo una llamada que si me funciona.
Función en controller en Laravel para cambiar la contraseña:
PHP:
public function changePassword(Request $request)
{
// Valido los datos de entrada
$validator = Validator::make($request->all(), [
'token' => 'required|string',
'password' => 'required|string',
]);
// Existe un email con solicitud de reestablecimiento
$requested = PasswordResetToken::where('token', $request->token)->first();
if($requested){
$user = User::where('email', $requested->email)->first();
// Confirmo que el email existe y cambio la contraseña
if ($user) {
$user->password = Hash::make($request->password);
$user->save();
return response()->json(['success' => 'Solicitud correcta'], 200);
}
else{
return response()->json(['error' => 'User not found'], 401);
}
}else{
return response()->json(['error' => 'Error token requested'], 401);
}
}
Ahora viene el problema, tengo la siguiente funcion "login" dentro del mismo controlador:
PHP:
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$token = auth()->user()->createToken('Token')->accessToken;
return response()->json(['token' => $token], 200);
} else {
return response()->json(['error' => 'Credenciales incorrectas'], 401);
}
}
Entonces me he ido al modelo y he agregado "HasApiTokens" tal y como he googleado...:
Insertar CODE, HTML o PHP:
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens...
Y al hacer eso, la primera llamada "changePassword" me da error de Cors: "has been blocked by CORS policy: No 'Access-Control-Allow-Origin'".
Y la segunda llamada "login" ya no me da el error de createToken pero también me da error de Cors: "has been blocked by CORS policy: No 'Access-Control-Allow-Origin'".
¿Porque al agregar HasApiTokens al modelo User, me aparece error de Cors? ¿Qué hago mal o que me falta controlar?