うしブログ

うしブログ

趣味で運営する、GeoGebraの専門ブログ。

(作業メモ)StartPoint要検証(2行の場合;テキスト変更時未定義問題)

(要修復)ToggleButton・RollPolygonWithoutSlipping・貯金時計・直感力トレーニング

アプレットにパスワードをかける方法

はじめに

本記事は、過去記事「webページに埋め込んだGeoGebraアプレットにおける内部構造の閲覧制限について」で得られた知見を利用して、アプレットにパスワードをかける方法、および、その応用として、「生徒向けワークシート」で表示した場合に限り、パスワードを要求せず、それ以外のページで(またはダウンロードして)アプレットを開いた場合にのみ、パスワードを要求する設定にする方法を紹介する。

なお、ここで紹介する方法は、アプレット自体にパスワードの情報が含まれる方法であるため、制限は絶対的なものではありえない。ファイル自体を解析する等、方法によっては内部構造を閲覧できる余地があるだろう。 したがって、本記事の方法は完全な閲覧制限を保障するものではない。さらに、本記事に書かれている方法を用いたことによって生じたトラブルに関して、筆者は一切の責任を負いかねる旨、ご留意いただきたい。

 

設定方法

設定方法は、いたって簡単である。設定したいパスワードは「1234」であるとする。

 

①任意の点オブジェクトを作成し、名前を「XXX」とする。

名前は何でも良い。また、この点はユーザーに誤ってクリックされるのを防ぐため、非表示にしておくことが望ましい。

 

②点XXXのOn Click ハンドラに、Javascriptで、以下を記述する。

if(pass != "1234"){
ggbApplet.newConstruction();
ggbApplet.reset();
}

パスワードを「1234」以外にしたいときは、上記スクリプトのうち「1234」とある部分を、好きな文字列に設定すればよい。

 

③グローバルJavaスクリプトに、以下を記述する。

function ggbOnInit() {

pass = prompt("パスワードを入力してください", "");

ggbApplet.evalCommand("RunClickScript[XXX]");

点XXXの名前を別の名前にしている場合には、上記スクリプトのうち「XXX」とある部分を、点の名前に置き換えて頂きたい。 

 

設定は以上である。これで、アプレットを開くときに、パスワード要求画面が表示されるようになる。パスワードが間違っていたり、パスワード要求画面を閉じたりすると、何のオブジェクトもない、まっさらなアプレットに切り替わる。

 

「生徒向けワークシート」のみパスワードを要求しない方法

生徒向けワークシートのURLが、「https://www.geogebra.org/m/***」であるとする。

上記③のスクリプトを、以下に置き換えればよい。それ以外の設定は、上記と同様である。

function ggbOnInit() {
if(location.href != "https://www.geogebra.org/m/***") {
pass = prompt("パスワードを入力してください", "");
ggbApplet.evalCommand("RunClickScript[XXX]");
}
}

 

バージョン情報

本記事は、以下のバージョンのGeoGebraを前提としています。

Version: 6.0.462.0-w (02 May 2018)