protected 1.0.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.
Files changed (72) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +151 -0
  3. data/Rakefile +32 -0
  4. data/app/assets/images/protected/Sorting icons.psd +0 -0
  5. data/app/assets/images/protected/back_disabled.png +0 -0
  6. data/app/assets/images/protected/back_enabled.png +0 -0
  7. data/app/assets/images/protected/back_enabled_hover.png +0 -0
  8. data/app/assets/images/protected/favicon.ico +0 -0
  9. data/app/assets/images/protected/forward_disabled.png +0 -0
  10. data/app/assets/images/protected/forward_enabled.png +0 -0
  11. data/app/assets/images/protected/forward_enabled_hover.png +0 -0
  12. data/app/assets/images/protected/glyphicons-halflings-white.png +0 -0
  13. data/app/assets/images/protected/glyphicons-halflings.png +0 -0
  14. data/app/assets/images/protected/sort_asc.png +0 -0
  15. data/app/assets/images/protected/sort_asc_disabled.png +0 -0
  16. data/app/assets/images/protected/sort_both.png +0 -0
  17. data/app/assets/images/protected/sort_desc.png +0 -0
  18. data/app/assets/images/protected/sort_desc_disabled.png +0 -0
  19. data/app/assets/javascripts/protected/application.js +164 -0
  20. data/app/assets/javascripts/protected/bootstrap.min.js +6 -0
  21. data/app/assets/javascripts/protected/jquery.dataTables.min.js +154 -0
  22. data/app/assets/stylesheets/protected/application.css +51 -0
  23. data/app/assets/stylesheets/protected/bootstrap-responsive.min.css +12 -0
  24. data/app/assets/stylesheets/protected/bootstrap.min.css +689 -0
  25. data/app/controllers/protected/admin/protected_controller.rb +14 -0
  26. data/app/controllers/protected/admin/users_controller.rb +70 -0
  27. data/app/controllers/protected/application_controller.rb +18 -0
  28. data/app/controllers/protected/passwords_controller.rb +39 -0
  29. data/app/controllers/protected/sessions_controller.rb +44 -0
  30. data/app/controllers/protected/users_controller.rb +12 -0
  31. data/app/helpers/protected/application_helper.rb +4 -0
  32. data/app/helpers/protected/passwords_helper.rb +21 -0
  33. data/app/mailers/user_mailer.rb +9 -0
  34. data/app/models/protected.rb +5 -0
  35. data/app/models/protected/old_password.rb +18 -0
  36. data/app/models/protected/user.rb +165 -0
  37. data/app/views/layouts/protected/application.html.haml +38 -0
  38. data/app/views/protected/admin/users/_form.html.haml +27 -0
  39. data/app/views/protected/admin/users/_password_fields.html.haml +9 -0
  40. data/app/views/protected/admin/users/_role_fields.html.haml +10 -0
  41. data/app/views/protected/admin/users/confirm_delete.html.haml +9 -0
  42. data/app/views/protected/admin/users/edit.html.haml +9 -0
  43. data/app/views/protected/admin/users/index.html.haml +27 -0
  44. data/app/views/protected/admin/users/new.html.haml +9 -0
  45. data/app/views/protected/admin/users/show.html.haml +0 -0
  46. data/app/views/protected/passwords/edit.html.haml +28 -0
  47. data/app/views/protected/passwords/forgot_password.html.haml +20 -0
  48. data/app/views/protected/passwords/new.html.haml +22 -0
  49. data/app/views/protected/sessions/first_login.html.haml +25 -0
  50. data/app/views/protected/sessions/new.html.haml +22 -0
  51. data/app/views/protected/sessions/not_authorized.html.haml +9 -0
  52. data/app/views/protected/users/_form.html.haml +19 -0
  53. data/app/views/protected/users/edit.html.haml +19 -0
  54. data/app/views/user_mailer/welcome_existing_user.haml +5 -0
  55. data/app/views/user_mailer/welcome_login_instructions.html.haml +6 -0
  56. data/app/views/user_mailer/welcome_password_instructions.haml +7 -0
  57. data/config/initializers/devise.rb +220 -0
  58. data/config/locales/devise.en.yml +62 -0
  59. data/config/routes.rb +34 -0
  60. data/db/migrate/20120418194256_devise_create_add_users.rb +60 -0
  61. data/lib/generators/protected/USAGE +5 -0
  62. data/lib/generators/protected/install/install_generator.rb +26 -0
  63. data/lib/generators/protected/templates/README +32 -0
  64. data/lib/generators/protected/templates/devise.rb +233 -0
  65. data/lib/generators/protected/views/views_generator.rb +40 -0
  66. data/lib/protected.rb +4 -0
  67. data/lib/protected/devise_recoverable_extensions.rb +19 -0
  68. data/lib/protected/engine.rb +10 -0
  69. data/lib/protected/password_utils.rb +46 -0
  70. data/lib/protected/version.rb +3 -0
  71. data/lib/tasks/protected_tasks.rake +44 -0
  72. metadata +414 -0
