rack_warden 0.0.9 → 0.0.10

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.
Files changed (39) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +2 -0
  3. data/Gemfile +13 -10
  4. data/README.md +115 -53
  5. data/config.ru +1 -0
  6. data/lib/rack_warden.rb +33 -5
  7. data/lib/rack_warden/app.rb +73 -58
  8. data/lib/rack_warden/core_patches.rb +20 -0
  9. data/lib/rack_warden/env.rb +27 -0
  10. data/lib/rack_warden/frameworks.rb +34 -36
  11. data/lib/rack_warden/frameworks/rack.rb +36 -0
  12. data/lib/rack_warden/frameworks/rails.rb +29 -9
  13. data/lib/rack_warden/frameworks/sinatra.rb +15 -11
  14. data/lib/rack_warden/helpers.rb +197 -29
  15. data/lib/rack_warden/mail.rb +26 -0
  16. data/lib/rack_warden/models.rb +79 -40
  17. data/lib/rack_warden/models/user.rb +180 -22
  18. data/lib/rack_warden/routes.rb +159 -83
  19. data/lib/rack_warden/sinatra/decompile.rb +127 -0
  20. data/lib/rack_warden/sinatra/json.rb +131 -0
  21. data/lib/rack_warden/sinatra/namespace.rb +285 -0
  22. data/lib/rack_warden/sinatra/respond_with.rb +277 -0
  23. data/lib/rack_warden/version.rb +1 -1
  24. data/lib/rack_warden/views/rw_account_widget.html.erb +8 -0
  25. data/lib/rack_warden/views/rw_activation.email.erb +3 -0
  26. data/lib/rack_warden/views/rw_admin.html.erb +7 -5
  27. data/lib/rack_warden/views/rw_dbinfo.html.erb +5 -4
  28. data/lib/rack_warden/views/rw_error.html.erb +1 -0
  29. data/lib/rack_warden/views/rw_flash_widget.html.erb +12 -0
  30. data/lib/rack_warden/views/rw_index.html.erb +1 -1
  31. data/lib/rack_warden/views/rw_layout.html.erb +13 -19
  32. data/lib/rack_warden/views/rw_layout_admin.html.erb +6 -6
  33. data/lib/rack_warden/views/rw_login.html.erb +18 -5
  34. data/lib/rack_warden/views/rw_new_user.html.erb +22 -6
  35. data/lib/rack_warden/views/rw_protected.xml.erb +10 -0
  36. data/lib/rack_warden/views/rw_session.html.erb +34 -0
  37. data/lib/rack_warden/warden.rb +161 -30
  38. data/rack_warden.gemspec +16 -13
  39. metadata +84 -29
@@ -1,11 +1,27 @@
1
- <% @section_title = "Create Account" %>
2
- <form action="<%=url('/auth/create', false)%>" method="post">
3
- <p>Email <input type="text" name="user[email]" /></p>
4
- <p>Username <input type="text" name="user[username]" /></p>
5
- <p>Password <input type="password" name="user[password]" /></p>
1
+ <h3>Create Account</h3>
2
+ <p><%= @user.errors.to_yaml if @user && @user.errors %></p>
3
+ <form action="<%=url_for('/create')%>" method="post" class="rw">
4
+ <style scoped="scoped">
5
+ .rw label {font-size: .95em; color: grey; display: block;}
6
+ .rw input {font-size: 1.15em; margin-bottom: 20px; padding:7px;}
7
+ .rw .g-recaptcha {margin-bottom: 20px;}
8
+ </style>
9
+
10
+ <label for="user_email">Email</label>
11
+ <input type="text" name="user[email]" id="user_email" />
12
+
13
+ <label for="user_username">Username</label>
14
+ <input type="text" name="user[username]" id="user_username" />
15
+
16
+ <label for="user_password">Password</label>
17
+ <input type="password" name="user[password]" id="user_password" />
18
+
19
+ <label for="user_password_confirmation">Confirm password</label>
20
+ <input type="password" name="user[password_confirmation]" id="user_password_confirmation" />
21
+
6
22
  <% if recaptcha_sitekey && RackWarden::User.count > 0 %>
7
23
  <div class="g-recaptcha control text-control" data-sitekey="<%=recaptcha_sitekey%>"></div>
8
24
  <% end %>
25
+
9
26
  <input type="submit" value="Create" />
