本体データ編集機能「とりあえず」実装。
ぎりぎり日が変わってしまったけど、とにかくこれが無いと履歴画面や差分表示画面などなどを作り、確認する為のデータ作りが出来ないので。
とりあえずこんな感じのURLで本体データの編集画面が表示されます。
http://hogehoge/?id=xxxx/edit ^^^^
データIDのパラメータで、IDに続けて「'/' + コマンド名」でコマンドに対応した画面になります。未対応のコマンド名の場合は・・・多分今は特に何もせず、デフォルトモジュールのデフォルト動作(=何もしない)になります。これはユーザーがうっかりミスの入力をしそうな箇所ですので、requireではなくてincludeにしてあります。また、capitalize(ucwords())した後クラスファイル名・クラス名として文字連結するパラメータになりますので、ディレクトリトラバーサルの危険性が発生します。それについては、yakibikiモジュールのdispatcherの、idパラメータのparse処理の時点で正規表現で小文字英字のみにヒットした場合としていますので、問題ないと思います。
つまり、
http://hogehoge/?id=xxxx/../../../etc/passwd
としてもそもそも無効な"id"パラメータフォーマットとしてdispatcherの時点でエラーにしてくれます。
というわけで、今回は本体データ編集を行う"edit"コマンドを実装したことになります・・・が、相変わらずとりあえずです。うーん、本体データ自体はそれほどデータの関連が凝っている分けではないので楽だったと思いますが、例によりトランザクションまとめてないし、データ更新時の成否チェックや失敗時のエラー判定処理などは完全にスキップしてます。また"image"データタイプの場合、例によりアップロードされたファイルの厳密な画像フォーマットチェックは全く実装していないので、そこも危険です。
が、とりあえずこれでバージョン情報を表示したり、current_versionを変更したり、diff表示を行ったりする為のデータ投入は出来るようになったので、このまま前進します。
・・・ってノリが良くなったところで、またまた中断。明日から3日間、家の都合で作業を離れることになります。NotePCは持ち歩きますので、隙を見て/夜など落ち着いたら更新できると良いのですが・・・。