contour 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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