knock 1.0.0.rc1

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 (60) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +37 -0
  4. data/app/controllers/knock/application_controller.rb +11 -0
  5. data/app/controllers/knock/auth_token_controller.rb +28 -0
  6. data/app/model/knock/auth_token.rb +31 -0
  7. data/config/routes.rb +3 -0
  8. data/lib/knock.rb +4 -0
  9. data/lib/knock/authenticable.rb +13 -0
  10. data/lib/knock/engine.rb +6 -0
  11. data/lib/knock/version.rb +3 -0
  12. data/lib/tasks/knock_tasks.rake +4 -0
  13. data/test/controllers/knock/auth_token_controller_test.rb +28 -0
  14. data/test/dummy/README.rdoc +28 -0
  15. data/test/dummy/Rakefile +6 -0
  16. data/test/dummy/app/assets/javascripts/application.js +13 -0
  17. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  18. data/test/dummy/app/controllers/application_controller.rb +7 -0
  19. data/test/dummy/app/controllers/protected_resources_controller.rb +7 -0
  20. data/test/dummy/app/helpers/application_helper.rb +2 -0
  21. data/test/dummy/app/models/user.rb +3 -0
  22. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  23. data/test/dummy/bin/bundle +3 -0
  24. data/test/dummy/bin/rails +4 -0
  25. data/test/dummy/bin/rake +4 -0
  26. data/test/dummy/bin/setup +29 -0
  27. data/test/dummy/config.ru +4 -0
  28. data/test/dummy/config/application.rb +26 -0
  29. data/test/dummy/config/boot.rb +5 -0
  30. data/test/dummy/config/database.yml +25 -0
  31. data/test/dummy/config/environment.rb +5 -0
  32. data/test/dummy/config/environments/development.rb +41 -0
  33. data/test/dummy/config/environments/production.rb +79 -0
  34. data/test/dummy/config/environments/test.rb +42 -0
  35. data/test/dummy/config/initializers/assets.rb +11 -0
  36. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  37. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  38. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  39. data/test/dummy/config/initializers/inflections.rb +16 -0
  40. data/test/dummy/config/initializers/mime_types.rb +4 -0
  41. data/test/dummy/config/initializers/session_store.rb +3 -0
  42. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  43. data/test/dummy/config/locales/en.yml +23 -0
  44. data/test/dummy/config/routes.rb +4 -0
  45. data/test/dummy/config/secrets.yml +22 -0
  46. data/test/dummy/db/migrate/20150713101607_create_users.rb +10 -0
  47. data/test/dummy/db/schema.rb +23 -0
  48. data/test/dummy/db/test.sqlite3 +0 -0
  49. data/test/dummy/log/test.log +2853 -0
  50. data/test/dummy/public/404.html +67 -0
  51. data/test/dummy/public/422.html +67 -0
  52. data/test/dummy/public/500.html +66 -0
  53. data/test/dummy/public/favicon.ico +0 -0
  54. data/test/dummy/test/controllers/protected_resources_controller_test.rb +27 -0
  55. data/test/dummy/test/fixtures/users.yml +9 -0
  56. data/test/dummy/test/models/user_test.rb +4 -0
  57. data/test/fixtures/users.yml +9 -0
  58. data/test/knock_test.rb +4 -0
  59. data/test/test_helper.rb +23 -0
  60. metadata +206 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class ProtectedResourcesControllerTest < ActionController::TestCase
