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のアイコンコンテキストメニューには標準的に搭載されているので、わかりにくくはないでしょう。
ユーザーが作成したフォルダのコンテキストメニュー
システムセットされたコンテキストメニュー
あとがき
システム制御は、いろいろなアプリやサービスを作る時に非常に重要な要素にもなるので、ここのルール設置は慎重に行う必要があります。
ガチガチに厳しくしてしまうと、運用がしずらいシステムになるし、ゆるいルールだと、脆弱性の元になります。
適度なユーザビリティが意識されつつ、セキュリティ性が担保されるシステムが望ましいですね。
0 件のコメント:
コメントを投稿