ПРЕДУПРЕЖДЕНИЕ! Этот проект был объединен с основной программой. Этот репозиторий git устарел.
Современная, безопасная и надежная панель управления для Agenda с возможностями поиска и разбиения на страницы, написанная на vue.js.
require(agendash)
на require(agendash2)
Для зависимости @hapi/@hapi
требуется минимальный Node.js версии 12 (см. № 23).
Для более быстрой сортировки может потребоваться создать следующий индекс (см. № 24):
db.agendaJobs.ensureIndex({
"nextRunAt" : -1,
"lastRunAt" : -1,
"lastFinishedAt" : -1
}, "agendash2")
В Software On The Road мы использовали повестку дня и повестку дня почти для каждого проекта с 2017 года, но у этого всегда были свои ограничения. И из-за критической проблемы безопасности, которую мы обнаружили в промежуточном программном обеспечении сервера, мы решили форкнуть повестку дня и переписать ее с нуля. Сначала мы пытались просто исправить существующий код, но он был написан на backbone.js, поэтому его изучение потребует больше усилий, чем просто использование vue.js для воссоздания существующих функций. В конце концов, это всего лишь простой CRUD с нумерацией страниц и поиском, ничего особенного.
npm install --save agendash2
Примечание . Для выполнения необходимых агрегатных запросов Agendash
требуется версия mongodb > 2.6.0. Это ваша версия базы данных mongo, а не версия вашего пакета узла! Чтобы проверить версию вашей базы данных, подключитесь к mongo и запустите db.version()
.
Agendash2 предоставляет промежуточное программное обеспечение Express, которое вы можете использовать по указанному пути, например, это сделает Agendash2 доступным на вашем сайте по пути /dash
. Примечание. Не пытайтесь монтировать Agendash2 на корневом уровне, например 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
Монтируя Agendash2 в качестве промежуточного программного обеспечения по определенному пути, вы можете обеспечить собственную аутентификацию для этого пути. Например, если у вас есть сеанс с аутентификацией с использованием паспорта, вы можете защитить путь к панели управления следующим образом:
app . use ( '/dash' ,
function ( req , res , next ) {
if ( ! req . user || ! req . user . is_admin ) {
res . send ( 401 ) ;
} else {
next ( ) ;
}
} ,
Agendash ( agenda )
) ;
Другие промежуточные программы скоро появятся в папке /lib/middlewares/
. Вам просто нужно обновить последнюю строку, чтобы указать необходимое промежуточное программное обеспечение:
app . use ( '/agendash' , Agendash ( agenda , {
middleware : 'koa'
} ) ) ;
Обратите внимание: если вы используете промежуточное программное обеспечение защиты CSRF, такое как csurf
, вам может потребоваться отключить его для маршрутов Agendash.
Agendash поставляется с автономным приложением Express, которое вы можете использовать следующим образом:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001
или вот так, для сбора agendaJobs
по умолчанию и порта по умолчанию 3000
:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb
Если вы используете npm >= 5.2, вы можете использовать npx:
npx agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001