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は別になるし、法人コードはパラメータで渡ってくるから大丈夫。。
本当にこんな方法でいいのか?
いまいち納得できない