9 返信 最新の回答 日時: Mar 14, 2016 7:11 PM ユーザー:coyayac

    レコードのアクセス権が機能しない

    coyayac

      FileMakerを「テーブルファイル」と「画面ファイル」に分けた分離モデルにしています。

      参照のみでデータの変更ができないユーザーを作りたいのですがうまく行かずに質問させていださきます。

       

      FileMakerを開くと自作したログイン画面が開くのですが、参照のみユーザーでログインした場合は
      以下のアクセス権セットのアカウントで再ログインするようにしました。

       

      レコード:「すべてのテーブルで表示のみ」


      しかし、参照用ユーザーでログインしても画面からレコードの更新ができてしまいます。

       

      アクセス権が「画面ファイル」のみ対象になり「データファイル」まで影響しないせいか?とも
      思うのですが、なにかよい方法はありませんでしょうか。


      FileMaker ver14

        • 1. Re: レコードのアクセス権が機能しない
          user19752

          「データファイル」も再ログインしてみたらどうでしょうか。

          • 2. Re: レコードのアクセス権が機能しない
            coyayac

            アドバイスありがとうございます。


            >「データファイル」も再ログインしてみたらどうでしょうか。


            「テーブル(データ)ファイル」がFileMakerServerにあるのですが、「画面ファイル」のログイン時に「テーブルファイル」にログインする方法が分かりませんでした、、


            分離モデルの場合、「テーブルファイル」にもログインしているのか、概念が良くわかっていなくて申し訳ないのですが、画面の起動時に「テーブルファイル」にログインもしくは再ログインするには、どのようにすればよいでしょうか、、

            • 3. Re: レコードのアクセス権が機能しない
              user19752

              「テーブルファイル」に再ログインのスクリプトを作っておいて、それを実行します。


              あるいは、「テーブルファイル」を閉じれば自動的に必要時に再ログインするはずなので、この方が簡単かもしれない。


              • 4. Re: レコードのアクセス権が機能しない
                user14047

                一度関連ファイルを開いてしまうと、その関連ファイルを閉じても同じアカウントで再度開いてしまいます。

                自作したログイン画面

                はどのようにして作っていますか?FileMaker 標準のログインではなく、カスタムダイアログでフィールドに入力させる形ですか?
                もし、アカウント名とパスワードを取得できる形の自作ログイン画面であれば、関連ファイルのスクリプト実行の時に、このアカウントとパスワードを引数で渡して、関連ファイルの再ログインスクリプトで引数で渡された値で再ログインさせるようにするしかないと思います。

                分離モデルで構築する際には、インターフェイスファイルとデータファイルでアクセス権が違ってきますので、インターフェイスファイルのスクリプトに[完全アクセス権を付与] しても、データファイルの完全アクセス権は付与されませんので注意が必要です。

                 

                もし、FileMaker 標準のログインを利用している場合は、パスワードの文字列を取得できませんから、関連ファイルが開く前に、インターフェイスファイルで再ログインするようにして、同じアカウントで関連ファイルも開くようにファイルを開かせるタイミングを考えればいいかと思います。

                (ログイン時に利用するレイアウトには、関連ファイルのテーブルやフィールドを置かない。onFirstWindowOpen のスクリプトでログインする前に関連ファイルにアクセスさせない。など)

                 

                完全アクセス権のアカウントで作業して、表示のみアカウントに切り替えて作業を続行...というような場合は、前者の自作再ログインスクリプトで関連ファイルの再ログインを実行させるしかないです。

                 

                参考:

                FileMaker Pro 14 ヘルプ : データベースの保護について

                • 5. Re: レコードのアクセス権が機能しない
                  coyayac

                  >「テーブルファイル」に再ログインのスクリプトを作っておいて、それを実行します

                   

                  FilemakerServerに置いてある「テーブルファイル」となるのですが、データファイル側のスクリプトを画面側から起動するにはどのような方法がありますでしょうか。

                   

                  >自作したログイン画面はどのようにして作っていますか?

                   

                  FileMaker標準ログインは、再ログインスクリプト内で使用しているのみとしています。

                  ログイン用レイアウトと、ユーザーidテーブルとを作ってあり、ユーザーidテーブルには

                  ・ユーザーid

                  ・パスワード

                  ・権限区分(管理者、入力者、参照のみ等)

                  などを登録できるようにしています。この「権限区分」にFileMakerのアクセス権セットを紐づけていいます。

                  (なので、FileMaker標準のユーザーidは権限区分の種類数しかありません)

                   

                  ログインすると、権限区分に紐づいたアクセス権で再ログインするようにしています。

                   

                  >、関連ファイルの再ログインスクリプトで引数で渡された値で再ログインさせるようにするしかないと思います。

                   

                  FileMakerのアクセス権設定で、Serverに置いてあるデータファイルのテーブルが見えず関連ファイルへの再ログインがうまく設定できなさそうです。

                  • 6. Re: レコードのアクセス権が機能しない
                    user14047
                    FilemakerServerに置いてある「テーブルファイル」となるのですが、データファイル側のスクリプトを画面側から起動するにはどのような方法がありますでしょうか。

                    FileMaker Pro 14 ヘルプ : スクリプト実行

                    スクリプト実行スクリプトステップで、外部ファイルのスクリプトを指定するだけですよ。

                     

                    FileMaker のアカウント機能ではなく、レコードの値を利用しているわけですね。
                    (パスワードの文字列が FileMaker に値として入っている状況はあまりよろしくないと思いますが...)

                    ログイン用レイアウトと、ユーザーidテーブルとを作ってあり、ユーザーidテーブルには

                    ・ユーザーid

                    ・パスワード

                    ・権限区分(管理者、入力者、参照のみ等)

                    とあるので、関連ファイルには、権限区分だけを引数で渡せばなんとかなりませんか?

                    関連ファイルに [再ログイン] という名前のスクリプトを用意して、

                     

                    スクリプト実行 [ 「再ログイン」 , ファイル: 「関連ファイル」 ; 引数: 権限区分 ]
                    

                     

                    関連ファイルの方の [再ログイン] スクリプトでは、Get ( スクリプト引数 ) でインターフェイスファイルから渡された引数をもらい受け、この値で条件分岐させて再ログインスクリプトを作成すればいいかと思います。

                    • 7. Re: レコードのアクセス権が機能しない
                      coyayac

                      色々とフォローありがとうざいます。

                      アドバイス頂いた内容がやっと理解できました。

                       

                      今週末くらいになってしまうのですが、テストをして結果をご連絡いたします。

                      • 8. Re: レコードのアクセス権が機能しない
                        shin

                        ファイル数が百以上、という状況でなければ、アカウント管理テーブルから各テーブルに一人毎のアカウントを作ってしまい、標準のログインをさせた方が楽かもしれませんよ。その運用でしたら、各ファイルで再ログイン、などという面倒も無くなります。

                        パスワードの変更なども、各ファイルに簡単なスクリプトを仕掛けておけば、メインのファイルからのスクリプト呼び出しで管理できます。

                        例えば、

                        スクリプト変数に、アカウント名、新パスワード、アクセス権グループ を改行で繋いでセットして、各ファイルのスクリプトを呼び出す。

                        スクリプトは、アカウント名を取り出して、アカウントを削除(アカウント名)、アカウント作成(アカウント名、パスワード、アクセス権グループ名)

                        必要に応じて、結果を返す

                        とするだけで良いです。

                        ただし、管理者権限のものは作れませんので、手動で管理します。

                        • 9. Re: レコードのアクセス権が機能しない
                          coyayac

                          スクリプトでfmのアカウント登録できるとはしりませんでした。よい勉強になりました。

                          fmでの管理機能を作り始めた当初、ユーザー登録を簡単にしたかったので、ユーザー登録画面などを独自に作ったのですが、アカウント管理テーブルの更新と連動してfmのアカウントを作ることで、ユーザーIDの管理をfmに任せられますね。

                           

                          今後、

                          ・定期的なパスワード変更

                          ・パスワードの最低文字数制限

                          など、セキュリティーの強化をしたかったので、fmのセキュリティー管理機能に一任する方向で試してみます。

                           

                          ありがとうございます。