1
0
Fork 0
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:
Cyril Mougel 2009-11-13 23:54:21 +01:00
parent bb693a9706
commit 512397b744
6 changed files with 83 additions and 9 deletions

View file

@ -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'

View file

@ -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

View 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
View file

@ -0,0 +1,9 @@
module Devise
module Orm
module Base
def add_fields(modules)
# Nothing happen because no modules
end
end
end
end

View 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)

View file

@ -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