Devise limite de uma sessão por usuário de cada vez
Meu aplicativo está usando o Rails 3.0.4 e o Devise 1.1.
Estou procurando uma maneira de impedir que os usuários compartilhem contas, pois o aplicativo é um serviço baseado em assinatura. Estou pesquisando há mais de uma semana e ainda não sei como implementar uma solução. Espero que alguém tenha implementado uma solução e possa me indicar a direção cert
Soluçã (Obrigado a todos por suas respostas e idéias!)
In 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
In session_controller que substitui o controlador 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
Em migração 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