Я создаю приложение, которое использует Apartment для многопользовательской аренды и Devise для аутентификации пользователей.
Сначала создается экземпляр Tenant, затем он перенаправляется на subdomain.lvh.me/users/sign_up, чтобы пользователь мог зарегистрироваться и быть частью схемы только для этого конкретного субдомена.Таким образом, пользователи могут авторизоваться только на том поддомене, на котором они изначально зарегистрированы, что я и хочу.Это также было выгодно, потому что я назначил каждому пользователю с id = 1 значение admin, поэтому каждый раз, когда создается новый клиент, он перенаправляет на поддомен, и первым зарегистрированным пользователем будет администратор по умолчанию (имеет смысл, потому что пользователь начинает сцелевую страницу, создайте учетную запись компании (арендатора), а затем сразу после этого создайте учетную запись пользователя с его именем, адресом электронной почты, паролем и т. д., и они будут первым пользователем, связанным с этим арендатором, и, следовательно, будут администратором по умолчанию.
Это сработало хорошо, потому что человек, пришедший с целевой страницы (представьте себе руководителя команды - директора по маркетингу или чего-то еще), мог подписаться на продукт и установить информацию о компании, а также стать первым пользователем с возможностями администратора.команда будет регистрироваться на поддомене и не будет авторизована для входа на другом поддомене, или им придется зарегистрироваться на целевой странице, и в этом случае к ним будет относиться как к регистрации новой компании, а не просто к пользователю.
НедавноЯ реализовал вложенные атрибуты, чтобы можно было завершить начальный процесс регистрации только в одной форме / представлении вместо двух.Проблема в том, что экземпляр User создается в контроллере Tenant, он не является частью схемы для дочернего домена компании и поэтому не может войти в систему на subdomain.lvh.me/users/sign_in.
IМне интересно, сталкивался ли кто-нибудь с этой проблемой раньше и каким было ваше решение.Было бы лучше изменить его обратно на первоначальный, создав сначала Tenant, перенаправив на поддомен / sign_up, а затем создав первого пользователя?
Извините, если я не сформулировал это так хорошо, как мог бы.
Я пытался перенаправить на поддомен перед вызовом @tenant.users.build
, но это не сработало, как я думал.
часть tenants_controller.rb
def new
@tenant = Tenant.new
@tenant.users.build
render layout: false
end
def create
@tenant = Tenant.new(tenant_params)
@tenant.update_attribute :subdomain, @tenant.company.downcase
respond_to do |format|
if @tenant.save
format.html { redirect_to "http://#{@tenant.subdomain}.lvh.me:3000/users/sign_in", notice: 'Domain was successfully created.' }
#format.html { redirect_to new_user_registration_path, notice: 'Tenant was successfully created.' }
format.json { render :show, status: :created, location: @tenant }
else
format.html { render :new }
format.json { render json: @tenant.errors, status: :unprocessable_entity }
end
end
end