31 lines
725 B
Ruby
31 lines
725 B
Ruby
|
module TokenAuthenticatable
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
module ClassMethods
|
||
|
def find_by_authentication_token(authentication_token = nil)
|
||
|
if authentication_token
|
||
|
where(authentication_token: authentication_token).first
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def ensure_authentication_token
|
||
|
if authentication_token.blank?
|
||
|
self.authentication_token = generate_authentication_token
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def reset_authentication_token!
|
||
|
self.authentication_token = generate_authentication_token
|
||
|
save
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def generate_authentication_token
|
||
|
loop do
|
||
|
token = Devise.friendly_token
|
||
|
break token unless self.class.unscoped.where(authentication_token: token).first
|
||
|
end
|
||
|
end
|
||
|
end
|