ファイルメーカーで個別ユーザーをログイン管理するテーブル構成と考え方

ファイルメーカーで不可能と言われているユーザー個別のログイン管理は簡単に実装できます。

ファイルメーカーが持つアカウント管理では大雑把になる

ファイルメーカーで個別ユーザーをログイン管理するテーブル構成と考え方デフォルトの機能でユーザー権限を持たせることができます。
その場合同一のユーザー名とパスワードで管理することになります。

しかし、ログを取得しなければならなくたったりユーザー別の詳細な権限管理をするとなるとユーザー数分デフォルトのアカウントを作成する必要があります。
この方法は運用していくと非常に煩雑になり効率的ではありません。

詳細なアカウント管理をするのであれば、ユーザーのマスターテーブルを作成しそこにデフォルトのアカウント管理を紐付けるような機能を構築する必要があります。

一般的なSQLでも同様の処理となるのでデータベースを扱う以上、当然の機能を構築することになります。

ユーザーのマスターテーブルテーブルを作る

ユーザー認証に必要なフィールドを作成していきます。
IDは固有の値にするのでインクリメントした固有値(ID)またはメールアドレスなどが一般的でしょう。
パスワードはユーザーが自由に作成できるようにします。
あとは、ファイルメーカーのデフォルト機能のアカウントをグループ化して権限範囲を作成します。

まずは下記のようなテーブルを作成します。

ユーザー管理用テーブル例 master_user

uID ユーザー名 メールアドレス パスワード アカウント種別 デフォルトパスワード
1 やまだたろう yamda@test.co.jp Yamada123456 sales_account pw_sales
2 すずきはなこ suzuki@test.co.jp Suzuki0000000 office_account pw_office

最低限必要なフィールドとサンプルデータです。
ユーザーはメールアドレスとパスワードを使ってログインします。

より詳細な権限を振るのであれば更に機能別権限フィールドなどを持たせると良いでしょう。
またユーザー管理であり社員マスターテーブルとして利用できるので所属・職種・入社日等、柔軟にフィールド作成してください。

ユーザー認証スクリプトの記述方法

ユーザーマスターテーブルを作成したらログインのロジックを作成していきます。
具体的な方法を記述しているととてつもなく長くなるので今回は概要をご説明します。

  1. ファイル共有は全てゲストアカウントに設定する
  2. ファイルを開いた際に走るスクリプトを設定する
  3. オープンスクリプトは以下の様に記述する
    1. グローバル変数を全て初期化する
    2. カスタムダイアログで「ID」「PW」を用意する
      ※PWは伏せ字にしておくのが一般的
    3. 入力されたIDとPWを元に作成した「master_user」テーブルを検索する
    4. 該当すればそのレコードに保存されているファイルメーカーデフォルトアカウントの「アカウント種別」「デフォルトパスワード」を取得する
    5. それらを元に再度ファイルメーカーにログインし直す
    6. master_userテーブルから取得したユーザー名やIDなどをグローバル変数に格納しておく
    7. ポリシー等必要に応じてログインログテーブルを別途作成しログイン日時、uIDなど固有情報を新規レコードとして追加しておく
  4. 機能毎にユーザー権限を振りたい場合はスクリプトを通してグローバル変数に格納してあるIDやユーザー名から個別認証するようにする

このようにするこで、ユーザー個別のログイン情報を取得しつつグローバル変数に格納した情報を元に更に細分化した機能別認証をファイルメーカーで実現できます。

ファイルメーカーはデフォルト機能が充実しているからこそ盲点もある

アカウント管理があるからこそ、各データベースを用いてユーザーを管理しようという発想になりにくいのですが、この方法はデータベースを扱う場合非常に一般的です。

SQLに比べ現場レベルで利用できてしまうからこその盲点でもあります。
長く使えて現場にフィットしたシステムを構築するのであれば、一歩踏み込んでSQLなどの知識を踏まえて構築の工数や手間が省けるファイルメーカーを応用するようにしましょう。

今回は「ユーザー認証スクリプトの記述方法」を抽象化してしいました。
また別の機会により具体的なスクリプトの記述方法をご紹介します。

4 コメント “ファイルメーカーで個別ユーザーをログイン管理するテーブル構成と考え方”

  1. てっくす より:

    こちらのスクリプト詳細ぜひ公開して頂きたいです!
    よろしくお願いします!

    1. fm より:

      すみません、現在webアプリ開発にシフトしてしまっていて、手元にその時のファイル(.fp7)とFileMakerが無いので再現できない状況にあります。。。

      >ユーザー認証スクリプトの記述方法
      に記載した通り、工夫する点は1.の
      >ファイル共有は全てゲストアカウントに設定する
      になります。

      イメージとしてActiveDirectoryのGPO(グループポリシー)のように、
      グルーピングして権限管理できるような設計で、
      汎用的に使いにくいFileMakerのアカウント機能を最小限にし運用することができるようになります。

      現状これくらいしか回答できずすみません。。

  2. てっくす より:

    返信ありがとうございます。
    頂いたヒントを元に調べて作ってみたいと思います!
    ありがとうございました!

    1. fm より:

      お役に立てずすみません。。

      作られるスクリプトとテーブル構造を見せて頂ければ、
      お答えできる範囲で回答させていただきます!

コメントをどうぞ