2012-03-01 13 views
0

私はサブドメインを持つアプリケーションを持っています。ユーザーがルートドメインにログインしたとき。私は彼/彼女を会社のサブドメインにリダイレクトしたい。私はdeviseを使用しています。params in railsでredirect_to

これは、ユーザーのログインがログインフォームの谷、のparams認証のための使用を工夫こと、アクションを作成するに送信されます場合は、私がこれまで

def create 
    subdomain = request.subdomain 
    user = User.find_by_email(params[:user][:email]) 
    if subdomain.present? 
    resource = warden.authenticate!(auth_options) 
    set_flash_message(:notice, :signed_in) if is_navigational_format? 
    sign_in(resource_name, resource) 
    redirect_to statistics_url 
    else 
    redirect_to sign_in_at_subdomain_url(:subdomain => user.firm.subdomain), :params => params 
    end 
end 

def sign_in_at_subdomain 
    resource = warden.authenticate!(auth_options) 
    set_flash_message(:notice, :signed_in) if is_navigational_format? 
    sign_in(resource_name, resource) 
    redirect_to statistics_url 
end 

を持っているものです。あなたが私のコードで見てきたように、サブドメインが存在するときはログインはうまくいくが、存在しないときはサブドメインとsign_in_at_subdomainへのリダイレクトをしたい。

parmasフォームを作成アクションからsign_in_at_subdomainアクションに渡すにはどうすればよいですか?

答えて

1

after_sign_in_path_forを使用して、ルートromainからユーザーをサインアウトし、彼が所属するサブドメインにサインインすることができます。以下はexample Rails 3 app with basecamp like subdomains and authentication(Deviseを使用)のものです。

+0

私はこのアプローチを使用しましたが、私はそれが好きではありません。トークンはuser.loginable_tokenの下のデータベースに格納されます。 valid_user_urlに行くと、データベースからユーザを取得し、現在のサブドメインにログインします。それは複雑に思えます。私は、ログインフォームからparamsを渡したいだけです。 –

+0

これは私が解決した解決策でした。それは最高のものです。 –