¡ADVERTENCIA! Este proyecto se fusionó con el Agendash principal. Este repositorio de git está en desuso ahora.
Un panel moderno, seguro y confiable para Agenda con capacidades de búsqueda y paginación escritas en vue.js
require(agendash)
a require(agendash2)
Se requiere una versión mínima de Node.js 12 para la dependencia @hapi/@hapi
(ver n.° 23)
Es posible que sea necesario crear el siguiente índice para una clasificación más rápida (consulte el punto 24).
db.agendaJobs.ensureIndex({
"nextRunAt" : -1,
"lastRunAt" : -1,
"lastFinishedAt" : -1
}, "agendash2")
En Software On The Road hemos estado usando agenda y agendash para casi todos los proyectos desde 2017, pero siempre tuvo su limitación. Y debido a un problema de seguridad crítico que encontramos en el middleware del servidor, decidimos bifurcar agendash y reescribirlo desde cero. Al principio, intentamos simplemente parchear el código existente, pero estaba escrito en backbone.js, por lo que sería más difícil aprenderlo que simplemente usar vue.js para recrear las funciones existentes. Después de todo, esto es solo un CRUD simple con paginación y búsqueda, nada sofisticado.
npm install --save agendash2
Nota : Agendash
requiere la versión >2.6.0 de mongodb para realizar las consultas agregadas necesarias. ¡Esta es la versión de su base de datos mongo, no la versión de su paquete de nodo! Para verificar la versión de su base de datos, conéctese a mongo y ejecute db.version()
.
Agendash2 proporciona middleware Express que puede usar en una ruta específica; por ejemplo, esto hará que Agendash2 esté disponible en su sitio en la ruta /dash
. Nota: No intente montar Agendash2 en el nivel raíz como app.use('/', Agendash(agenda))
.
var express = require ( 'express' ) ;
var app = express ( ) ;
// ... your other express middleware like body-parser
var Agenda = require ( 'agenda' ) ;
var Agendash = require ( 'agendash2' ) ;
var agenda = new Agenda ( { db : { address : 'mongodb://127.0.0.1/agendaDb' } } ) ;
// or provide your own mongo client:
// var agenda = new Agenda({mongo: myMongoClient})
app . use ( '/dash' , Agendash ( agenda ) ) ;
// ... your other routes
// ... start your server
Al montar Agendash2 como middleware en una ruta específica, puede proporcionar su propia autenticación para esa ruta. Por ejemplo, si tiene una sesión autenticada mediante pasaporte, puede proteger la ruta del panel de esta manera:
app . use ( '/dash' ,
function ( req , res , next ) {
if ( ! req . user || ! req . user . is_admin ) {
res . send ( 401 ) ;
} else {
next ( ) ;
}
} ,
Agendash ( agenda )
) ;
Otros middlewares aparecerán pronto en la carpeta /lib/middlewares/
. Sólo tendrás que actualizar la última línea para requerir el middleware que necesitas:
app . use ( '/agendash' , Agendash ( agenda , {
middleware : 'koa'
} ) ) ;
Tenga en cuenta que si utiliza un middleware de protección CSRF como csurf
, es posible que deba desactivarlo para las rutas Agendash.
Agendash viene con una aplicación Express independiente que puedes usar así:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001
o así, para agendaJobs
de recopilación predeterminada y puerto predeterminado 3000
:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb
Si está usando npm >= 5.2, entonces puede usar npx:
npx agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001