Railsアプリでログイン画面を分けたい

複数の法人向けのRailsアプリを作ろうと考えた場合、きっと法人情報と社員情報は以下のようなテーブルに保存されるでしょう。

法人マスタ

法人コード 法人名
0001 法人A
0002 法人B


社員マスタ

法人コード 社員コード ログインID 社員名 パスワード
0001 0000001 user1 山田 太郎 xxxxxxxx
0001 0000002 user2 鈴木 一郎 xxxxxxxx
0001 0000003 user3 佐藤 花子 xxxxxxxx
0002 0000001 user1 木下 二郎 xxxxxxxx
0002 0000002 user2 小田 聡子 xxxxxxxx


法人が違えば同じログインIDが使えるのは当然だから

  • 法人コード
  • ログインID

で一意に社員を識別するとしよう。


このアプリに社員としてログイン出来るようにする場合、普通に考えるとログイン処理を行うコントローラ(SessionController)を作成して、ルーティングは

DemoApp::Application.routes.draw do

  root :to => 'session#new'

  controller :session do
    get 'login' => :new
    post 'login' => :create
    delete 'logout' => :destroy
  end
end

とでも定義するでしょう。


こうするとログイン画面(http://localhost:3000/login)で社員は

  • 法人コード(ドロップダウンで選択でもいい)
  • ログインID
  • パスワード

を入力する必要がある


法人コード

法人コード・・・

法人コード!!!


こんなのイヤだ!


どうせなら会社毎に別々のURLにして

 法人A用のログインページ
  http://localhost:3000/company_a/

 法人B用のログインページ
  http://localhost:3000/company_b/

ってしたい


本当なら別々のアプリとして稼働させた方が良いんじゃないの?と思うんだけど、ルーティングを

DemoApp::Application.routes.draw do

  match "/company_a", :controler => :session, :action => :new, :company_code => "0001"
  match "/company_b", :controler => :session, :action => :new, :company_code => "0002"

  controller :session do
    get 'login' => :new
    post 'login' => :create
    delete 'logout' => :destroy
  end
end

とでもしておけばURLは別になるし、法人コードはパラメータで渡ってくるから大丈夫。。


本当にこんな方法でいいのか?

いまいち納得できない