Webデスクトップの制作 #22 システムデータの禁止フラグ設定

2024/10/29

アプリケーション

t f B! P L
eyecatch Webデスクトップを作りながら、これをホームページとして使う場合と、Webツールとして使う場合では、まるで指向性や事前設定が違うのではないか?と考えてしまいました。 Webツールとして使うのであれば、ユーザーログインした上で、独自のルールを作ってデスクトップ運用することができるんですが、 ホームページとして使う場合は、必要な情報をアウトプットする必要もあるので、利用するユーザーは必要最低限それらのアウトプットを目にする表示や、固定的な機能が必要になります。 この辺はこれまでモックアップを運用してきた自分の会社のホームページで色々と分かってきたこともあるので、それらを踏襲していきたいと考えているんですけどね。 という事で、システムサイドで設定したアイコンやファイルなどは、利用者に消されないような仕組みが必要ということで、今回は、事前にセットしたsetting.jsonのアイコンデータは、 システムデータとして、削除や変更ができないようにするように、機能追加を行います。

デモ

うまく表示されていない場合は、「メニュー」-「データ初期化」をしてください。 ※デモは最新版が表示されています。該当のデモを見たい場合は、ソースをCloneしてコミットを戻してブラウザで表示して確認してください。

ソースコード

https://github.com/yugeta/web_desktop/ 今回のCommitは"#22"です。

解説

今回の機能追加は、setting.jsonのデータに対して、データセットをする際の storage.jsの初期設定処理で、アイコンデータに対して、system_flg = trueを自動でセットするようにしました。 これにより、system_flgが付いているかどうかを判別して、それぞれの処理を振り分けるようにします。 対象の処理は以下のとおりです。
1. システムファイルはゴミ箱に入れられない。 2. システムファイルは名前変更ができない。 3. システムファイルを右クリックした時のコンテキストメニューのリストの制限。
1番と2番は、単純にフラグの存在可否で判定すればいいだけなんですが、3番のコンテキストメニューは、今後の事を考えて少し複雑な処理を書きました。 desktop/context_menu.js の変更点をみてもらってもいいんですが、比較的変更ポイントが多かったので、簡単に説明すると、 setting.json の中の context_menu の内容で、authという項目を追加して、ここに連想配列データとして、system_flgを設置しました。 今後は、ここに対して、loginや、特定ユーザーの場合のみのコンテキストメニュー制御ができるようにするのが目的です。 ちなみに、今回は、システムファイルの場合は、右クリックメニューの内容を制限するために、"system_flg : false"という少し特殊な書き方をしています。 逆に、"system_flg : true"とすると、システムファイルの時だけ表示できるコンテキストメニューを作ることもできるんですが、今のところ該当する処理がないので入れていません。 あと、アイコンで表示されているシステムファイルを右クリックすると、これまで、「名前変更」と「ゴミ箱に入れる」の項目だったんですが、この2つともシステム制限される無いようなので、「開く」という項目を追加しておきました。 これも、いろいろなOSのアイコンコンテキストメニューには標準的に搭載されているので、わかりにくくはないでしょう。

ユーザーが作成したフォルダのコンテキストメニュー

システムセットされたコンテキストメニュー

あとがき

システム制御は、いろいろなアプリやサービスを作る時に非常に重要な要素にもなるので、ここのルール設置は慎重に行う必要があります。 ガチガチに厳しくしてしまうと、運用がしずらいシステムになるし、ゆるいルールだと、脆弱性の元になります。 適度なユーザビリティが意識されつつ、セキュリティ性が担保されるシステムが望ましいですね。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