Module: DeviseGuests::Controllers::Helpers
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/devise-guests/controllers/helpers.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Class Method Details
.define_concern_callbacks(*args) ⇒ Object
19 20 21 22 |
# File 'lib/devise-guests/controllers/helpers.rb', line 19 def self.define_concern_callbacks *args @@callbacks ||= [] @@callbacks << args end |
.define_helpers(mapping) ⇒ Object
:nodoc:
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/devise-guests/controllers/helpers.rb', line 24 def self.define_helpers(mapping) #:nodoc: class_name = mapping.class_name mapping = mapping.name class_eval " define_concern_callbacks :logging_in_\#{mapping}\n\n \n def guest_\#{mapping}\n return @guest_\#{mapping} if @guest_\#{mapping}\n\n if session[:guest_\#{mapping}_id]\n @guest_\#{mapping} = \#{class_name}.find_by(\#{class_name}.authentication_keys.first => session[:guest_\#{mapping}_id]) rescue nil\n @guest_\#{mapping} = nil if @guest_\#{mapping}.respond_to? :guest and !@guest_\#{mapping}.guest \n end\n\n @guest_\#{mapping} ||= begin\n u = create_guest_\#{mapping}(session[:guest_\#{mapping}_id])\n session[:guest_\#{mapping}_id] = u.send(\#{class_name}.authentication_keys.first)\n u\n end\n\n @guest_\#{mapping}\n end\n\n def current_or_guest_\#{mapping}\n if current_\#{mapping}\n if session[:guest_\#{mapping}_id]\n run_callbacks :logging_in_\#{mapping} do\n guest_\#{mapping}.destroy\n session[:guest_\#{mapping}_id] = nil\n end\n end\n current_\#{mapping}\n else\n guest_\#{mapping}\n end\n end\n\n private\n def create_guest_\#{mapping} key = nil\n auth_key = \#{class_name}.authentication_keys.first\n \#{class_name}.new do |g|\n g.send(\"\\\#{auth_key}=\", send(:\"guest_\\\#{auth_key}_authentication_key\", key))\n g.guest = true if g.respond_to? :guest\n g.skip_confirmation! if g.respond_to?(:skip_confirmation!)\n g.save(validate: false)\n end\n end\n\n def guest_email_authentication_key key\n key &&= nil unless key.to_s.match(/^guest/)\n key ||= \"guest_\" + guest_\#{mapping}_unique_suffix + \"@example.com\"\n end\n\n def guest_\#{mapping}_unique_suffix\n Devise.friendly_token + \"_\" + Time.now.to_i.to_s + \"_\" + unique_\#{mapping}_counter.to_s\n end\n\n def unique_\#{mapping}_counter\n @@unique_\#{mapping}_counter ||= 0\n @@unique_\#{mapping}_counter += 1\n end\n\n METHODS\n\n ActiveSupport.on_load(:action_controller) do\n if respond_to?(:helper_method)\n helper_method \"guest_\#{mapping}\", \"current_or_guest_\#{mapping}\"\n end\n end\nend\n", __FILE__, __LINE__ + 1 |