contour 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,16 @@
1
+ == 0.5.0
2
+
3
+ * Enhancements
4
+ * rails generate contour:install now appends routes
5
+ * Authentication icons can be overridden in the application if the application has a contour folder in the assets directory
6
+ * ex: if the web app contains a special logo for LDAP authentication, the app/assets/images/contour folder would contain specialized ldap_64.png and ldap_32.png where 64 and 32 represent the height
7
+ * Removing reliance on Contour.application_site_url and using request.script_name instead
8
+ * Contour now handles fixes to other libraries in the background, no longer needs to add omniauth_fix.rb and rack_fix.rb to the config/initializers folder
9
+
10
+ * Bug Fix
11
+ * Removed registration page requirement for first_name and last_name
12
+ * Incorrect redirect on LDAP authentication failure for Rails apps on subdomains fixed
13
+
1
14
  == 0.4.0
2
15
 
3
16
  * Enhancements
@@ -40,6 +40,109 @@ In order to get registration working, you can use the modified Contour Authentic
40
40
 
41
41
  devise_for :users, :controllers => {:registrations => 'contour/registrations', :sessions => 'contour/sessions', :passwords => 'contour/passwords'}, :path_names => { :sign_up => 'register', :sign_in => 'login' }
42
42
 
43
+ == Setting up a new project with quick authentication
44
+
45
+ Make sure you have Rails 3.1.0
46
+
47
+ rails -v
48
+
49
+ rails new blank_rails_project
50
+
51
+ cd blank_rails_project
52
+
53
+ Modify Gemfile and add
54
+
55
+ gem 'contour', '~> 0.5.0' # Basic Layout and Assets
56
+ gem 'devise', '~> 1.4.4' # User Authorization
57
+ gem 'omniauth', '0.2.6' # User Multi-Authentication
58
+
59
+ Run Bundle install
60
+
61
+ bundle install
62
+
63
+ Install contour files
64
+
65
+ rails generate contour:install
66
+
67
+ Add the following line to your app/controllers/application_controller.rb
68
+
69
+ layout "contour/layouts/application"
70
+
71
+ Edit your app/assets/javascripts/application.js manifest to use Contour JavaScript (Replace jquery and jquery_ujs)
72
+
73
+ //= require contour
74
+
75
+ Edit your app/assets/stylesheets/application.css manifest to use Contour CSS (after self, before tree)
76
+
77
+ *= require contour
78
+
79
+ Remove any scaffold.css files that exist in your application
80
+
81
+ Add the authentication model
82
+
83
+ rails generate model Authentication user_id:integer provider:string uid:string
84
+
85
+ Add first_name and last_name to user model
86
+
87
+ rails generate migration AddFirstNameAndLastNameToUsers first_name:string last_name:string
88
+
89
+ Migrate your database
90
+
91
+ bundle exec rake db:create
92
+
93
+ bundle exec rake db:migrate
94
+
95
+ Remove the public/index.html
96
+
97
+ rm public/index.html
98
+
99
+ Create a sample controller
100
+
101
+ rails generate controller welcome index
102
+
103
+ Create a root in your config/routes.rb
104
+
105
+ root :to => 'welcome#index'
106
+
107
+ Add the following to your app/models/user.rb
108
+
109
+ attr_accessible :first_name, :last_name
110
+
111
+ # Model Validation
112
+ validates_presence_of :first_name
113
+ validates_presence_of :last_name
114
+
115
+ # Model Relationships
116
+ has_many :authentications
117
+
118
+ def name
119
+ "#{first_name} #{last_name}"
120
+ end
121
+
122
+ def apply_omniauth(omniauth)
123
+ unless omniauth['user_info'].blank?
124
+ self.email = omniauth['user_info']['email'] if email.blank?
125
+ self.first_name = omniauth['user_info']['first_name'] if first_name.blank?
126
+ self.last_name = omniauth['user_info']['last_name'] if last_name.blank?
127
+ end
128
+ authentications.build(:provider => omniauth['provider'], :uid => omniauth['uid'])
129
+ end
130
+
131
+ def password_required?
132
+ (authentications.empty? || !password.blank?) && super
133
+ end
134
+
135
+ Make sure the devise line in config/routes.rb looks as follows
136
+
137
+ devise_for :users, :controllers => {:registrations => 'contour/registrations', :sessions => 'contour/sessions', :passwords => 'contour/passwords'}, :path_names => { :sign_up => 'register', :sign_in => 'login' }
138
+
139
+ If there is a line that just says 'devise_for :users' or a duplicate, remove it
140
+
141
+ Start your server and navigate to localhost:3000/users/login
142
+
143
+ rails s
144
+
145
+
43
146
  == Contributing to contour