10
- <p><%= @user.errors.to_yaml if @user && @user.errors %></p>
11
27
  </form>
@@ -0,0 +1,10 @@
1
+ <blockquote>
2
+ <xml>
3
+ <% RackWarden::User.all.each do |user| %>
4
+ <user>
5
+ <name><%=user.username%></name>
6
+ <password><%=user.encrypted_password%></name>
7
+ </user>
8
+ <% end %>
9
+ </xml>
10
+ </blockquote>
@@ -0,0 +1,34 @@
1
+ <p>
2
+ <h3>Session info</h3>
3
+ </p>
4
+
5
+ <p>
6
+ <b>Ruby Process:</b><br>
7
+ <%= $0 %>
8
+ <br><br>
9
+
10
+
11
+ <b>Middleware:</b><br>
12
+ <%#= TopApp.middleware %><br>
13
+ <%#= InnerApp.middleware %>
14
+ <%= settings.middleware %>
15
+ <br><br>
16
+
17
+ <b>Session:</b><br>
18
+ <%= session.to_hash.to_yaml.to_html %>
19
+ <br><br>
20
+
21
+ <b>Cookies:</b><br>
22
+ <%= env['rack.cookies'].to_yaml.to_html %>
23
+ <br><br>
24
+
25
+ <b>Ruby ENV:</b><br>
26
+ <%= ENV.to_hash.to_yaml.to_html %>
27
+ <br><br>
28
+
29
+ <b>Request env object:</b><br>
30
+ <%#= request.env.inspect.to_html %>
31
+ <br><br>
32
+
33
+ </p>
34
+ <br>
@@ -1,9 +1,9 @@
1
1
  module RackWarden
2
2
  module WardenConfig
3
3
  def self.included(base)
4
- puts "RW WardenConfig base: #{base}"
5
- base.instance_eval do
6
-
4
+ App.logger.warn "RW loading Warden config into #{base}"
5
+
6
+ base.instance_eval do
7
7
 
8
8
  use Warden::Manager do |config|
9
9
  # Tell Warden how to save our User info into a session.
@@ -17,7 +17,7 @@ module RackWarden
17
17
  config.scope_defaults :default,
18
18
  # "strategies" is an array of named methods with which to
19
19
  # attempt authentication. We have to define this later.
20
- :strategies => [:password],
20
+ :strategies => [:remember_me, :password],
21
21
  # The action is a route to send the user to when
22
22
  # warden.authenticate! returns a false answer. We'll show
23
23
  # this route below.
@@ -27,34 +27,165 @@ module RackWarden
27
27
  config.failure_app = self
28
28
  end
29
29
 
30
- Warden::Manager.before_failure do |env,opts|
31
- env['REQUEST_METHOD'] = 'POST'
32
- end
33
-
34
- Warden::Strategies.add(:password) do
35
- def valid?
36
- params['user'] && params['user']['username'] && params['user']['password']
37
- end
30
+ end # self.included
31
+ end # WardenConfig
32
+
33
+ module Warden::Strategies
34
+
35
+ # TODO: Add basic-auth stragety.
36
+ # From Rack documentation - this is all you need for basic auth in Sinatra.
37
+ # use Rack::Auth::Basic, "Protected Area" do |username, password|
38
+ # username == 'foo' && password == 'bar'
39
+ # end
40
+
41
+
42
+
43
+ add(:password) do
44
+ #App.logger.debug "RW WardenStrategies.add(password) self #{self.class}"
45
+
46
+ def valid?
47
+ params['user'] && params['user']['username'] && params['user']['password']
48
+ end
49
+
50
+ def authenticate!
51
+ # User-class based authenticator. See below for old local-based authenticator
52
+ App.logger.debug "RW authenticate! method self #{self.class}"
53
+ App.logger.debug "RW authenticating with password"
54
+ user = User.authenticate(params['user']['username'], params['user']['password'])
55
+ if user.is_a? User
56
+ success!(user)
57
+ App.logger.warn "RW user logged in '#{user.username}'"
58
+ else
59
+ fail!("Could not login")
60
+ App.logger.warn "RW user failed regular login '#{params['user']['username']}'"
61
+ end
62
+
63
+ end # authenticate!
64
+ end # Warden::Strategies password
65
+
66
+
67
+ # Newer remember_me routine
68
+ add(:remember_me) do
69
+ def valid?
70
+ App.logger.debug "RW checking existence of remember_token cookie: #{env['rack.request.cookie_hash']['rack_warden_remember_me']}"
71
+ #env['rack.cookies']['rack_warden_remember_me']
72
+ #env['rack.request.cookie_hash']['rack_warden_remember_me']
73
+ env.remember_token
74
+ end
75
+
76
+ def authenticate!
77
+ App.logger.debug "RW authenticate!(:remember_me) self #{self.class}"
78
+ App.logger.debug "RW authenticating with rack_warden_remember_me token: #{env.remember_token}"
79
+ user = User.first(:remember_token => env.remember_token)
80
+ if user.is_a?(User) && !user.remember_token.to_s.empty?
81
+ success!(user)
82
+ App.logger.warn "RW user logged in with remember_me token '#{user.username}'"
83
+ else
84
+ App.logger.info "RW user failed remember_me token login '#{env.remember_token}'"
85
+ nil
86
+ end
87
+ end # authenticate!
88
+ end # remember_me
89
+
90
+ end # Warden::Strategies
38
91
 
