В моем приложении используются Rails 3.0.4 и Devise 1.1.7.
Я ищу способ запретить пользователям делиться учетными записями в качестве app - это услуга на основе подписки. Я искал больше недели и до сих пор не знаю, как реализовать решение. Я надеюсь, что кто-то реализовал решение и укажет мне правильное направление.
Решение (Спасибо всем за ваши ответы и понимание!)
В application controller.rb
before_filter :check_concurrent_session
def check_concurrent_session
if is_already_logged_in?
sign_out_and_redirect(current_user)
end
end
def is_already_logged_in?
current_user && !(session[:token] == current_user.login_token)
end
В session_controller, который переопределяет контроллер Devise Sessions:
skip_before_filter :check_concurrent_session
def create
super
set_login_token
end
private
def set_login_token
token = Devise.friendly_token
session[:token] = token
current_user.login_token = token
current_user.save
end
При миграции AddLoginTokenToUsers
def self.up
change_table "users" do |t|
t.string "login_token"
end
end
def self.down
change_table "users" do |t|
t.remove "login_token"
end
end