44
147
 
45
148
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
@@ -16,7 +16,7 @@
16
16
  <% image_name = provider.to_s.downcase %>
17
17
  <% end %>
18
18
  <td style="white-space:nowrap;text-align:center;border-width:0px">
19
- <a href="<%= SITE_URL %>/<%= OmniAuth.config.path_prefix.split('/').last.to_s %>/<%= provider.to_s.downcase %><%= url_params %>" class="noicon"><%= image_tag "contour/#{image_name}_64.png", :align => 'absmiddle', :size => "64x64", :alt => provider_name %></a>
19
+ <a href="<%= request.script_name %><%= "/" + OmniAuth.config.path_prefix.split('/').last.to_s %><%= "/" + provider.to_s.downcase %><%= url_params %>" class="noicon"><%= image_tag "contour/#{image_name}_64.png", :align => 'absmiddle', :height => "64px", :alt => provider_name %></a>
20
20
  <br /><br />
21
21
  <%= provider_name %>
22
22
  </td>
@@ -14,12 +14,13 @@
14
14
  <% provider_name = provider.to_s.titleize %>
15
15
  <% image_name = provider.to_s.downcase %>
16
16
  <% end %>
17
+ <% if false %>
17
18
  <div style="float:right;margin-right:15px;width:32px;position:relative">&nbsp;
18
- <div style="position:absolute;top:-4px">
19
- <a href="<%= SITE_URL %>/<%= OmniAuth.config.path_prefix.split('/').last.to_s %>/<%= provider.to_s.downcase %><%= url_params %>" class="noicon">
20
- <%= image_tag "contour/#{image_name}_32.png", :align => 'absmiddle', :size => "28x28", :title => provider_name %>
21
- </a>
22
- </div>
19
+ <div style="position:absolute;top:-4px;">
20
+ <% end %>
21
+ <div style="float:right;top:-4px;position:relative;height:20px;margin-right:15px">
22
+ <a href="<%#= Contour.application_site_url.to_s + "/" %><%= request.script_name %><%= "/" + OmniAuth.config.path_prefix.split('/').last.to_s %><%= "/" + provider.to_s.downcase %><%= url_params %>" class="noicon">
23
+ <%= image_tag "contour/#{image_name}_32.png", :align => 'absmiddle', :height => "28px", :title => provider_name %>
24
+ </a>
23
25
  </div>
24
-
25
26
  <% end %>
@@ -9,7 +9,7 @@
9
9
  <div class="authentications">
10
10
  <% for authentication in @authentications %>
11
11
  <div class="authentication">
12
- <%= image_tag "contour/#{authentication.provider}_32.png", :size => "32x32" %>
12
+ <%= image_tag "contour/#{authentication.provider}_32.png", :height => "32px" %>
13
13
  <div class="provider"><%= authentication.provider.titleize %></div>
14
14
  <div class="uid"><%= authentication.uid %></div>
15
15
  <%= link_to "X", authentication, :confirm => 'Are you sure you want to remove this authentication option?', :method => :delete, :class => "remove" %>
@@ -8,8 +8,9 @@
8
8
  <%= csrf_meta_tags %>
9
9
  </head>
10
10
  <body>
11
- <%= javascript_tag "var root_url='#{Contour.application_site_url + '/'}';var auth_token='#{form_authenticity_token}';" %>
12
- <div id="header" class="container" style="background-image: url(<%= Contour.application_site_url %>/assets/<%= Contour.header_background_image %>);">
11
+ <%#= javascript_tag "var root_url='#{Contour.application_site_url + '/'}';var auth_token='#{form_authenticity_token}';" %>
12
+ <%= javascript_tag "var root_url='#{request.script_name + '/'}';var auth_token='#{form_authenticity_token}';" %>
13
+ <div id="header" class="container" style="background-image: url(<%#= Contour.application_site_url %><%= request.script_name %>/assets/<%= Contour.header_background_image %>);">
13
14
  <div id="version" style="position:relative;display:none">
14
15
  <span style="position:absolute;top:-15px;left:82px;font-size:0.5em;font-variant:normal" class="quiet"><%= Contour.application_version %></span>
15
16
  </div>
@@ -11,7 +11,7 @@
11
11
  </div>
12
12
  </fieldset>