39
- def authenticate!
40
- criteria = params['user']['username'] #.to_s.downcase
41
- #user = ( User.first([{:username => '?'}, criteria]) + User.first([{:email => '?'}, criteria]) )
42
- #user = User.first(:conditions => ['username = ? collate NOCASE or email = ? collate NOCASE', criteria, criteria]) #(username: params['user']['username'])
43
- user = User.first(:conditions => ['username = ? or email = ?', criteria, criteria]) #(username: params['user']['username'])
44
92
 
45
- if user.nil?
46
- fail!("The username you entered does not exist")
47
- elsif user.authenticate(params['user']['password'])
48
- success!(user)
49
- else
50
- fail!("Could not log in")
51
- end
52
- end
53
- end
93
+ # See http://www.rubydoc.info/github/hassox/warden/Warden/Hooks for info on callback params.
94
+
95
+ class Warden::Manager
96
+
97
+ before_failure do |env,opts|
98
+ env['REQUEST_METHOD'] = 'POST'
99
+ end
100
+
101
+ after_authentication do |user, auth, opts|
102
+ #App.logger.debug "RW after_authentication callback - self: #{self}"
103
+ #App.logger.debug "RW after_authentication callback - auth methods: #{auth.methods.sort}"
104
+ #App.logger.debug "RW after_authentication callback - opts: #{opts.inspect}"
105
+ #App.logger.debug "RW after_authentication callback - auth.manager: #{auth.manager.inspect}"
106
+ App.logger.debug "RW after_authentication callback - user: #{user.username}"
107
+
108
+ if user.is_a?(User) && (user.remember_token || auth.params['user']['remember_me'] == '1')
109
+ App.logger.debug "RW after_authenticate user.remember_me '#{user.username}'"
110
+ user.remember_me
111
+
112
+ # We have no path to response object here :(
113
+ #auth.response.set_cookie 'rack_warden_remember_me', :value => user.remember_token , :expires => user.remember_token_expires_at
114
+ # So we have to do this
115
+ auth.env.remember_token = { :value => user.remember_token , :expires => user.remember_token_expires_at } #user.remember_me # sets its remember_token attribute to some large random value and returns the value.
116
+ App.logger.debug "RW cookie set auth.env.remember_token: #{auth.env.remember_token}"
117
+ end
118
+ end
119
+
120
+ before_logout do |user, auth, opts|
121
+ App.logger.debug "RW before_logout callback - self: #{self}"
122
+ App.logger.debug "RW before_logout callback - auth: #{auth.instance_variables}"
123
+ App.logger.debug "RW before_logout callback - opts: #{opts.inspect}"
124
+
125
+ #auth.response.set_cookie 'rack_warden_remember_me', nil
126
+ App.logger.debug "RW cookie unset 'rack_warden_remember_token': #{auth.env.remember_token}"
127
+ auth.env.remember_token = nil
128
+
129
+ user.forget_me
130
+ end
131
+
132
+ end # Warden::Manager
133
+
134
+
135
+ # # Old password strategy.
136
+ # Warden::Strategies.add(:password) do
137
+ # def valid?
138
+ # params['user'] && params['user']['username'] && params['user']['password']
139
+ # end
140
+ #
141
+ # def authenticate!
142
+ #
143
+ # # Original RackWarden authenticator. Works great, but doesn't allow extra User processing upon login.
144
+ # criteria = params['user']['username'] #.to_s.downcase
145
+ # #user = ( User.first([{:username => '?'}, criteria]) + User.first([{:email => '?'}, criteria]) )
146
+ # #user = User.first(:conditions => ['username = ? collate NOCASE or email = ? collate NOCASE', criteria, criteria]) #(username: params['user']['username'])
147
+ # user = User.first(:conditions => ['username = ? or email = ?', criteria, criteria]) #(username: params['user']['username'])
148
+ # if user.nil?
149
+ # fail!("The username you entered does not exist")
150
+ # App.logger.warn "RW user not found '#{criteria}'"
151
+ # elsif user.authenticate(params['user']['password'])
152
+ # success!(user)
153
+ # App.logger.warn "RW user logged in '#{user.username}'"
154
+ # else
155
+ # fail!("Could not log in")
156
+ # App.logger.warn "RW user failed login '#{user.username}'"
157
+ # end
158
+ #
159
+ # end # authenticate!
160
+ # end # Warden::Strategies password
54
161
 