@@ -0,0 +1,40 @@
1
+ module Protected
2
+ module Generators
3
+ # Include this module in your generator to generate Devise views.
4
+ # `copy_views` is the main method and by default copies all views
5
+ # with forms.
6
+ module ViewPathTemplates #:nodoc:
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ argument :scope, :required => false, :default => nil,
11
+ :desc => "The scope to copy views to"
12
+
13
+ public_task :copy_views
14
+ end
15
+
16
+ def copy_views
17
+ view_directory :passwords
18
+ view_directory :sessions
19
+ view_directory :user_mailer
20
+ view_directory :users
21
+ end
22
+
23
+ protected
24
+
25
+ def view_directory(name, _target_path = nil)
26
+ directory name.to_s, _target_path || "#{target_path}/#{name}"
27
+ end
28
+
29
+ def target_path
30
+ @target_path ||= "app/views/#{scope || :protected}"
31
+ end
32
+ end
33
+
34
+ class ViewsGenerator < Rails::Generators::Base #:nodoc:
35
+ include ViewPathTemplates
36
+ source_root File.expand_path("../../../../../app/views/protected", __FILE__)
37
+ desc "Copies default Protected views to your application."
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,4 @@
1
+ require "protected/engine"
2
+
3
+ module Protected
4
+ end
@@ -0,0 +1,19 @@
1
+ module Devise
2
+ module Models
3
+ module Recoverable
4
+ module ClassMethods
5
+ def reset_password_by_token(attributes={})
6
+ recoverable = find_or_initialize_with_error_by(:reset_password_token, attributes[:reset_password_token])
7
+ if recoverable.persisted?
8
+ recoverable.reset_password!(attributes[:password], attributes[:password_confirmation])
9
+ if recoverable.errors.empty?
10
+ recoverable.failed_attempts = 0
11
+ recoverable.save(:validate => false)
12
+ end
13
+ end
14
+ recoverable
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ require 'rails'
2
+ require 'devise'
3
+ require 'haml-rails'
4
+ require 'will_paginate'
5
+ require 'audit_record'
6
+ module Protected
7
+ class Engine < ::Rails::Engine
8
+ isolate_namespace Protected
9
+ end
10
+ end
@@ -0,0 +1,46 @@
1
+ class PasswordAlreadyUsedException < StandardError
2
+ def message
3
+ "This password has already been used"
4
+ end
5
+ end
6
+
7
+ module PasswordUtils
8
+ extend self
9
+
10
+ SpecialCharacters = %w(! @ # $ % ^ & + =)
11
+ LowercaseLetters = ('a'..'z').to_a
12
+ UppercaseLetters = ('A'..'Z').to_a
13
+ Numbers = ('0'..'9').to_a
14
+ PasswordLength = 8
15
+
16
+ def strong?(str)
17
+ return false if str.blank?
18
+ return false unless str =~ Regexp.union(*SpecialCharacters)
19
+ return false unless str =~ Regexp.union(*LowercaseLetters)
20
+ return false unless str =~ Regexp.union(*UppercaseLetters)
21
+ return false unless str =~ Regexp.union(*Numbers)
22
+ true
23
+ end
24
+
25
+ def generate_random_password
26
+ password = generate_random(PasswordLength) until strong?(password)
27
+ password
28
+ end
29
+
30
+ private
31
+ def generate_random(length)
32
+ "".tap do |str|
33
+ length.times { str << random_character }
34
+ end
35
+ end
36
+
37
+ def random_character
38
+ all_possible_characters.sample
39
+ end
40
+
41
+ def all_possible_characters
42
+ SpecialCharacters + LowercaseLetters +
43
+ UppercaseLetters + Numbers
44
+ end
45
+
46
+ end
@@ -0,0 +1,3 @@
1
+ module Protected
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,44 @@
1
+ desc "Creates an admin user"
2
+ namespace :protected do
3
+ task :create_admin => [:environment] do
4
+ puts "Creating a Admin User"
5
+
6
+ puts "Please enter first name"
7
+ first_name = $stdin.gets.chomp
8
+
9
+ puts "Please enter last name"
10
+ last_name = $stdin.gets.chomp
11
+
12
+ puts "Please enter login (between 6 and 64 chars; no whitespace; [A-Za-z0-9]; special chars (-, _, .) and should not be in the beginning or end)"
13
+ login = $stdin.gets.chomp
14
+
15
+ puts "Please enter email (Password will be emailed to this address):"
16
+ email = $stdin.gets.chomp
17
+
18
+ # Create user
19
+ params = {
20
+ :first_name => "Admin",
21
+ :last_name => "User",
22
+ :company => "XYZ Inc.",
23
+ :login => "",
24
+ :email => "",
25
+ :password => "P@ssw0rd"
26
+ }.merge(:first_name => first_name, :last_name => last_name, :email => email, :login => login)
27
+
28
+ user = nil
29
+ begin
30
+ user = Protected::User.new(params)
31
+ user.is_admin = true
32
+ user.save
33
+ rescue => e
34
+ puts "Please correct the follwing errors and try again."
35
+
36
+ user.errors.full_messages.each_with_index { |msg, i|
37
+ puts "#{i+1}. #{msg}"
38
+ } unless user.nil?
39
+
40
+ puts "#{e.inspect}"
41
+ puts "#{e.backtrace}"
42
+ end
43
+ end
44
+ end
metadata ADDED
@@ -0,0 +1,414 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: protected
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mark Daggett
9
+ - Amit Kumar
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-05-22 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: rspec-rails
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - '='
37
+ - !ruby/object:Gem::Version
38
+ version: 2.9.0
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - '='
45
+ - !ruby/object:Gem::Version
46
+ version: 2.9.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: sqlite3
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: spork
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>'
69
+ - !ruby/object:Gem::Version
70
+ version: 0.9.0.rc
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>'
77
+ - !ruby/object:Gem::Version
78
+ version: 0.9.0.rc
79
+ - !ruby/object:Gem::Dependency
80
+ name: guard-spork
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: guard-rspec
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-bundler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: rb-fsevent
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: shoulda
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - '='
149
+ - !ruby/object:Gem::Version
150
+ version: 2.11.3
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - '='
157
+ - !ruby/object:Gem::Version
158
+ version: 2.11.3
159
+ - !ruby/object:Gem::Dependency
160
+ name: shoulda-matchers
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ~>
165
+ - !ruby/object:Gem::Version
166
+ version: 1.0.0
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: 1.0.0
175
+ - !ruby/object:Gem::Dependency
176
+ name: factory_girl
177
+ requirement: !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - '='
181
+ - !ruby/object:Gem::Version
182
+ version: 2.6.0
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - '='
189
+ - !ruby/object:Gem::Version
190
+ version: 2.6.0
191
+ - !ruby/object:Gem::Dependency
192
+ name: factory_girl_rails
193
+ requirement: !ruby/object:Gem::Requirement
194
+ none: false
195
+ requirements:
196
+ - - ! '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ type: :development
200
+ prerelease: false
201
+ version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: rails
209
+ requirement: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ~>
213
+ - !ruby/object:Gem::Version
214
+ version: 3.2.3
215
+ type: :runtime
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ~>
221
+ - !ruby/object:Gem::Version
222
+ version: 3.2.3
223
+ - !ruby/object:Gem::Dependency
224
+ name: devise
225
+ requirement: !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - '='
229
+ - !ruby/object:Gem::Version
230
+ version: 2.0.0
231
+ type: :runtime
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - '='
237
+ - !ruby/object:Gem::Version
238
+ version: 2.0.0
239
+ - !ruby/object:Gem::Dependency
240
+ name: haml-rails
241
+ requirement: !ruby/object:Gem::Requirement
242
+ none: false
243
+ requirements:
244
+ - - ! '>='
245
+ - !ruby/object:Gem::Version
246
+ version: '0'
247
+ type: :runtime
248
+ prerelease: false
249
+ version_requirements: !ruby/object:Gem::Requirement
250
+ none: false
251
+ requirements:
252
+ - - ! '>='
253
+ - !ruby/object:Gem::Version
254
+ version: '0'
255
+ - !ruby/object:Gem::Dependency
256
+ name: jquery-rails
257
+ requirement: !ruby/object:Gem::Requirement
258
+ none: false
259
+ requirements:
260
+ - - ! '>='
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ type: :runtime
264
+ prerelease: false
265
+ version_requirements: !ruby/object:Gem::Requirement
266
+ none: false
267
+ requirements:
268
+ - - ! '>='
269
+ - !ruby/object:Gem::Version
270
+ version: '0'
271
+ - !ruby/object:Gem::Dependency
272
+ name: will_paginate
273
+ requirement: !ruby/object:Gem::Requirement
274
+ none: false
275
+ requirements:
276
+ - - '='
277
+ - !ruby/object:Gem::Version
278
+ version: 3.0.3
279
+ type: :runtime
280
+ prerelease: false
281
+ version_requirements: !ruby/object:Gem::Requirement
282
+ none: false
283
+ requirements:
284
+ - - '='
285
+ - !ruby/object:Gem::Version
286
+ version: 3.0.3
287
+ - !ruby/object:Gem::Dependency
288
+ name: audit_record
289
+ requirement: !ruby/object:Gem::Requirement
290
+ none: false
291
+ requirements:
292
+ - - ! '>='
293
+ - !ruby/object:Gem::Version
294
+ version: 0.1.5
295
+ type: :runtime
296
+ prerelease: false
297
+ version_requirements: !ruby/object:Gem::Requirement
298
+ none: false
299
+ requirements:
300
+ - - ! '>='
301
+ - !ruby/object:Gem::Version
302
+ version: 0.1.5
303
+ description: Protected is a gem for rails that gives you user authorization, administration,
304
+ auditing in a mountable Engine
305
+ email:
306
+ - mark@humansized
307
+ - toamitkumar@gmail.com
308
+ executables: []
309
+ extensions: []
310
+ extra_rdoc_files: []
311
+ files:
312
+ - app/assets/images/protected/back_disabled.png
313
+ - app/assets/images/protected/back_enabled.png
314
+ - app/assets/images/protected/back_enabled_hover.png
315
+ - app/assets/images/protected/favicon.ico
316
+ - app/assets/images/protected/forward_disabled.png
317
+ - app/assets/images/protected/forward_enabled.png
318
+ - app/assets/images/protected/forward_enabled_hover.png
319
+ - app/assets/images/protected/glyphicons-halflings-white.png
320
+ - app/assets/images/protected/glyphicons-halflings.png
321
+ - app/assets/images/protected/sort_asc.png
322
+ - app/assets/images/protected/sort_asc_disabled.png
323
+ - app/assets/images/protected/sort_both.png
324
+ - app/assets/images/protected/sort_desc.png
325
+ - app/assets/images/protected/sort_desc_disabled.png
326
+ - app/assets/images/protected/Sorting icons.psd
327
+ - app/assets/javascripts/protected/application.js
328
+ - app/assets/javascripts/protected/bootstrap.min.js
329
+ - app/assets/javascripts/protected/jquery.dataTables.min.js
330
+ - app/assets/stylesheets/protected/application.css
331
+ - app/assets/stylesheets/protected/bootstrap-responsive.min.css
332
+ - app/assets/stylesheets/protected/bootstrap.min.css
333
+ - app/controllers/protected/admin/protected_controller.rb
334
+ - app/controllers/protected/admin/users_controller.rb
335
+ - app/controllers/protected/application_controller.rb
336
+ - app/controllers/protected/passwords_controller.rb
337
+ - app/controllers/protected/sessions_controller.rb
338
+ - app/controllers/protected/users_controller.rb
339
+ - app/helpers/protected/application_helper.rb
340
+ - app/helpers/protected/passwords_helper.rb
341
+ - app/mailers/user_mailer.rb
342
+ - app/models/protected/old_password.rb
343
+ - app/models/protected/user.rb
344
+ - app/models/protected.rb
345
+ - app/views/layouts/protected/application.html.haml
346
+ - app/views/protected/admin/users/_form.html.haml
347
+ - app/views/protected/admin/users/_password_fields.html.haml
348
+ - app/views/protected/admin/users/_role_fields.html.haml
349
+ - app/views/protected/admin/users/confirm_delete.html.haml
350
+ - app/views/protected/admin/users/edit.html.haml
351
+ - app/views/protected/admin/users/index.html.haml
352
+ - app/views/protected/admin/users/new.html.haml
353
+ - app/views/protected/admin/users/show.html.haml
354
+ - app/views/protected/passwords/edit.html.haml
355
+ - app/views/protected/passwords/forgot_password.html.haml
356
+ - app/views/protected/passwords/new.html.haml
357
+ - app/views/protected/sessions/first_login.html.haml
358
+ - app/views/protected/sessions/new.html.haml
359
+ - app/views/protected/sessions/not_authorized.html.haml
360
+ - app/views/protected/users/_form.html.haml
361
+ - app/views/protected/users/edit.html.haml
362
+ - app/views/user_mailer/welcome_existing_user.haml
363
+ - app/views/user_mailer/welcome_login_instructions.html.haml
364
+ - app/views/user_mailer/welcome_password_instructions.haml
365
+ - config/initializers/devise.rb
366
+ - config/locales/devise.en.yml
367
+ - config/routes.rb
368
+ - db/migrate/20120418194256_devise_create_add_users.rb
369
+ - lib/generators/protected/install/install_generator.rb
370
+ - lib/generators/protected/templates/devise.rb
371
+ - lib/generators/protected/templates/README
372
+ - lib/generators/protected/USAGE
373
+ - lib/generators/protected/views/views_generator.rb
374
+ - lib/protected/devise_recoverable_extensions.rb
375
+ - lib/protected/engine.rb
376
+ - lib/protected/password_utils.rb
377
+ - lib/protected/version.rb
378
+ - lib/protected.rb
379
+ - lib/tasks/protected_tasks.rake
380
+ - MIT-LICENSE
381
+ - Rakefile
382
+ - README.rdoc
383
+ homepage: ''
384
+ licenses: []
385
+ post_install_message:
386
+ rdoc_options: []
387
+ require_paths:
388
+ - lib
389
+ required_ruby_version: !ruby/object:Gem::Requirement
390
+ none: false
391
+ requirements:
392
+ - - ! '>='
393
+ - !ruby/object:Gem::Version
394
+ version: '0'
395
+ segments:
396
+ - 0
397
+ hash: -2923849300726707462
398
+ required_rubygems_version: !ruby/object:Gem::Requirement
399
+ none: false
400
+ requirements:
401
+ - - ! '>='
402
+ - !ruby/object:Gem::Version
403
+ version: '0'
404
+ segments:
405
+ - 0
406
+ hash: -2923849300726707462
407
+ requirements: []
408
+ rubyforge_project:
409
+ rubygems_version: 1.8.21
410
+ signing_key:
411
+ specification_version: 3
412
+ summary: Protected is a gem for rails that gives you user authorization, administration,
413
+ auditing in a mountable Engine
414
+ test_files: []