13
13
  <div class="actions">
14
- <% form_name = 'user_new' %>
14
+ <% form_name = "#{resource.class.name.underscore}_new" %>
15
15
  <%= link_to_function image_tag('contour/tick.png', :alt => '') + "Send me reset password instructions", "$('##{form_name}').submit();", :class => "button positive" %>
16
16
  <div style="clear:both"></div><br />
17
17
  <%= link_to "Login here!", new_session_path(resource_name) %> or <%= link_to "Register here!", new_registration_path(resource_name) %>
@@ -5,22 +5,26 @@
5
5
  <fieldset style="width:235px">
6
6
  <legend><%= @title %></legend>
7
7
 
8
- <div class="field">
9
- <%= f.label :first_name %><br />
10
- <%= f.text_field :first_name %>
11
- </div>
8
+ <% if resource.methods.include?(:first_name) %>
9
+ <div class="field">
10
+ <%= f.label :first_name %><br />
11
+ <%= f.text_field :first_name %>
12
+ </div>
13
+ <% end %>
12
14
 
13
- <div class="field">
14
- <%= f.label :last_name %><br />
15
- <%= f.text_field :last_name %>
16
- </div>
15
+ <% if resource.methods.include?(:last_name) %>
16
+ <div class="field">
17
+ <%= f.label :last_name %><br />
18
+ <%= f.text_field :last_name %>
19
+ </div>
20
+ <% end %>
17
21
 
18
22
  <div class="field">
19
23
  <%= f.label :email %><br />
20
24
  <%= f.text_field :email %>
21
25
  </div>
22
26
 
23
- <% if @user.password_required? %>
27
+ <% if resource.password_required? %>
24
28
  <div class="field">
25
29
  <%= f.label :password %><br />
26
30
  <%= f.password_field :password %>
@@ -33,7 +37,7 @@
33
37
  <% end %>
34
38
  </fieldset>
35
39
  <div class="actions">
36
- <% form_name = 'user_new' %>
40
+ <% form_name = "#{resource.class.name.underscore}_new" %>
37
41
  <%= link_to_function image_tag('contour/tick.png', :alt => '') + "Sign up", "$('##{form_name}').submit();", :class => "button positive" %>
38
42
  <div style="clear:both"></div><br />
39
43
  <%= link_to "Already signed up? Login here!", new_session_path(resource_name) %>
@@ -15,6 +15,11 @@ If the file does not exist run:<br />
15
15
  <br />
16
16
  <code style="margin-left:10px">rails generate contour:install</code><br />
17
17
  <br />
18
+ <% unless request.script_name.blank? %>
19
+ <p><b>Subdomain:</b>
20
+ <%= request.script_name %>
21
+ </p>
22
+ <% end %>
18
23
  <% (Contour.class_variables.collect{|v| v.to_s.gsub('@@','')} - ['menu_items']).each do |attribute| %>
19
24
  <p>
20
25
  <b><%= attribute.titleize %>:</b>
@@ -14,7 +14,7 @@
14
14
  </div>
15
15
  </fieldset>
16
16
  <div class="actions">
17
- <% form_name = 'user_new' %>
17
+ <% form_name = "#{resource.class.name.underscore}_new" %>
18
18
  <%= link_to_function image_tag('contour/tick.png', :alt => '') + "Login", "$('##{form_name}').submit();", :class => "button positive" %>
19
19
  <% if devise_mapping.rememberable? -%>
20
20
  <div style="padding-top:5px;padding-bottom:4px;"><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
@@ -1,10 +1,11 @@
1
1
  require 'contour/engine' if defined?(Rails)
2
+ require 'contour/fixes'
2
3
  require 'contour/version'
3
4
 
4
5
  module Contour
5
6
  # Default Application Name
6
7
  mattr_accessor :application_name
7
- @@application_name = nil
8
+ @@application_name = 'Application Name'
8
9
 
9
10
  mattr_accessor :application_name_html
10
11
  @@application_name_html = nil
@@ -13,9 +14,9 @@ module Contour
13
14
  mattr_accessor :application_version
14
15
  @@application_version = nil
15
16
 
16
- # Default Application Site URL
17
- mattr_accessor :application_site_url
18
- @@application_site_url = 'http://localhost'
17
+ # # Default Application Site URL
18
+ # mattr_accessor :application_site_url
19
+ # @@application_site_url = 'http://localhost'
19
20
 
20
21
  # Default Application Version
21
22
  mattr_accessor :header_background_image
