警告!このプロジェクトはメインの Agendash に統合されました。この git リポジトリは現在非推奨です。
vue.js で記述された検索機能とページネーション機能を備えた、Agenda 用の最新で安全かつ信頼性の高いダッシュボード
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 年以来、ほぼすべてのプロジェクトでアジェンダとアジェンダダッシュを使用してきましたが、常に限界がありました。そして、サーバー ミドルウェアで重大なセキュリティ問題が見つかったため、Agendash をフォークして最初から書き直すことにしました。最初は既存のコードにパッチを適用しようとしましたが、backbone.js で記述されていたため、vue.js を使用して既存の機能を再作成するだけの方が学習に労力がかかります。結局のところ、これはページネーションと検索を備えた単純な CRUD であり、特別なことは何もありません。
npm install --save agendash2
注: Agendash
必要な集計クエリを実行するには、mongodb バージョン > 2.6.0 が必要です。これは、node パッケージのバージョンではなく、mongo データベースのバージョンです。データベースのバージョンを確認するには、mongo に接続し、 db.version()
を実行します。
Agendash2 は、指定したパスで使用できる Express ミドルウェアを提供します。たとえば、これにより、Agendash2 がサイトの/dash
パスで利用できるようになります。注: app.use('/', Agendash(agenda))
のように Agendash2 をルート レベルでマウントしようとしないでください。
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'
} ) ) ;
csurf
などの CSRF 保護ミドルウェアを使用する場合は、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