Sha256: cde96a47dbba940fda7743025b2d2e784e32315c1eae9016ba66bcb1b2dff09a
Contents?: true
Size: 1.07 KB
Versions: 5
Compression:
Stored size: 1.07 KB
Contents
module Devise module Models module Masqueradable def self.included(base) base.class_eval do attr_reader :masquerade_key include InstanceMethods extend ClassMethods end end module InstanceMethods def masquerade! @masquerade_key = SecureRandom.urlsafe_base64(Devise.masquerade_key_size) cache_key = self.class.cache_masquerade_key_by(@masquerade_key) Rails.cache.write(cache_key, id, :expires_in => Devise.masquerade_expires_in) end end module ClassMethods def cache_masquerade_key_by(key) "#{self.name.pluralize.underscore}:#{key}:masquerade" end def remove_masquerade_key!(key) Rails.cache.delete(cache_masquerade_key_by(key)) end def find_by_masquerade_key(key) id = Rails.cache.read(cache_masquerade_key_by(key)) # clean up the cached masquerade key value remove_masquerade_key!(key) where(id: id).first end end # ClassMethods end end end
Version data entries
5 entries across 5 versions & 1 rubygems