@@ -34,15 +35,15 @@ module Contour
34
35
  },
35
36
  {
36
37
  :name => 'current_user.name', :eval => true, :id => 'auth', :display => 'signed_in', :position => 'right', :position_class => 'right',
37
- :links => [{:html => '"<div style=\"white-space:nowrap\">"+current_user.name+"</div>"', :eval => true}, {:html => '"<div class=\"small quiet\">"+current_user.email+"</div>"', :eval => true}, {:name => 'Authentications', :path => 'authentications_path'}, {:html => "<hr>"}, {:name => 'Logout', :path => 'destroy_user_session_path'}]
38
+ :links => [{:html => '"<div style=\"white-space:nowrap\">"+(current_user.methods.include?(:name) ? current_user.name.to_s : "")+"</div>"', :eval => true}, {:html => '"<div class=\"small quiet\">"+current_user.email+"</div>"', :eval => true}, {:name => 'Authentications', :path => 'authentications_path'}, {:html => "<hr>"}, {:name => 'Logout', :path => 'destroy_user_session_path'}]
38
39
  },
39
40
  {
40
41
  :name => 'Home', :id => 'home', :display => 'always', :position => 'left', :position_class => 'left',
41
- :links => [{:name => 'Home', :path => 'root_path'}, {:html => "<hr>"}, {:name => 'About', :path => 'about_path'}]
42
+ :links => [{:name => 'Home', :path => 'root_path'}]
42
43
  }
43
44
  ]
44
45
 
45
46
  def self.setup
46
47
  yield self
47
48
  end
48
- end
49
+ end
@@ -1,5 +1,6 @@
1
1
  require "contour"
2
2
  require "rails"
3
+ require 'contour/engine/routes'
3
4
 
4
5
  module Contour
5
6
  class Engine < Rails::Engine
@@ -0,0 +1,10 @@
1
+ module ActionDispatch::Routing
2
+ # class RouteSet #:nodoc:
3
+ # end
4
+
5
+ class Mapper
6
+ def contour_for(*resources)
7
+
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ require 'contour/fixes/devise.rb'
2
+ require 'contour/fixes/omniauth.rb'
3
+ require 'contour/fixes/rack.rb'
4
+
5
+ module Contour
6
+ module Fixes
7
+
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ require 'devise'
2
+
3
+ # module Devise
4
+ # class FailureApp < ActionController::Metal
5
+ # def http_auth
6
+ # self.status = 403
7
+ # self.headers["WWW-Authenticate"] = %(Basic realm=#{Devise.http_authentication_realm.inspect})
8
+ # self.content_type = request.format.to_s
9
+ # self.response_body = http_auth_body
10
+ # end
11
+ # end
12
+ # end
@@ -1,8 +1,13 @@
1
+ require 'omniauth'
2
+
3
+ # Overwriting methods from Rack
1
4
  module OmniAuth
2
5
  module Strategies
3
6
  class LDAP
7
+ # include OmniAuth::Strategy
4
8
 
5
9
  def initialize(app, options = {}, &block)
10
+ Rails.logger.debug "Contour::Fixes => Omniauth::Strategies::LDAP::initialize"
6
11
  super(app, options[:name] || :ldap, options.dup, &block)
7
12
  @name_proc = (@options.delete(:name_proc) || Proc.new {|name| name})
8
13
  @adaptor = OmniAuth::Strategies::LDAP::Adaptor.new(options)
@@ -30,6 +35,8 @@ module OmniAuth
30
35
 
31
36
  # Includes addition of a "domain"
32
37
  def callback_phase
38
+ failure_temp_path = "#{@env['SCRIPT_NAME']}/#{OmniAuth.config.path_prefix.split('/').last}/failure?message=invalid_credentials"
39
+
33
40
  begin
34
41
  creds = session['omniauth.ldap']
35
42
  session.delete 'omniauth.ldap'
@@ -38,9 +45,9 @@ module OmniAuth
38
45
  creds['username'] = @domain.to_s + '\\' + creds['username'] unless @domain.blank?
39
46
  @adaptor.bind(:bind_dn => creds['username'], :password => creds['password'])
40
47
  rescue Exception => e
41
- Rails.logger.info "Exception #{e.inspect}"
42
- Rails.logger.info "failed to bind with the default credentials: " + e.message
43
- return fail!(:invalid_credentials, e)
48
+ Rails.logger.info "Failed to bind with the default credentials: " + e.message
49
+ return redirect failure_temp_path
50
+ # return fail!(:invalid_credentials, e)
44
51
  end
