Constants which holds devise configuration for extensions. Those should not be modified by the "end user" (this is why they are constants).
Declare encryptors length which are used in migrations.
Strategies that do not require user input.
True values used to check params
Small method that adds a mapping to Devise.
# File lib/devise.rb, line 290 def self.add_mapping(resource, options) mapping = Devise::Mapping.new(resource, options) @@mappings[mapping.name] = mapping @@default_scope ||= mapping.name @@helpers.each { |h| h.define_helpers(mapping) } mapping end
Make Devise aware of an 3rd party Devise-module (like invitable). For convenience.
+model+ - String representing the load path to a custom *model* for this module (to autoload.) +controller+ - Symbol representing the name of an exisiting or custom *controller* for this module. +route+ - Symbol representing the named *route* helper for this module. +strategy+ - Symbol representing if this module got a custom *strategy*.
All values, except :model, accept also a boolean and will have the same name as the given module name.
Devise.add_module(:party_module) Devise.add_module(:party_module, :strategy => true, :controller => :sessions) Devise.add_module(:party_module, :model => 'party_module/model')
# File lib/devise.rb, line 316 def self.add_module(module_name, options = {}) ALL << module_name options.assert_valid_keys(:strategy, :model, :controller, :route) if strategy = options[:strategy] strategy = (strategy == true ? module_name : strategy) STRATEGIES[module_name] = strategy end if controller = options[:controller] controller = (controller == true ? module_name : controller) CONTROLLERS[module_name] = controller end NO_INPUT << strategy if strategy && controller != :sessions if route = options[:route] case route when TrueClass key, value = module_name, [] when Symbol key, value = route, [] when Hash key, value = route.keys.first, route.values.flatten else raise ArgumentError, ":route should be true, a Symbol or a Hash" end URL_HELPERS[key] ||= [] URL_HELPERS[key].concat(value) URL_HELPERS[key].uniq! ROUTES[module_name] = key end if options[:model] path = (options[:model] == true ? "devise/models/#{module_name}" : options[:model]) camelized = ActiveSupport::Inflector.camelize(module_name.to_s) Devise::Models.send(:autoload, camelized.to_sym, path) end Devise::Mapping.add_module module_name end
Generate a friendly string randomically to be used as token.
# File lib/devise.rb, line 426 def self.friendly_token SecureRandom.base64(15).tr('+/=lIO0', 'pqrsxyz') end
Include helpers in the given scope to AC and AV.
# File lib/devise.rb, line 386 def self.include_helpers(scope) ActiveSupport.on_load(:action_controller) do include scope::Helpers if defined?(scope::Helpers) include scope::UrlHelpers end ActiveSupport.on_load(:action_view) do include scope::UrlHelpers end end
Get the mailer class from the mailer reference object.
# File lib/devise.rb, line 279 def self.mailer @@mailer_ref.get end
Set the mailer reference object to access the mailer.
# File lib/devise.rb, line 284 def self.mailer=(class_name) @@mailer_ref = ref(class_name) end
Specify an omniauth provider.
config.omniauth :github, APP_ID, APP_SECRET
# File lib/devise.rb, line 379 def self.omniauth(provider, *args) @@helpers << Devise::OmniAuth::UrlHelpers config = Devise::OmniAuth::Config.new(provider, args) @@omniauth_configs[config.strategy_name.to_sym] = config end
# File lib/devise.rb, line 274 def self.omniauth_providers omniauth_configs.keys end
Returns true if Rails version is bigger than 3.0.x
# File lib/devise.rb, line 398 def self.rack_session? Rails::VERSION::STRING[0,3] != "3.0" end
# File lib/devise.rb, line 265 def self.ref(arg) if defined?(ActiveSupport::Dependencies::ClassCache) ActiveSupport::Dependencies::reference(arg) Getter.new(arg) else ActiveSupport::Dependencies.ref(arg) end end
Regenerates url helpers considering Devise.mapping
# File lib/devise.rb, line 403 def self.regenerate_helpers! Devise::Controllers::UrlHelpers.remove_helpers! Devise::Controllers::UrlHelpers.generate_helpers! end
constant-time comparison algorithm to prevent timing attacks
# File lib/devise.rb, line 431 def self.secure_compare(a, b) return false if a.blank? || b.blank? || a.bytesize != b.bytesize l = a.unpack "C#{a.bytesize}" res = 0 b.each_byte { |byte| res |= byte ^ l.shift } res == 0 end
Default way to setup Devise. Run rails generate devise_install to create a fresh initializer with all configuration values.
# File lib/devise.rb, line 251 def self.setup yield self end
Sets warden configuration using a block that will be invoked on warden initialization.
Devise.initialize do |config|
config.confirm_within = 2.days
config.warden do |manager|
# Configure warden to use other strategies, like oauth.
manager.oauth(:twitter)
end
end
# File lib/devise.rb, line 371 def self.warden(&block) @@warden_config_block = block end
Generated with the Darkfish Rdoc Generator 2.