【node.js】apiDocにパーミッションごとに閲覧制限する方法
【node.js】apiドキュメント作成ツールのapiDocがよさそう - とりあえずphpとか
こちらの続き
やりたいことはapiのパーミッションによってドキュメント自体の閲覧も制限したいということ
api_data.js ## ドキュメントの内容が定義されている api_data.json ## ↑のjson版 実際には使われていなそう index.html main.js ## require.jsでapi_data.jsを読み込んでhtmlを書き換える
html、jsの構成と動きはこんな感じになっていた
なのでapi_data.jsの内容を動的に出せれば実現できそう
今回は.htaccessとphpでやってみた
RewriteEngine on RewriteRule api_data.js api_data.php
<?php
$json = file_get_contents("./api_data.json");
$json = json_decode($json,1);
/**
* パーミッションを返す
* 今回は固定値だが実際はセッションなどの値を返す
*/
function getPermission() {
return "admin";
}
// 元となるjsonのpermissionを見て閲覧不可なものはjsonから除く
$json = array_filter($json, function($item) {
if (!isset($item["permission"])) {
return true;
} else {
return array_filter($item["permission"], function($permission) {
return $permission["name"] == getPermission();
});
}
});
// jsonを返す
header("Content-type: text/javascript");
echo "define(" . json_encode(array("api" => $json)) . ");";とりあえずこれでやりたいことはできた。