55
162
 
56
- end
57
- end
58
- end
59
- end
163
+ # # Older remember_me routine.
164
+ # Warden::Strategies.add(:remember_me_old) do
165
+ # def valid?
166
+ # #env['rack.cookies']['rack_warden_remember_me']
167
+ # cookies['rack_warden_remember_me']
168
+ # end
169
+ #
170
+ # def authenticate!
171
+ # #user = User.first(:remember_token => env['rack.cookies']['rack_warden_remember_me'])
172
+ # user = User.first(:remember_token => cookies['rack_warden_remember_me'])
173
+ # #App.logger.debug "rack_warden_remember_me token: #{env['rack.cookies']['rack_warden_remember_me']}"
174
+ # App.logger.debug "rack_warden_remember_me token: #{cookies['rack_warden_remember_me']}"
175
+ # if user.is_a?(User) && user.remember_token
176
+ # success!(user)
177
+ # user.remember_me
178
+ # #cookies['rack_warden_remember_me'] = { :value => user.remember_token , :expires => user.remember_token_expires_at }
179
+ # App.logger.warn "RW user logged in with remember_me token '#{user.username}'"
180
+ # else
181
+ # fail!("Could not login with remember_me token")
182
+ # App.logger.warn "RW user failed remember_me token login '#{env['rack.cookies']['rack_warden_remember_me']}'"
183
+ # end
184
+ # end # authenticate!
185
+ # end # Warden::Strategies remember_me
186
+
187
+ #end # instance_eval
188
+ #end # self.included
189
+ end # WardenConfig
190
+ end # RackWarden
60
191
 
@@ -1,8 +1,6 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- # This breaks bundle-install
5
- #require 'sinatra/base'
6
4
  require 'rack_warden/version'
7
5
 
8
6
  Gem::Specification.new do |spec|
@@ -10,8 +8,8 @@ Gem::Specification.new do |spec|
10
8
  spec.version = RackWarden::VERSION
11
9
  spec.authors = ["William Richardson"]
12
10
  spec.email = ["wbr@mac.com"]
13
- spec.summary = %q{A warden/sinatra mini-app providing authentication and user management for any rack-based app}
14
- spec.description = %q{A warden/sinatra mini-app providing authentication and user management for any rack-based app.}
11
+ spec.summary = %q{Authentication and user management for any rack-based framework}
12
+ spec.description = %q{A warden/sinatra mini-app providing authentication and user management for any rack-based framework.}
15
13
  spec.homepage = ""
16
14
  spec.license = "MIT"
17
15
 
@@ -19,17 +17,22 @@ Gem::Specification.new do |spec|
19
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
19
  spec.require_paths = ["lib"]
22
-
23
- spec.add_development_dependency "bundler", "~> 1.7"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "tux"
26
- spec.add_development_dependency "thin"
27
20
 
28
- spec.add_dependency "sinatra"
29
- spec.add_dependency "sinatra-flash"
30
- spec.add_dependency "bcrypt"
21
+
22
+ spec.add_dependency "backports"
23
+ spec.add_dependency "bcrypt"
31
24
  spec.add_dependency "data_mapper"
32
- spec.add_dependency "sqlite3"
33
25
  spec.add_dependency "dm-sqlite-adapter"
26
+ spec.add_dependency "mail"
27
+ spec.add_dependency "multi_json"
28
+ spec.add_dependency "rack-contrib"
29
+ spec.add_dependency "rack-flash3"
30
+ spec.add_dependency "sinatra"
34
31
  spec.add_dependency "warden"
