J'utilise Appartement et Devise gem pour Muti-tenancy and authentication.Devise: Connectez-vous utilisateur et rediriger vers sous-domaine
J'ai une page sign_up
dans l'URL de domaine racine (example.com
) où j'obtiens les détails de sous-domaine de l'utilisateur.
J'ai besoin de sign_in
l'utilisateur après avoir enregistré avec succès l'enregistrement et rediriger vers le nouveau sous-domaine (sub.example.com
).
Appartement schemas:
compte => commun pour tous les schémas (publics)
utilisateur => Création séparement pour chaque schémas (privé)
RegistrationController:
class Users::RegistrationsController < Devise::RegistrationsController
...
...
def create
ActiveRecord::Base.transaction do
@account = Account.new(account_params)
if @account.valid?
# Create & switch to the new tenant
Apartment::Tenant.create(@account.subdomain)
Apartment::Tenant.switch!(@account.subdomain)
@account.save
sign_in(:user, @account.user)
redirect_to root_url(subdomain: "#{Apartment::Tenant.current}")
else
render :action => 'new'
end
end
end
...
...
protected
def account_params
params.require(:account).permit(:name, :subdomain, user_attributes: [:first_name, :last_name, :email, :password, :password_confirmation])
end
end
Le code ci-dessus redirige avec succès vers le nouveau sous-domaine mais, Il n'est pas signataire dans l'utilisateur bien que je suis signataire dans l'utilisateur avant la redirection.
Quelqu'un m'aider s'il vous plaît à rediriger l'utilisateur en tant que signed_in
vers le nouveau sous-domaine.
Merci ..
Est-ce que la redirection vers 'root_url' préserve les cookies de session? – 31piy
@ 31piy, j'ai essayé de supprimer l'authentification dans root_url et essayé d'imprimer la session 'p session ['warden.user.user.key']' dans l'action du contrôleur mais il retourne 'nil' –
Veuillez vérifier si les ID de session sont identiques avant et après la redirection. – 31piy