読者です 読者をやめる 読者になる 読者になる

【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の内容を動的に出せれば実現できそう
今回は.htaccessphpでやってみた

.htaccess

RewriteEngine on
RewriteRule api_data.js api_data.php

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)) . ");";

とりあえずこれでやりたいことはできた。

おわりに

api_data.jsonは使われていないみたいだけどコレを使って自前でページ作っちゃうのもありかも
以上です