Я настроил Devise (на Rails 3) для использования аутентификации поддоменов в стиле Basecamp.Согласно этой модели, пользователь может быть зарегистрирован дважды в разных поддоменах с одним и тем же адресом электронной почты.
Например:
class User < ActiveRecord::Base
belongs_to :account
end
class Account < ActiveRecord::Base
# subdomain attribute stored here
end
Пользователь 1 зарегистрирован на company1.myapp.com с адресом электронной почты bob@acme.com
Пользователь 2 зарегистрирован на company2.myapp.com с адресом электронной почты bob@acme.com
(обе учетные записи контролируются одним и тем же человеком, но принадлежат разным поддоменам.)
Вход в систему работаетхорошо, но стандартный сброс пароля выполняется только по адресу электронной почты, поэтому вы можете сбросить пароль только для Пользователь 1 .Я хотел бы принять во внимание поддомен запроса, поэтому сброс пароля с company2.myapp.com/password/new приведет к сбросу пароля для Пользователь 2 .
.Devise ищет пользователя с помощью метода find_first, который, я не думаю, принимает соединения, поэтому я не могу включить условие :account => {:subodmain => 'comapny2'}
.
Я могу переопределить send_reset_password_instructions
, чтобы вручную просмотреть запись пользователя, но это кажется хакерским, и мне нужно сделать это для send_confirmation_instructions
тоже.
Есть ли лучший способ?