0.11 New Feature : セキュリティオブジェクト

データベースごとに構成情報用のセキュリティオブジェクトがvalidation関数で利用できるようになりました。

なんぞこれ、と思って試してみた。要するに validation 関数で、任意の設定情報を利用できるようにする仕組み。この「セキュリティ」にはものすごく広い意味がありますかね。

設定方法

/db/_security に PUTリクエストを送る。

PUT /db/_security

{
   "foo" : ["bar"]
}

とかそんな感じ。

validation 関数での利用

/db/_security という特別なURIにPUTされたオブジェクトは validate_doc_update で利用できます。

function(newDoc, oldDoc, userCtx, secObj){
   // secObj.foo -> ["bar"]
}

なにがうれしいんだろう...

設定ファイルでしかないので、たとえば一時的にメンテナンスなどでリードオンリーにしたいとき、

function(newDoc, oldDoc, userCtx, secObj){
   // secObj.foo -> ["bar"]
   if( secObj.maintenance ){
       throw {forbidden: "site is under maintenance...."}
   }
}

とやっておいて、メンテナンス開始時に

PUT /db/_security

{
   "maintenance" : true
}

とかとばせばいいのでは、、、、など。