4
+ def authenticate
5
+ @user = users(:one)
6
+ @token = Knock::AuthToken.new(payload: { user_id: @user.id }).token
7
+ @request.env['HTTP_AUTHORIZATION'] = "Bearer #{@token}"
8
+ end
9
+
10
+ test "responds with unauthorized" do
11
+ get :index
12
+ assert_response :unauthorized
13
+ end
14
+
15
+ test "responds with success if authenticated" do
16
+ authenticate
17
+ get :index
18
+ assert_response :success
19
+ end
20
+
21
+ test "has a current_user after authentication" do
22
+ authenticate
23
+ get :index
24
+ assert_response :success
25
+ assert @controller.current_user.id == @user.id
26
+ end
27
+ end
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ one:
4
+ email: one@example.net
5
+ password_digest: <%= BCrypt::Password.create('secret', cost: 4) %>
6
+
7
+ two:
8
+ email: two@example.net
9
+ password_digest: <%= BCrypt::Password.create('secret', cost: 4) %>
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < ActiveSupport::TestCase
4
+ end
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ one:
4
+ email: one@example.net
5
+ password_digest: <%= BCrypt::Password.create('secret', cost: 4) %>
6
+
7
+ two:
8
+ email: two@example.net
9
+ password_digest: <%= BCrypt::Password.create('secret', cost: 4) %>
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class SimsimTest < ActiveSupport::TestCase
4
+ end
@@ -0,0 +1,23 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
4
+ # Configure Rails Environment
5
+ ENV["RAILS_ENV"] = "test"
6
+
7
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
8
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
9
+ ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
10
+ require "rails/test_help"
11
+
12
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
13
+ # to be shown.
14
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
15
+
16
+ # Load support files
17
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
18
+
19
+ # Load fixtures from the engine
20
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
21
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
22
+ ActiveSupport::TestCase.fixtures :all
23
+ end
metadata ADDED
@@ -0,0 +1,206 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: knock
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.rc1
5
+ platform: ruby
6
+ authors:
7
+ - Arnaud MESUREUR
8
+ - Ghjuvan-Carlu BIANCHI
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-07-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '4.2'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '4.2'
28
+ - !ruby/object:Gem::Dependency
29
+ name: jwt
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.5'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.5'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bcrypt
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '3.1'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '3.1'
56
+ - !ruby/object:Gem::Dependency
57
+ name: sqlite3
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.3'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.3'
70
+ description: Authentication solution for Rails based on JWT (http://jwt.io/)
71
+ email:
72
+ - arnaud.mesureur@gmail.com
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - MIT-LICENSE
78
+ - Rakefile
79
+ - app/controllers/knock/application_controller.rb
80
+ - app/controllers/knock/auth_token_controller.rb
81
+ - app/model/knock/auth_token.rb
82
+ - config/routes.rb
83
+ - lib/knock.rb
84
+ - lib/knock/authenticable.rb
85
+ - lib/knock/engine.rb
86
+ - lib/knock/version.rb
87
+ - lib/tasks/knock_tasks.rake
88
+ - test/controllers/knock/auth_token_controller_test.rb
89
+ - test/dummy/README.rdoc
90
+ - test/dummy/Rakefile
91
+ - test/dummy/app/assets/javascripts/application.js
92
+ - test/dummy/app/assets/stylesheets/application.css
93
+ - test/dummy/app/controllers/application_controller.rb
94
+ - test/dummy/app/controllers/protected_resources_controller.rb
95
+ - test/dummy/app/helpers/application_helper.rb
96
+ - test/dummy/app/models/user.rb
97
+ - test/dummy/app/views/layouts/application.html.erb
98
+ - test/dummy/bin/bundle
99
+ - test/dummy/bin/rails
100
+ - test/dummy/bin/rake
101
+ - test/dummy/bin/setup
102
+ - test/dummy/config.ru
103
+ - test/dummy/config/application.rb
104
+ - test/dummy/config/boot.rb
105
+ - test/dummy/config/database.yml
106
+ - test/dummy/config/environment.rb
107
+ - test/dummy/config/environments/development.rb
108
+ - test/dummy/config/environments/production.rb
109
+ - test/dummy/config/environments/test.rb
110
+ - test/dummy/config/initializers/assets.rb
111
+ - test/dummy/config/initializers/backtrace_silencers.rb
112
+ - test/dummy/config/initializers/cookies_serializer.rb
113
+ - test/dummy/config/initializers/filter_parameter_logging.rb
114
+ - test/dummy/config/initializers/inflections.rb
115
+ - test/dummy/config/initializers/mime_types.rb
116
+ - test/dummy/config/initializers/session_store.rb
117
+ - test/dummy/config/initializers/wrap_parameters.rb
118
+ - test/dummy/config/locales/en.yml
119
+ - test/dummy/config/routes.rb
120
+ - test/dummy/config/secrets.yml
121
+ - test/dummy/db/migrate/20150713101607_create_users.rb
122
+ - test/dummy/db/schema.rb
123
+ - test/dummy/db/test.sqlite3
124
+ - test/dummy/log/test.log
125
+ - test/dummy/public/404.html
126
+ - test/dummy/public/422.html
127
+ - test/dummy/public/500.html
128
+ - test/dummy/public/favicon.ico
129
+ - test/dummy/test/controllers/protected_resources_controller_test.rb
130
+ - test/dummy/test/fixtures/users.yml
131
+ - test/dummy/test/models/user_test.rb
132
+ - test/fixtures/users.yml
133
+ - test/knock_test.rb
134
+ - test/test_helper.rb
135
+ homepage: https://github.com/nsarno/knock
136
+ licenses:
137
+ - MIT
138
+ metadata: {}
139
+ post_install_message:
140
+ rdoc_options: []
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">"
151
+ - !ruby/object:Gem::Version
152
+ version: 1.3.1
153
+ requirements: []
154
+ rubyforge_project:
155
+ rubygems_version: 2.4.4
156
+ signing_key:
157
+ specification_version: 4
158
+ summary: Seamless JWT authentication for Rails API.
159
+ test_files:
160
+ - test/controllers/knock/auth_token_controller_test.rb
161
+ - test/dummy/app/assets/javascripts/application.js
162
+ - test/dummy/app/assets/stylesheets/application.css
163
+ - test/dummy/app/controllers/application_controller.rb
164
+ - test/dummy/app/controllers/protected_resources_controller.rb
165
+ - test/dummy/app/helpers/application_helper.rb
166
+ - test/dummy/app/models/user.rb
167
+ - test/dummy/app/views/layouts/application.html.erb
168
+ - test/dummy/bin/bundle
169
+ - test/dummy/bin/rails
170
+ - test/dummy/bin/rake
171
+ - test/dummy/bin/setup
172
+ - test/dummy/config/application.rb
173
+ - test/dummy/config/boot.rb
174
+ - test/dummy/config/database.yml
175
+ - test/dummy/config/environment.rb
176
+ - test/dummy/config/environments/development.rb
177
+ - test/dummy/config/environments/production.rb
178
+ - test/dummy/config/environments/test.rb
179
+ - test/dummy/config/initializers/assets.rb
180
+ - test/dummy/config/initializers/backtrace_silencers.rb
181
+ - test/dummy/config/initializers/cookies_serializer.rb
182
+ - test/dummy/config/initializers/filter_parameter_logging.rb
183
+ - test/dummy/config/initializers/inflections.rb
184
+ - test/dummy/config/initializers/mime_types.rb
185
+ - test/dummy/config/initializers/session_store.rb
186
+ - test/dummy/config/initializers/wrap_parameters.rb
187
+ - test/dummy/config/locales/en.yml
188
+ - test/dummy/config/routes.rb
189
+ - test/dummy/config/secrets.yml
190
+ - test/dummy/config.ru
191
+ - test/dummy/db/migrate/20150713101607_create_users.rb
192
+ - test/dummy/db/schema.rb
193
+ - test/dummy/db/test.sqlite3
194
+ - test/dummy/log/test.log
195
+ - test/dummy/public/404.html
196
+ - test/dummy/public/422.html
197
+ - test/dummy/public/500.html
198
+ - test/dummy/public/favicon.ico
199
+ - test/dummy/Rakefile
200
+ - test/dummy/README.rdoc
201
+ - test/dummy/test/controllers/protected_resources_controller_test.rb
202
+ - test/dummy/test/fixtures/users.yml
203
+ - test/dummy/test/models/user_test.rb
204
+ - test/fixtures/users.yml
205
+ - test/knock_test.rb
206
+ - test/test_helper.rb