45
52
 
46
53
  @ldap_user_info = @adaptor.search(:base => @adaptor.base, :filter => Net::LDAP::Filter.eq(@adaptor.uid, creds['username'].split('\\').last.to_s),:limit => 1)
@@ -56,8 +63,9 @@ module OmniAuth
56
63
 
57
64
  @env['omniauth.auth'] = {'provider' => 'ldap', 'uid' => @user_info['uid'], 'user_info' => @user_info, 'bla' => 5}
58
65
  rescue Exception => e
59
- Rails.logger.info "Exception #{e.inspect}"
60
- return fail!(:invalid_credentials, e)
66
+ Rails.logger.info "Exception in callback_phase: #{e.inspect}"
67
+ return redirect failure_temp_path
68
+ # return fail!(:invalid_credentials, e)
61
69
  end
62
70
 
63
71
  call_app!
@@ -1,6 +1,8 @@
1
+ # Overwriting methods from Rack
1
2
  module Rack
2
3
  class Request
3
4
  def scheme
5
+ Rails.logger.debug "Contour::Fixes => Rack::Request::scheme"
4
6
  if @env['HTTPS'] == 'on'
5
7
  'https'
6
8
  elsif @env['HTTP_X_FORWARDED_SSL'] == 'on'
@@ -1,3 +1,3 @@
1
1
  module Contour
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -4,26 +4,46 @@ module Contour
4
4
  source_root File.expand_path("../../templates", __FILE__)
5
5
 
6
6
  desc "Creates a Contour initializer"
7
- class_option :orm
7
+ # class_option :orm
8
8
 
9
9
  def copy_initializer
10
10
  template "contour.rb", "config/initializers/contour.rb"
11
11
  end
12
12
 
13
- def copy_devise
14
- template "devise.rb", "config/initializers/devise.rb"
15
- end
13
+ # def copy_devise
14
+ # template "devise.rb", "config/initializers/devise.rb"
15
+ # end
16
16
 
17
17
  def copy_omniauth
18
18
  template "omniauth.rb", "config/initializers/omniauth.rb"
19
19
  end
20
20
 
21
- def copy_omniauth_fix
22
- template "omniauth_fix.rb", "config/initializers/omniauth_fix.rb"
21
+ def add_contour_route
22
+ contour_routes = []
23
+ contour_routes << "match '/auth/failure' => 'contour/authentications#failure'"
24
+ contour_routes << "match '/auth/:provider/callback' => 'contour/authentications#create'"
25
+ contour_routes << "match '/auth/:provider' => 'contour/authentications#passthru'"
26
+ contour_routes << "resources :authentications, :controller => 'contour/authentications'"
27
+ # contour_routes << "devise_for :users, :controllers => {:registrations => 'contour/registrations', :sessions => 'contour/sessions', :passwords => 'contour/passwords'}, :path_names => { :sign_up => 'register', :sign_in => 'login' }"
28
+ contour_routes.reverse.each do |contour_route|
29
+ route contour_route
30
+ end
23
31
  end
24
32
 
25
- def copy_rack_fix
26
- template "rack_fix.rb", "config/initializers/rack_fix.rb"
33
+ def install_devise
34
+ generate("devise:install")
35
+ # model_name = ask("What would you like the user model to be called? [user]")
36
+ # model_name = "user" if model_name.blank?
37
+ model_name = "user"
38
+ generate("devise", model_name)
39
+ end
40
+
41
+ def add_contour_devise_route
42
+ route "devise_for :users, :controllers => {:registrations => 'contour/registrations', :sessions => 'contour/sessions', :passwords => 'contour/passwords'}, :path_names => { :sign_up => 'register', :sign_in => 'login' }"
43
+ end
44
+
45
+ def show_readme
46
+ readme "README" if behavior == :invoke
27
47
  end
28
48
 
29
49
  # def copy_locale
@@ -0,0 +1,28 @@
1
+
2
+ ===============================================================================
3
+
4
+ Contour requires some additional setup:
5
+
6
+ 1. Add the following line to your application_controller.rb
7
+
8
+ layout "contour/layouts/application"
9
+
10
+ 2. Edit your application.js manifest to use Contour JavaScript
11
+
12
+ //= require contour
13
+
14
+ 3. Edit your application.css manifest to use Contour CSS
15
+
16
+ *= require contour
17
+
18
+ 4. Remove any scaffold.css files that exist in your application
19
+
20
+ 5. Make a migration for Authentications
21
+
22
+ rails generate model Authentication user_id:integer provider:string uid:string
23
+
24
+ 6. Add first_name and last_name to User model
25
+
26
+ rails generate migration AddFirstNameAndLastNameToUsers first_name:string last_name:string
27
+
28
+ ===============================================================================
@@ -2,7 +2,7 @@
2
2
  Contour.setup do |config|
