Constants which holds devise configuration for extensions. Those should not be modified by the “end user” (this is why they are constants).
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 289 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 315 def self.add_module(module_name, options = {}) ALL << module_name options.assert_valid_keys(:strategy, :model, :controller, :route, :no_input) 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 options[:no_input] 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
# File lib/devise.rb, line 216 def self.apply_schema=(value) warn "\n[DEVISE] Devise.apply_schema is deprecated and has no effect. Please remove it.\n" end
# File lib/devise.rb, line 269 def self.available_router_name router_name || :main_app end
# File lib/devise.rb, line 208 def self.encryptor=(value) warn "\n[DEVISE] To select a encryption which isn't bcrypt, you should use devise-encryptable gem.\n" end
Generate a friendly string randomically to be used as token.
# File lib/devise.rb, line 420 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 385 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 278 def self.mailer @@mailer_ref.get end
Set the mailer reference object to access the mailer.
# File lib/devise.rb, line 283 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 378 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 273 def self.omniauth_providers omniauth_configs.keys end
# File lib/devise.rb, line 260 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 397 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 425 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 246 def self.setup yield self end
# File lib/devise.rb, line 212 def self.use_salt_as_remember_token=(value) warn "\n[DEVISE] Devise.use_salt_as_remember_token is deprecated and has no effect. Please remove it.\n" end
Sets warden configuration using a block that will be invoked on warden initialization.
Devise.initialize do |config| config.allow_unconfirmed_access_for = 2.days config.warden do |manager| # Configure warden to use other strategies, like oauth. manager.oauth(:twitter) end end
# File lib/devise.rb, line 370 def self.warden(&block) @@warden_config_block = block end