AVERTISSEMENT! Ce projet a été fusionné dans l'Agendash principal. Ce dépôt git est désormais obsolète.
Un tableau de bord moderne, sécurisé et fiable pour Agenda avec des capacités de recherche et de pagination écrites en vue.js
require(agendash)
en require(agendash2)
Une version minimale de Node.js 12 est requise pour la dépendance @hapi/@hapi
(voir #23)
Il peut être nécessaire de créer l'index suivant pour un tri plus rapide (voir #24)
db.agendaJobs.ensureIndex({
"nextRunAt" : -1,
"lastRunAt" : -1,
"lastFinishedAt" : -1
}, "agendash2")
Chez Software On The Road, nous utilisons agenda et agendash pour presque tous les projets depuis 2017, mais cela a toujours eu ses limites. Et en raison d'un problème de sécurité critique que nous avons trouvé sur le middleware du serveur, nous avons décidé de bifurquer agendash et de le réécrire à partir de zéro. Au début, nous avons essayé de simplement patcher le code existant, mais il était écrit dans backbone.js, il serait donc plus difficile de l'apprendre que d'utiliser simplement vue.js pour recréer les fonctionnalités existantes. Après tout, ce n'est qu'un simple CRUD avec pagination et recherche, rien d'extraordinaire.
npm install --save agendash2
Remarque : Agendash
nécessite la version mongodb >2.6.0 pour effectuer les requêtes agrégées nécessaires. Il s'agit de la version de votre base de données mongo, pas de la version de votre package de nœud ! Pour vérifier la version de votre base de données, connectez-vous à mongo et exécutez db.version()
.
Agendash2 fournit un middleware Express que vous pouvez utiliser sur un chemin spécifié, par exemple cela rendra Agendash2 disponible sur votre site au chemin /dash
. Remarque : n'essayez pas de monter Agendash2 au niveau racine comme 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
En montant Agendash2 en tant que middleware sur un chemin spécifique, vous pouvez fournir votre propre authentification pour ce chemin. Par exemple, si vous disposez d'une session authentifiée à l'aide d'un passeport, vous pouvez protéger le chemin du tableau de bord comme ceci :
app . use ( '/dash' ,
function ( req , res , next ) {
if ( ! req . user || ! req . user . is_admin ) {
res . send ( 401 ) ;
} else {
next ( ) ;
}
} ,
Agendash ( agenda )
) ;
D'autres middlewares arriveront prochainement dans le dossier /lib/middlewares/
. Il vous suffira de mettre à jour la dernière ligne pour exiger le middleware dont vous avez besoin :
app . use ( '/agendash' , Agendash ( agenda , {
middleware : 'koa'
} ) ) ;
Notez que si vous utilisez un middleware de protection CSRF tel que csurf
, vous devrez peut-être le désactiver pour les routes Agendash.
Agendash est livré avec une application Express autonome que vous pouvez utiliser comme ceci :
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001
ou comme ceci, pour la collection agendaJobs
par défaut et le port par défaut 3000
:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb
Si vous utilisez npm >= 5.2, vous pouvez utiliser npx :
npx agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001