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.

¿Cómo devolver una respuesta desde una preconfiguración? (HapiJS)

Tengo la siguiente ruta:

{
    method: 'GET',
    path: '/filesystem',
    config: {pre:[validateJWT]},
    handler: readDir
}

Y dos funciones, la función previa:

const validateJWT = async (req, res) => {
     . . .
    // devuelve verdadero o falso
}

Y el controlador:

const readDir = async(req, res) => {
  return res.response('Respuesta del controlador').code(200);
};

¿Cómo puedo vincular el valor de retorno de la función validateJWT para usarlo en la función controladora readDir? Cada función y la ruta se encuentran en archivos diferentes.

Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para vincular el valor de retorno de la función validateJWT y usarlo en la función readDir del controlador, puedes hacer uso del objeto de solicitud que se pasa a la función del controlador.

    Dentro de la función validateJWT, puedes establecer algún valor en el objeto request usando request.app, de esta manera:

    const validateJWT = async (request, h) => {
      const isValid = await someValidationLogic();
      request.app.isAuthenticated = isValid;
    }
    

    Aquí, estamos estableciendo el valor de request.app.isAuthenticated en isValid.

    Luego, dentro de la función del controlador readDir, puedes acceder a este valor utilizando request.app, así:

    const readDir = async (request, h) => {
      if (request.app.isAuthenticated) {
        // hacer algo
      } else {
        // hacer algo más
      }
    }
    

    Aquí, estamos verificando el valor de request.app.isAuthenticated y tomando acciones diferentes dependiendo de si es verdadero o falso.

    Ten en cuenta que también deberás exportar/importar las funciones validateJWT y readDir entre los distintos archivos para que puedan usarse juntas en la ruta.

Comments are closed.