WARNUNG! Dieses Projekt wurde in die Hauptagendash integriert. Dieses Git-Repo ist jetzt veraltet.
Ein modernes, sicheres und zuverlässiges Dashboard für Agenda mit Such- und Paginierungsfunktionen, geschrieben in vue.js
require(agendash)
in require(agendash2)
Für @hapi/@hapi
-Abhängigkeit ist mindestens Node.js Version 12 erforderlich (siehe Nr. 23).
Für eine schnellere Sortierung kann es erforderlich sein, den folgenden Index zu erstellen (siehe Nr. 24).
db.agendaJobs.ensureIndex({
"nextRunAt" : -1,
"lastRunAt" : -1,
"lastFinishedAt" : -1
}, "agendash2")
Bei Software On The Road verwenden wir seit 2017 Agenda und Agendash für fast jedes Projekt, aber es hatte immer seine Grenzen. Und aufgrund eines kritischen Sicherheitsproblems, das wir in der Server-Middleware festgestellt haben, haben wir beschlossen, Agendash zu forken und es von Grund auf neu zu schreiben. Zuerst haben wir versucht, nur den vorhandenen Code zu patchen, aber er war in backbone.js geschrieben, daher wäre es aufwändiger, ihn zu lernen, als einfach vue.js zu verwenden, um die vorhandenen Funktionen neu zu erstellen. Schließlich ist dies nur ein einfaches CRUD mit Paginierung und Suche, nichts Besonderes.
npm install --save agendash2
Hinweis : Agendash
erfordert die Mongodb-Version >2.6.0, um die erforderlichen Aggregatabfragen durchzuführen. Dies ist Ihre Mongo-Datenbankversion, nicht Ihre Knotenpaketversion! Um Ihre Datenbankversion zu überprüfen, stellen Sie eine Verbindung zu Mongo her und führen Sie db.version()
aus.
Agendash2 stellt Express-Middleware bereit, die Sie unter einem angegebenen Pfad verwenden können. Dadurch wird Agendash2 beispielsweise auf Ihrer Site unter dem /dash
-Pfad verfügbar. Hinweis: Versuchen Sie nicht, Agendash2 wie app.use('/', Agendash(agenda))
auf der Root-Ebene zu mounten.
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
Indem Sie Agendash2 als Middleware auf einem bestimmten Pfad bereitstellen, können Sie Ihre eigene Authentifizierung für diesen Pfad bereitstellen. Wenn Sie beispielsweise eine authentifizierte Sitzung mit Passport haben, können Sie den Dashboard-Pfad wie folgt schützen:
app . use ( '/dash' ,
function ( req , res , next ) {
if ( ! req . user || ! req . user . is_admin ) {
res . send ( 401 ) ;
} else {
next ( ) ;
}
} ,
Agendash ( agenda )
) ;
Weitere Middlewares werden in Kürze im Ordner /lib/middlewares/
verfügbar sein. Sie müssen nur die letzte Zeile aktualisieren, um die benötigte Middleware zu benötigen:
app . use ( '/agendash' , Agendash ( agenda , {
middleware : 'koa'
} ) ) ;
Beachten Sie, dass Sie, wenn Sie eine CSRF-Schutz-Middleware wie csurf
verwenden, diese möglicherweise für Agendash-Routen deaktivieren müssen.
Agendash wird mit einer eigenständigen Express-App geliefert, die Sie wie folgt verwenden können:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001
oder so, für die Standardsammlung agendaJobs
und den Standardport 3000
:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb
Wenn Sie npm >= 5.2 verwenden, können Sie npx verwenden:
npx agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001