lib/generators/cream/config/modules/devise_config.rb in cream-0.6.1 vs lib/generators/cream/config/modules/devise_config.rb in cream-0.6.3
- old
+ new
@@ -1,33 +1,16 @@
module Cream::Generators
module Config
module Devise
- def configure_devise
- if !has_model? :user
- # run devise generator to create User model
- create_devise_model :user
- end
-
- # if User model is NOT configured with devise strategy
- if !has_devise_strategy? :user
- insert_devise_strategy :user, :defaults
- end
- end
-
- configure_admin_user if configure_admin_user?
+ def configure_devise
+ initialize!
+ [Orm, Mailer, Protection].each{|m| m.configure!}
end
- def configure_admin_user
- # if app does NOT have a Admin model
- if !has_model? :admin
- create_admin_user
- end
- if has_model? :admin
- # insert default devise Admin strategy
- insert_devise_strategy :user, :defaults
- end
+ def initialize!
+ rgen 'devise_install'
end
def devise_gems
gem 'devise'
@@ -41,68 +24,35 @@
gem 'dm-devise'
when :couch_db
gem 'devise_couch'
say "Please note that Couch DB does not currently have a Roles implementation. Feel free to provide one."
say "Look at Roles DataMapper (roles_data_mapper) for an example ;)"
+ else
+ say "Orm #{orm} is not currently supported by Cream. You are most welcome to provide a Cream adapter for that ORM ;)"
end
end
-
- def init_devise
- execute 'devise_install'
- end
- def devise_users?
- has_user?(:user) && has_user?(:admin)
+ module Protection
+ def self.configure!
+ ## Add Devise protection to Application controller:
+ insert_into_controller :application do
+ "before_filter :authenticate_user!"
+ end
+ end
end
- def handle_devise_users
- return notify_create_users if !init_devise?
- create_users
+ module Orm
+ # inside 'config/initializers/devise.rb' change to:
+ # require 'devise/orm/mongo_mapper'
+ def self.configure!
+ File.replace_content_from initializer_file(:devise), :where => /devise\/orm\/w+/, :content => 'devise/orm/mongo_mapper'
+ end
end
- def notify_create_users
- logger.debug 'notify_create_users'
- say "You must first run devise generators:"
- say "rails g devise User"
- say "rails g devise Admin" if admin_user?
- end
-
- def create_admin_user
- logger.debug 'create_admin_user'
- create_model :admin
- # remove any current inheritance
- remove_inheritance :admin
- # and make Admin model inherit from User model
- inherit_model :user => :admin
- end
-
- def remove_inheritance user
- File.remove_from model_file user, :content => /<\s*ActiveRecord::Base/
- end
-
- def inherit_model hash
- subclass = hash.keys.first
- superclass = hash.values.first.to_s.camelize
- File.replace_content_from model_file subclass, :where => /class Admin/, :with => "class Admin < #{superclass}"
- end
-
- # Must be ORM specific!
- def create_devise_model user
- execute "rails g devise #{user}"
- end
-
- def create_user user
- execute "rails g model #{user}"
- end
-
- def has_user? user
- return true if user == :admin && !admin_user?
- begin
- read_model(user) =~ /devise/
- rescue Exception => e
- logger.info "Exception for has_user? #{user}: #{e.message}"
- false
+ module Mailer
+ def self.configure!
+ insert_application_config "action_mailer.default_url_options = { :host => 'localhost:3000' }"
end
- end
+ end
end
end
end