みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。
ログインすると最初にプロジェクト一覧画面に遷移するシステムをつくっています。
プロジェクトマスタ
ーーーーーーーーーーーーー
プロジェクトID
ログイン情報
ーーーーーーーーーーー
g_ログインID(グローバルフィールド)
アカウントテーブル
ーーーーーーーーーーーー
ログインID(g_ログインIDとリレーション)
パスワード
ユーザ情報
ーーーーーーーーーーー
社員ID(ログインIDとリレーション)
氏名
レイアウトはプロジェクトマスタでつくっているのですが、このレイアウト上に
パスワード変更ボタンを作成し、ポップオーバーでパスワード変更画面を出したいのですが
別レイアウトにしないと無理でしょうか。
概念があっているのかは分かりませんが
①
コネクタ
ーーーーーーーーー
g_コネクタ
②
セレクタ
ーーーーーーーー
g_コネクタ(①のg_コネクタと × でリレーション)
g_ログインID(g_ログインIDをルックアップ)
③
アカウントテーブル
ーーーーーーーーーーーー
ログインID(②のg_ログインIDと=リレーション)
パスワード
④
ユーザ情報
ーーーーーーーーーーー
社員ID(③のログインIDと=リレーション)
氏名
⑤
プロジェクトマスタ
ーーーーーーーーーーーーー
g_コネクタ(①のコネクタと x でリレーション)
プロジェクトID
とためしにやってみたのですが、
ログインしている人間のアカウント情報は表示できませんでした。
もう少し、アクセス権などの勉強をしましょう。
https://www.filemaker.com/jp/learning/ の、マスターブックはいい参考書です。
アカウントとパスワードの管理は、FIleMaker 標準機能を使われた方が、いろいろと楽なことが多いです。
外部との同期などは必要ならば、AD などを利用してもいいです
それで機能的に不十分ならば、場合によっては独自の管理を行ってもいいでしょう。
ちなみに、パスワードの変更は、標準機能にもありますが、カスタムダイアログを使う方が楽です。
また、アカウント情報は、取得関数で得られます。
Offline
現在、一つのファイルメーカーファイルでシステムを作成しているのですが、
将来的にファイル分離を行う予定ということでアカウント情報を
保存するデータベースとして作ったのが③でした。
パスワードにはCryptEncryptBase664関数など使って暗号化すれば
いいのかなと思っていたのですが...
保存しているログインID、パスワードで複数のファイルメーカーファイルの
アカウント作成はでき...ない...。
なんか根本的に間違えていることが分かりましたので、教えていただいた
マスターブックを読みたいと思います。
ありがとうございました。
FIleMaker 標準機能を使った場合、パスワードは読み出せません。ただ、ファイルそのものをコピーして、DB部分を書き換えると、同じアカウント情報を持った異なるファイルが作成できます。
また、アカウントに関連するスクリプトステップ にあるステップを使うと、アカウントの作成や編集が可能です。ユーザーによるパスワードの変更も、メニューをカスタマイズしておけば、作成したスクリプトで編集させる(別のファイルを含めて)ことが可能です。
> パスワードにはCryptEncryptBase664関数など使って暗号化すればいいのかなと思っていたのですが...
ファイル内の暗号化も、実運用上はどこかに暗号鍵を埋め込んでおくことになるので、完璧な暗号化にはなりませんね。
> 保存しているログインID、パスワードで複数のファイルメーカーファイルのアカウント作成はでき...ない...。
アカウント作成は可能ですが、パスワードを保持しておく必要があります。その機密保持をどうするかを考えると、パスワードをファイル内に保存するかどうかは悩ましいでしょう。
新しいファイルを作った場合、ユーザーに自分でアカウントを作らせる(もちろん自動で)方法もあります。
アカウントの管理で、ファイルごとの状態を持たせておきます。ログイン時にアカウントを作っていないファイルがあれば、カスタムダイアログを使って再度ログイン情報を入力させ、パスワードを取得します。その情報で、新しいファイルにアカウントを作成します。
具体的には、アカウントを管理するための専用のアカウントでログインし直し、新しいファイルのスクリプトを開き、アカウントを作り、ログインし直し、元のファイルもログインしなおす、という手順です。ただ、その専用アカウントの情報が漏れるとちょっと面倒ですので、専用のファイルを作って自動ログインさせ、そこから新しいファイルを操作する方法も考えられます。
https://www.dropbox.com/s/7bvqco6nipqxi … 2.zip?dl=0(期間限定公開)
Developer Subscription の契約者が利用できる、FileMaker data migration tool も役に立つかもしれません。
Last edited by Shin (2019-07-16 19:50:09)
Offline
※以下、g_ の付いたフィールドがグローバルフィールドだと仮定しての話になります。
ログインしている人間のアカウント情報は表示できませんでした。
グローバルフィールドはどのレイアウトからでも設定・参照が可能ですが、私の思い違いで無ければレイアウトテーブル以外のグローバルフィールドと紐尽くリレーションは、そのレイアウトから参照できなかったように思います。
プロジェクトマスタ::g_コネクタ
│
コネクタ::g_コネクタ
│
セレクタ::g_コネクタ
セレクタ::g_ログインID
│
アカウントテーブル::ログインID
│
ユーザ情報::社員ID
今回の場合、上記のような構造だと思いますが、g_付きがグローバルフィールドならプロジェクトマスタからアカウントテーブルのデータは参照できないと思います。
この構造でユーザ情報を参照できるのはセレクタ以降ではないでしょうか。
Offline
shinさん
サンプルファイルありがとうございます。
別ファイルのアカウント作成スクリプトは動かせないかと思ってしまっていたのですが、無事できました。
>> パスワードにはCryptEncryptBase664関数など使って暗号化すればいいのかなと思っていたのですが...
>ファイル内の暗号化も、実運用上はどこかに暗号鍵を埋め込んでおくことになるので、完璧な暗号化にはなりませんね。
そうなんですね。。CryptEncryptBase664関数を使うと今度は暗号鍵のセキュリティを考えないと
まずいということですね。ちょっとどこまでセキュリティ対策するか、協議したいと思います。
≻Developer Subscription の契約者が利用できる、FileMaker data migration tool も役に立つかもしれません。
これは知りませんでした。
どういうものか今から見てみたいと思います。
大変役に立つ情報をありがとうございました。
micさん
≻グローバルフィールドはどのレイアウトからでも設定・参照が可能ですが、私の思い違いで無ければレイアウトテーブル以外のグローバルフィールドと紐尽くリレーションは、そのレイアウトから参照できなかったように思います。
ありがとうございます。グローバルフィールドだとダメだということで、コネクタ、セレクタをグローバルではなく、
普通のフィールドとして、リレーションを作成してみたところ、表示することができました。
コネクタ、セレクタを1データだけ持つDBとして管理すればいいのかなと考えています。
この方法が、正しいのかどうかいまいち分かりませんが...一般に言われているセレクタコネクタの概念と違う気がしますが...
とりあえず、これで実装してみようかと思います。
ありがとうございました。
サンプルは、都合で FM16 で作っていますので、カスタムダイアログに、グローバルフィールドを使っています。FM17以降ですとグローバルフィールドの代わりに変数を使えますので、セキュリティーの心配が減ります。
サンプルで起動しているファイルのアカウントと同じ管理アカウントは、管理者が新規ファイル作成時に作っておきますので、パスワードを公開せずに運用可能です。また、スクリプトもそのアカウントのみで実行可能にしておくと、セキュリティーレベルとしてはかなり高く保てます。
同じような仕組みを使って、パスワードの変更プロセスも作り込めます。
この管理ですと、パスワードはユーザー以外は知る必要がありませんので、安全だと思います。
Last edited by Shin (2019-07-16 15:04:57)
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 547.66 KiB (Peak: 568.57 KiB) ]