mirror of
https://github.com/heartcombo/devise.git
synced 2022-11-09 12:18:31 -05:00
add capability to define other orm compatible with Devise. Add MongoMapper support.
This commit is contained in:
parent
bb693a9706
commit
512397b744
6 changed files with 83 additions and 9 deletions
|
@ -30,15 +30,15 @@ module Devise
|
|||
# Used to encrypt password. Please generate one with rake secret
|
||||
mattr_accessor :pepper
|
||||
@@pepper = nil
|
||||
|
||||
|
||||
# The number of times to encrypt password.
|
||||
mattr_accessor :stretches
|
||||
@@stretches = 10
|
||||
|
||||
|
||||
# Time interval where the remember me token is valid.
|
||||
mattr_accessor :remember_for
|
||||
@@remember_for = 2.weeks
|
||||
|
||||
|
||||
# Time interval you can access your account before confirming your account.
|
||||
mattr_accessor :confirm_within
|
||||
@@confirm_within = 0.days
|
||||
|
@ -58,6 +58,9 @@ module Devise
|
|||
mattr_accessor :mappings
|
||||
@@mappings = {}
|
||||
|
||||
mattr_accessor :orm
|
||||
@@orm = 'active_record'
|
||||
|
||||
class << self
|
||||
# Default way to setup Devise. Run script/generate devise_install to create
|
||||
# a fresh initializer with all configuration values.
|
||||
|
@ -106,8 +109,14 @@ module Devise
|
|||
# If the user provided a warden hook, call it now.
|
||||
@warden_config.try :call, manager
|
||||
end
|
||||
|
||||
##
|
||||
# The class to call with orm define
|
||||
def model_orm
|
||||
@@model_orm ||= "Devise::Orm::#{@@orm.camelize}".constantize
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
require 'devise/warden'
|
||||
require 'devise/rails'
|
||||
require 'devise/rails'
|
||||
|
|
|
@ -92,6 +92,8 @@ module Devise
|
|||
|
||||
# Convert new keys to methods which overwrites Devise defaults
|
||||
options.each { |key, value| send(:"#{key}=", value) }
|
||||
send :include, Devise.model_orm
|
||||
add_fields(modules)
|
||||
end
|
||||
|
||||
# Stores all modules included inside the model, so we are able to verify
|
||||
|
|
17
lib/devise/orm/active_record.rb
Normal file
17
lib/devise/orm/active_record.rb
Normal file
|
@ -0,0 +1,17 @@
|
|||
module Devise
|
||||
module Orm
|
||||
module ActiveRecord
|
||||
include Devise::Orm::Base
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Include alld devise definition about ActiveRecord
|
||||
Rails.configuration.after_initialize do
|
||||
if defined?(ActiveRecord)
|
||||
ActiveRecord::Base.extend Devise::Models
|
||||
ActiveRecord::Base.extend Devise::Orm::ActiveRecord
|
||||
ActiveRecord::ConnectionAdapters::TableDefinition.send :include, Devise::Migrations
|
||||
end
|
||||
end
|
9
lib/devise/orm/base.rb
Normal file
9
lib/devise/orm/base.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
module Devise
|
||||
module Orm
|
||||
module Base
|
||||
def add_fields(modules)
|
||||
# Nothing happen because no modules
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
40
lib/devise/orm/mongo_mapper.rb
Normal file
40
lib/devise/orm/mongo_mapper.rb
Normal file
|
@ -0,0 +1,40 @@
|
|||
module Devise
|
||||
module Orm
|
||||
module MongoMapper
|
||||
|
||||
include Devise::Orm::Base
|
||||
|
||||
def authenticatable
|
||||
key :email, String
|
||||
key :encrypted_password, String
|
||||
key :password_salt, String
|
||||
end
|
||||
|
||||
def confirmable
|
||||
key :confirmation_token, String
|
||||
key :confirmed_at, DateTime
|
||||
key :confirmation_sent_at, DateTime
|
||||
end
|
||||
|
||||
def recoverable
|
||||
key :reset_password_token, String
|
||||
end
|
||||
|
||||
def rememberable
|
||||
key :remember_token, String
|
||||
key :remember_created_at, DateTime
|
||||
end
|
||||
|
||||
##
|
||||
# Add all keys
|
||||
def add_fields(modules)
|
||||
modules.each do |mod|
|
||||
send(mod)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
MongoMapper::Document::ClassMethods.send(:include, Devise::Models)
|
||||
MongoMapper::Document::ClassMethods.send(:include, Devise::Orm::MongoMapper)
|
|
@ -2,11 +2,6 @@ require 'devise/rails/routes'
|
|||
require 'devise/rails/warden_compat'
|
||||
|
||||
Rails.configuration.after_initialize do
|
||||
if defined?(ActiveRecord)
|
||||
ActiveRecord::Base.extend Devise::Models
|
||||
ActiveRecord::ConnectionAdapters::TableDefinition.send :include, Devise::Migrations
|
||||
end
|
||||
|
||||
# Adds Warden Manager to Rails middleware stack, configuring default devise
|
||||
# strategy and also the failure app.
|
||||
Rails.configuration.middleware.use Warden::Manager do |manager|
|
||||
|
@ -17,4 +12,6 @@ Rails.configuration.after_initialize do
|
|||
Rails.configuration.middleware.use Devise::Middlewares::Rememberable
|
||||
|
||||
I18n.load_path.unshift File.expand_path(File.join(File.dirname(__FILE__), 'locales', 'en.yml'))
|
||||
|
||||
require "devise/orm/#{Devise.orm}"
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue