AVISO! Este projeto foi incorporado ao Agendash principal. Este repositório git está obsoleto agora.
Um painel moderno, seguro e confiável para Agenda com recursos de pesquisa e paginação escritos em vue.js
require(agendash)
para require(agendash2)
Uma versão mínima 12 do Node.js é necessária para a dependência @hapi/@hapi
(consulte #23)
Pode ser necessário criar o seguinte índice para uma classificação mais rápida (ver #24)
db.agendaJobs.ensureIndex({
"nextRunAt" : -1,
"lastRunAt" : -1,
"lastFinishedAt" : -1
}, "agendash2")
Na Software On The Road usamos agenda e agendash para quase todos os projetos desde 2017, mas sempre teve suas limitações. E devido a um problema crítico de segurança que encontramos no middleware do servidor, decidimos fazer um fork do agendash e reescrevê-lo do zero. No início, tentamos apenas corrigir o código existente, mas ele foi escrito em backbone.js, então seria mais difícil aprendê-lo do que apenas usar vue.js para recriar os recursos existentes. Afinal, este é apenas um CRUD simples com paginação e pesquisa, nada sofisticado.
npm install --save agendash2
Nota : Agendash
requer a versão mongodb >2.6.0 para realizar as consultas agregadas necessárias. Esta é a versão do seu banco de dados mongo, não a versão do pacote do nó! Para verificar a versão do seu banco de dados, conecte-se ao mongo e execute db.version()
.
Agendash2 fornece middleware Express que você pode usar em um caminho especificado, por exemplo, isso tornará o Agendash2 disponível em seu site no caminho /dash
. Nota: Não tente montar o Agendash2 no nível raiz 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
Ao montar o Agendash2 como middleware em um caminho específico, você pode fornecer sua própria autenticação para esse caminho. Por exemplo, se você tiver uma sessão autenticada usando passaporte, poderá proteger o caminho do painel assim:
app . use ( '/dash' ,
function ( req , res , next ) {
if ( ! req . user || ! req . user . is_admin ) {
res . send ( 401 ) ;
} else {
next ( ) ;
}
} ,
Agendash ( agenda )
) ;
Outros middlewares virão em breve na pasta /lib/middlewares/
. Você apenas terá que atualizar a última linha para exigir o middleware necessário:
app . use ( '/agendash' , Agendash ( agenda , {
middleware : 'koa'
} ) ) ;
Observe que se você usar um middleware de proteção CSRF como csurf
, pode ser necessário desativá-lo para rotas Agendash.
Agendash vem com um aplicativo Express independente que você pode usar assim:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001
ou assim, para agendaJobs
de coleta padrão e porta padrão 3000
:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb
Se você estiver usando npm >= 5.2, poderá usar npx:
npx agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001