7aef87db |
require 'ipaddr'
class Token
include Mongoid::Document
include Mongoid::Timestamps::Created
index({ token: 1 })
field :token, type: String
field :date_expiring, type: DateTime
field :ip, type: Integer |
1b9ff864 |
field :user_id, type: Moped::BSON::ObjectId |
7aef87db |
|
1b9ff864 |
##
# @return [Token] |
7aef87db |
def self.authenticate(session) |
1b9ff864 |
if session[:created_at].nil? |
7aef87db |
return false
end
matched_token = self.where(:token => session[:token],
:ip => IPAddr.new(session[:ip]).to_i,
:date_expiring.lte => session[:created_at] + Rails.application.config.max_lifetime,
:created_at => session[:created_at]
).limit(1).first
matched_token
end
|
1b9ff864 |
def save_session(session, user)
self.token = session[:token]
self.date_expiring = session[:created_at] + Rails.application.config.max_lifetime
self.created_at = session[:created_at]
self.ip = IPAddr.new(session[:ip]).to_i
self.user_id = user |
7aef87db |
|
1b9ff864 |
save
end |
7aef87db |
|
1b9ff864 |
#def self.remove_old_session(token)
# self.delete_all(token: token)
#end |
7aef87db |
private
def self.generate_token
begin
token = SecureRandom.urlsafe_base64
end while Token.where(token: token).exists?
token
end
end |