Feature / File 16

FW 管理側 公開側

ダウンロード権限制御

ログイン、トークン、対象レコードに応じてファイル取得可否を制御します。

ダウンロード権限制御は、帳票、添付ファイル、CSV、ZIP、公開資料などを、許可された人だけが取得できるようにする機能です。Roundtableでは「誰が、どの入口から、どのレコードに紐づくファイルを、いつまで取得できるか」を先にそろえると、発注者、実装者、AIに指示する人が同じ前提で安全なファイル配布を設計できます。

ログイン、トークン、対象レコードに応じてファイルの取得可否を判定する業務画面例

この機能でできること

管理側のログインユーザー、公開側のトークンURL、会員ポータル、対象レコードの公開状態に応じて、ファイルをダウンロードできるかをサーバー側で判定できます。ファイル名や保存場所を直接推測されないようにし、権限外、期限切れ、削除済み、非公開のファイルは返さない構成にできます。

ファイルを返す直前に、対象者と対象レコードを確認できます。 画面上のボタン表示だけでなく、ダウンロード関数側でログイン状態、公開コード、有効期限、対象レコードの公開可否を確認します。

よくある利用場面

会員や顧客ごとに見える資料を分ける 会員ポータルや顧客向け画面で、自分に紐づく請求書、契約書、報告書だけを取得できるようにします。
公開URLの期限と対象を制限する メールやLINEで送る資料URLにトークンを付け、対象レコード、有効期限、公開停止状態を確認してから返します。
社内用ファイルの混入を防ぐ 添付一覧や一括ZIP出力で、内部メモ、下書き、非公開ファイルが外部向けダウンロードに混ざらないようにします。

プロンプト例

取得できる人、入口、対象レコード、ファイル種別、期限、拒否時の表示、ログの有無をまとめて伝えると、権限判定の抜け漏れを減らせます。

プロンプト 請求書PDFのダウンロード権限制御を追加してください。管理側ではログインユーザーの権限と担当範囲を確認し、公開側では暗号化トークンから対象請求を特定して、有効期限、公開可否、顧客ID一致を確認してからPDFを返してください。権限外、期限切れ、削除済みの場合はファイル名や保存先を表示せず、取得できない案内だけを出してください。ダウンロード日時と入口は履歴に残してください。

この機能を使うときのポイント

入口の種類管理側ログイン、会員ログイン、ログイン不要URL、外部連携URLのどこから取得するかを分けます。
対象レコード請求、契約、申込、案件、会員など、ファイルがどのデータに紐づくかを明確にします。
公開条件公開可、承認済み、期限内、支払い済み、本人一致など、取得できる条件を言葉にします。
拒否時の情報量権限外の相手に、ファイル名、顧客名、保存パス、内部状態を見せない表示にします。

この機能を実装するときのコツ

ダウンロード権限制御は、一覧や詳細画面のボタン表示だけに頼らず、実ファイルを返す関数で必ず判定します。FBPではURL生成を `$ctl->get_APP_URL()` に寄せ、保存済みファイルの応答は標準のファイル返却処理に寄せると、独自headerや保存パス露出を増やさずに済みます。公開側では平文IDをURLへ出さず、暗号化値や推測されにくいコードを使い、復号後も対象レコード、期限、公開可否、本人一致を再確認します。拒否時は同じ文言で返すなど、存在確認に使われにくい表示にしておくと安全です。