3
3
 
4
4
  # Enter your application name here. The name will be displayed in the title of all pages, ex: AppName - PageTitle
5
- # config.application_name = ''
5
+ # config.application_name = 'Application Name'
6
6
 
7
7
  # If you want to style your name using html you can do so here, ex: <b>App</b>Name
8
8
  # config.application_name_html = ''
@@ -10,9 +10,6 @@ Contour.setup do |config|
10
10
  # Enter your application version here. Do not include a trailing backslash. Recommend using a predefined constant
11
11
  # config.application_version = ''
12
12
 
13
- # Enter the url of your site without a trailing slash, ex: http://localhost/app_root
14
- # config.application_site_url = 'http://localhost'
15
-
16
13
  # Enter your application header background image here.
17
14
  # config.header_background_image = 'rails.png'
18
15
 
@@ -26,11 +23,11 @@ Contour.setup do |config|
26
23
  # },
27
24
  # {
28
25
  # :name => 'current_user.name', :eval => true, :id => 'auth', :display => 'signed_in', :position => 'right', :position_class => 'right', :condition => 'true',
29
- # :links => [{:html => '"<div style=\"white-space:nowrap\">"+current_user.name+"</div>"', :eval => true}, {:html => '"<div class=\"small quiet\">"+current_user.email+"</div>"', :eval => true}, {:name => 'Authentications', :path => 'authentications_path'}, {:html => "<hr>"}, {:name => 'Logout', :path => 'destroy_user_session_path'}]
26
+ # :links => [{:html => '"<div style=\"white-space:nowrap\">"+(current_user.methods.include?(:name) ? current_user.name.to_s : "")+"</div>"', :eval => true}, {:html => '"<div class=\"small quiet\">"+current_user.email+"</div>"', :eval => true}, {:name => 'Authentications', :path => 'authentications_path'}, {:html => "<hr>"}, {:name => 'Logout', :path => 'destroy_user_session_path'}]
30
27
  # },
31
28
  # {
32
29
  # :name => 'Home', :id => 'home', :display => 'always', :position => 'left', :position_class => 'left', :condition => 'true', :image => '', :image_options => {},
33
- # :links => [{:name => 'Home', :path => 'root_path', :image => '', :image_options => {}}, {:html => "<hr>"}, {:name => 'About', :path => 'about_path'}]
30
+ # :links => [{:name => 'Home', :path => 'root_path', :image => '', :image_options => {}}]
34
31
  # }]
35
32
 
36
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contour
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-07 00:00:00.000000000Z
12
+ date: 2011-09-08 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: devise
16
- requirement: &70221595619420 !ruby/object:Gem::Requirement
16
+ requirement: &70117242428300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.4.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70221595619420
24
+ version_requirements: *70117242428300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: omniauth
27
- requirement: &70221595618520 !ruby/object:Gem::Requirement
27
+ requirement: &70117242427760 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 0.2.6
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70221595618520
35
+ version_requirements: *70117242427760
36
36
  description: Basic Rails Framework files and assets for layout and authentication
37
37
  email: remosm@gmail.com
38
38
  executables: []
@@ -63,13 +63,17 @@ files:
63
63
  - contour.gemspec
64
64
  - lib/contour.rb
65
65
  - lib/contour/engine.rb
66
+ - lib/contour/engine/routes.rb
67
+ - lib/contour/fixes.rb
68
+ - lib/contour/fixes/devise.rb
69
+ - lib/contour/fixes/omniauth.rb
70
+ - lib/contour/fixes/rack.rb
66
71
  - lib/contour/version.rb
67
72
  - lib/generators/contour/install_generator.rb
73
+ - lib/generators/templates/README
68
74
  - lib/generators/templates/contour.rb
69
75
  - lib/generators/templates/devise.rb
70
76
  - lib/generators/templates/omniauth.rb
71
- - lib/generators/templates/omniauth_fix.rb
72
- - lib/generators/templates/rack_fix.rb
73
77
  - test/fixtures/authentications.yml
74
78
  - test/functional/authentications_controller_test.rb
75
79
  - test/functional/registrations_controller_test.rb