Admin.js とは
- node.js アプリケーションに簡単に管理画面を追加できる npm ライブラリ
- 同一ドメインで
/admin
配下に追加することが出来る
- 管理画面では DB の CRUD ができる
- 実装すればダッシュボード画面を用意できる
- 簡単に作るためのしくみ(templateやimportなど)はないので、APIを使って一からReact.jsを使って画面を実装する必要がある
- 複数の DB に対する CRUD が可能
- DB アクセスは ORM/ODM を用いる
- mongoose, sequelize, TypeORM に対応している
- CRUD インタフェース(Resourceインタフェース) を定義すれば独自のリソース管理ができる
- List, Delete する CLI コマンドをラップして Resource 定義する等も可能
所感
- モデル(リソース) を定義することで DB アクセスが可能になるのは楽でよい
- (管理画面以外の)アプリケーション用に実装したモデルがあれば流用できる
- 簡単なフィルタができるくらいなので CRUD 操作以外の高度な機能は期待してはいけない
- 特にダッシュボードは default は単なる(OSSとしてのAdmin.jsにおける) help リンク集なので役に立たない
- phpmyadmin, phpldapadmin など、DB の種類ごとに管理画面を分ける必要がなく、インスタンスの運用コストは低く済ませられるのでよい
- 但し、LDAP 操作をする ODM などはないので、LDAP 管理をするためには自前でリソースを定義する必要があり残念
- 認証/認可は自前実装しないといけないので手間がかかって悩ましい
- アプリケーションの認証/認可を流用はできるがコードの多重管理にはなる
- ちゃんとした認可もできず、GUI 上で操作ボタンを非表示にできる程度
- (やってはいないが) API を直接叩けば操作出来てしまうと思われる
- ちゃんと認可する方法は公式ドキュメントには存在しない
- API パスが resource 名のみ(
resources/<リソース名>
)なので複数 DB で同一 table 名があると名前を変えないといけないので残念
- ex. MongoDB, PostgreSQL に
user
リソースがあった場合はどちらかを別名にしないといけない