32
+
33
+
34
+ spec.add_development_dependency "bundler"
35
+ spec.add_development_dependency "rake"
36
+ spec.add_development_dependency "thin"
37
+ spec.add_development_dependency "tux"
35
38
  end
metadata CHANGED
@@ -1,51 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack_warden
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Richardson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-10 00:00:00.000000000 Z
11
+ date: 2015-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: backports
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
20
- type: :development
19
+ version: '0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bcrypt
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
33
+ version: '0'
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: tux
42
+ name: data_mapper
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
- type: :development
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
@@ -53,13 +53,13 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: thin
56
+ name: dm-sqlite-adapter
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- type: :development
62
+ type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: sinatra
70
+ name: mail
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ! '>='
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: sinatra-flash
84
+ name: multi_json
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ! '>='
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: bcrypt
98
+ name: rack-contrib
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: data_mapper
112
+ name: rack-flash3
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ! '>='
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: sqlite3
126
+ name: sinatra
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ! '>='
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: dm-sqlite-adapter
140
+ name: warden
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ! '>='
@@ -151,13 +151,55 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: warden
154
+ name: bundler
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ! '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
- type: :runtime
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ! '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: thin
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ! '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: tux
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ! '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
161
203
  prerelease: false
162
204
  version_requirements: !ruby/object:Gem::Requirement
163
205
  requirements:
@@ -165,7 +207,7 @@ dependencies:
165
207
  - !ruby/object:Gem::Version
166
208
  version: '0'
167
209
  description: A warden/sinatra mini-app providing authentication and user management
168
- for any rack-based app.
210
+ for any rack-based framework.
169
211
  email:
170
212
  - wbr@mac.com
171
213
  executables: []
@@ -180,22 +222,36 @@ files:
180
222
  - config.ru
181
223
  - lib/rack_warden.rb
182
224
  - lib/rack_warden/app.rb
225
+ - lib/rack_warden/core_patches.rb
226
+ - lib/rack_warden/env.rb
183
227
  - lib/rack_warden/frameworks.rb
228
+ - lib/rack_warden/frameworks/rack.rb
184
229
  - lib/rack_warden/frameworks/rails.rb
185
230
  - lib/rack_warden/frameworks/sinatra.rb
186
231
  - lib/rack_warden/helpers.rb
232
+ - lib/rack_warden/mail.rb
187
233
  - lib/rack_warden/models.rb
188
234
  - lib/rack_warden/models/user.rb
189
235
  - lib/rack_warden/routes.rb
236
+ - lib/rack_warden/sinatra/decompile.rb
237
+ - lib/rack_warden/sinatra/json.rb
238
+ - lib/rack_warden/sinatra/namespace.rb
239
+ - lib/rack_warden/sinatra/respond_with.rb
190
240
  - lib/rack_warden/version.rb
241
+ - lib/rack_warden/views/rw_account_widget.html.erb
242
+ - lib/rack_warden/views/rw_activation.email.erb
191
243
  - lib/rack_warden/views/rw_admin.html.erb
192
244
  - lib/rack_warden/views/rw_dbinfo.html.erb
245
+ - lib/rack_warden/views/rw_error.html.erb
246
+ - lib/rack_warden/views/rw_flash_widget.html.erb
193
247
  - lib/rack_warden/views/rw_index.html.erb
194
248
  - lib/rack_warden/views/rw_layout.html.erb
195
249
  - lib/rack_warden/views/rw_layout_admin.html.erb
196
250
  - lib/rack_warden/views/rw_login.html.erb
197
251
  - lib/rack_warden/views/rw_new_user.html.erb
198
252
  - lib/rack_warden/views/rw_protected.html.erb
253
+ - lib/rack_warden/views/rw_protected.xml.erb
254
+ - lib/rack_warden/views/rw_session.html.erb
199
255
  - lib/rack_warden/warden.rb
200
256
  - rack_warden.gemspec
201
257
  homepage: ''
@@ -221,6 +277,5 @@ rubyforge_project:
221
277
  rubygems_version: 2.4.5
222
278
  signing_key:
223
279
  specification_version: 4
224
- summary: A warden/sinatra mini-app providing authentication and user management for
225
- any rack-based app
280
+ summary: Authentication and user management for any rack-based framework
226
281
  test_files: []