es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Se puede utilizar el objeto Request para pasar datos al middleware posterior. Se pueden acceder a los datos del objeto Request en el middleware posterior utilizando el método input(). Por ejemplo:

    $user_email = $request->input('email');
    $type = $request->input('reset');
    

    También se puede utilizar el método with() para pasar datos al middleware posterior. Por ejemplo:

    return response(array('message' => 'success', 'email' => $user_email, 'reset_token' => $reset_token, 'type' => 'reset'), status:200)->with(['email' => $user_email, 'reset' => 'reset']);
    

    Luego, en el middleware posterior, se pueden acceder a los datos utilizando el método input(). Por ejemplo:

    $user_email = $request->input('email');
    $type = $request->input('reset');
    

Comments are closed.