Laravel: Pasando datos desde el controlador al middleware.
Quiero pasar algunos parámetros a un middleware después de que el controlador haya terminado de ejecutarse, esto es para invalidar cualquier token de restablecimiento de contraseña si se genera uno nuevo.
Mi código es:
Controlador
public function resetPasswordRequest(Request $request)
{
$user = User::where('email', $request->email)->first();
if (!$user) {
throw ValidationException::withMessages([
'message' => 'correo_invalido',
]);
}
$reset_request = Password_reset::create([
'user_email' => $request['email'],
'reset_token' => Helper::makeRandomString(8, true),
]);
$reset_token = $reset_request['reset_token'];
$user_email = $request['email'];
/*
Helper::sendEmail('pass_reset', $user_email = $request['email'], $reset_token);
*/
return response(array('message' => 'éxito', 'email' => $user_email, 'reset_token' => $reset_token, 'type' => 'reset'), status:200);
}
//Middleware
public function handle(Request $request, Closure $next)
{
$user_data = $next($request);
error_log($user_data);
$user_email = $user_data['email'];
$type = $user_data['type'];
$tokens = null;
if ($type == 'reset') {
$tokens = Password_reset::where('user_email', '=', $user_email)->where('used', false)->get();
} else if ($type == 'confirmation') {
$tokens = EmailConfirm::where('user_email', '=', $user_email)->where('used', false)->get();
error_log('fffff');
}
error_log('gggg');
//Might not be optimum, need consultation
foreach ($tokens as $column) {
$column['used'] = true;
$column->save();
}
return $next($request);
}
El problema viene con el hecho de que no parezco poder encontrar una forma de pasar estos datos, si intento acceder a él a través del método de contenido el resultado será una matriz de caracteres.
¿Alguna sugerencia sobre esto o cualquier otra solución que pueda usar?
davy.ai
Se puede utilizar el objeto
Request
para pasar datos al middleware posterior. Se pueden acceder a los datos del objetoRequest
en el middleware posterior utilizando el métodoinput()
. Por ejemplo:También se puede utilizar el método
with()
para pasar datos al middleware posterior. Por ejemplo:Luego, en el middleware posterior, se pueden acceder a los datos utilizando el método
input()
. Por ejemplo: