model_token_auth 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a3527ddbe35d5c795b9d4de1d5a07f1f7e42dd24c3b65511ad9a481de22a4a6
4
- data.tar.gz: f2c38cf208b737e3f79a3ee65ce4f6df542778c55f7baba2886465be6f38c3a6
3
+ metadata.gz: 6b3168a54dc4b80feef92939e9c1ec3445fd0598bdd6394933650c3b615087a0
4
+ data.tar.gz: 585c716460869964bef679d24c117bfadc5345a084bbf11feaa50b859cf4002d
5
5
  SHA512:
6
- metadata.gz: 824f224bc51be881696672ce094905916b60d05246445627baaaee9ba86b1474e997f98693b4e04ae34ccc984d2962bb5f942d6ca06bf749d961e22602e7c24f
7
- data.tar.gz: 40037a69c81623ba04223a4826a5adc929d4e528f4892108c599b7575bac0e3036e3862555a6f287b0d8288dcf83ef899a1901837763e09ebc4f22cdfb98ec7f
6
+ metadata.gz: 7c664b48be846dc4b15ad2b3ccc92ddaf0b10cdcfadf75c3b080ef970ef0f86e23e973ea704eac5d68872ef2fcdd30851935367669cd1fbba2f18510b7709914
7
+ data.tar.gz: 182fb2d03f4741e75e3953b0c8e00bb49e8482c4082df69c44921a951bdad8038e02849bbfeb5b55720efda1d4514c9fbbe8ce9bc1d856324a7e4946dbaa8920
data/README.md CHANGED
@@ -1,8 +1,36 @@
1
1
  # ModelTokenAuth
2
2
 
3
- Generates tokens in models and authentication in the controllers.
3
+ Plugin RoR that generates tokens in models and authentication in the controllers.
4
4
 
5
- [![Build Status](https://travis-ci.org/armando1339/model_token_auth.svg?branch=develop)](https://travis-ci.org/armando1339/model_token_auth) [![Coverage Status](https://coveralls.io/repos/github/armando1339/model_token_auth/badge.svg?branch=develop)](https://coveralls.io/github/armando1339/model_token_auth?branch=develop)
5
+ [![Build Status](https://travis-ci.org/Kinedu/model_token_auth.svg?branch=develop)](https://travis-ci.org/Kinedu/model_token_auth) [![Coverage Status](https://coveralls.io/repos/github/armando1339/model_token_auth/badge.svg?branch=develop)](https://coveralls.io/github/armando1339/model_token_auth?branch=develop)
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'model_token_auth'
13
+ ```
14
+
15
+ Then execute:
16
+
17
+ ```bash
18
+ $ bundle
19
+ ```
20
+
21
+ In the root directory:
22
+
23
+ ```bash
24
+ $ rails generate access_token
25
+ ```
26
+
27
+ Last command will generate a migration, then:
28
+
29
+ ```bash
30
+ $ rake db:migrate
31
+ ```
32
+
33
+ Once the migration finishes, the models will be ready to be authenticated.
6
34
 
7
35
  ## Usage
8
36
 
@@ -15,7 +43,8 @@ The plugin also handles authentication in the controllers by inserting a generic
15
43
  `#authenticate!` method in ActionController::Base or ActionController::API that
16
44
  will verify the existence of the token and creates the `current_*` method.
17
45
 
18
- To authenticate some token it'll need adding the header `X-Auth-Token` in the request with a token as a value.
46
+ To authenticate some token it'll need adding the standard header `Authorization` in the request
47
+ with a token as a value.
19
48
 
20
49
  ### Models
21
50
 
@@ -89,33 +118,103 @@ module Centers
89
118
  end
90
119
  ```
91
120
 
92
- ## Installation
121
+ ## Rspec
93
122
 
94
- Add this line to your application's Gemfile:
123
+ To facilitate the testing of the controllers:
124
+
125
+ 1.- Add a new folder with the name of ```support``` in the root of ```spec```.
126
+
127
+ 2.- Create a ruby file with the name of model_token_auth_helper (```model_token_auth_helper.rb```).
128
+
129
+ 3.- Copy the following code:
95
130
 
96
131
  ```ruby
97
- gem 'model_token_auth'
98
- ```
132
+ # => model_token_auth_helper.rb
99
133
 
100
- Then execute:
134
+ module ModelTokenAuthHelper
101
135
 
102
- ```bash
103
- $ bundle
136
+ # => skip authentication but still creates the
137
+ # instance variable #current_<model-name>.
138
+ #
139
+ def skip_authentication!(access_token)
140
+ subject.class.skip_before_action(:authenticate!, raise: false)
141
+ subject.send(:authenticate_entity, access_token)
142
+ end
143
+
144
+ # => add the 'Authorization' header with the
145
+ # value of the token that is passed to it,
146
+ # giving it the necessary format.
147
+ #
148
+ def add_authorization_header(token)
149
+ request.env['HTTP_AUTHORIZATION'] =
150
+ ActionController::HttpAuthentication::Token.encode_credentials(token)
151
+ end
152
+ end
104
153
  ```
105
154
 
106
- In your project directory:
155
+ 4.- Require ModelTokenAuthHelper at top of the file ```spec_helper.rb``` and add the module to
156
+ the RSpec configuration:
107
157
 
108
- ```bash
109
- $ rails generate access_token
110
- ```
158
+ ```ruby
159
+ # => spec_helper.rb
111
160
 
112
- This will generate a migration, then:
161
+ require_relative 'support/model_token_auth_helper'
113
162
 
114
- ```bash
115
- $ rake db:migrate
163
+ RSpec.configure do |config|
164
+ ...
165
+
166
+ # => *
167
+ config.include ModelTokenAuthHelper, type: :controller
168
+ end
116
169
  ```
117
170
 
118
- Once the migration finishes, the models will be ready to be authenticated.
171
+ ### ModelTokenAuthHelper Usage
172
+
173
+ Here is described how to use the methods of the ModelTokenAuthHelper module that we created
174
+
175
+ ```ruby
176
+ require 'rails_helper'
177
+
178
+ RSpec.describe DummiesController do
179
+ describe 'controllers authentication' do
180
+
181
+ # => EXAMPLE 1
182
+ context '#authenticate!' do
183
+ before do
184
+
185
+ # You can use this method to add the
186
+ # necessary header and allow the control
187
+ # to do its magic
188
+ #
189
+ add_authorization_header(dummy.access_token.token)
190
+
191
+ get :index, format: :json
192
+ end
193
+
194
+ it { expect(response).to be_successful }
195
+
196
+ it { expect(subject.respond_to? :current_center).to be_truthy }
197
+ end
198
+
199
+ # => EXAMPLE 2
200
+ context 'skip #authenticate!' do
201
+ before do
202
+ # You can use this method to skip
203
+ # the #authenticate! method but still
204
+ # have access to the current_* variable
205
+ #
206
+ skip_authentication!(dummy.access_token)
207
+
208
+ get :index, format: :json
209
+ end
210
+
211
+ it { expect(response).to be_successful }
212
+
213
+ it { expect(subject.respond_to? :current_center).to be_truthy }
214
+ end
215
+ end
216
+ end
217
+ ```
119
218
 
120
219
  ## Contributing
121
220
 
@@ -132,4 +231,5 @@ Make a pull request:
132
231
  Please write tests if necessary.
133
232
 
134
233
  ## License
234
+
135
235
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -1,10 +1,10 @@
1
1
  module ModelTokenAuth
2
2
  module ControllersAuth
3
3
  def authenticate!
4
- token = request.headers['HTTP_X_AUTH_TOKEN']
4
+ token = request.headers['HTTP_AUTHORIZATION']
5
5
 
6
6
  if token.present?
7
- token_ = AccessToken.find_by_token(token)
7
+ token_ = AccessToken.find_by_token(parses_the_token(token))
8
8
 
9
9
  if token_&.entity_type?
10
10
  authenticate_entity(token_)
@@ -18,6 +18,7 @@ module ModelTokenAuth
18
18
 
19
19
  private
20
20
 
21
+ # => *
21
22
  def authenticate_entity(token)
22
23
  return false if token.entity_type.nil?
23
24
  entity = token.entity_type.tableize.singularize
@@ -25,5 +26,10 @@ module ModelTokenAuth
25
26
  self.class.send(:attr_reader, "current_#{entity}")
26
27
  instance_variable_set("@current_#{entity}", token.entity)
27
28
  end
29
+
30
+ # => *
31
+ def parses_the_token(token)
32
+ token.split.last.remove('token=').parameterize
33
+ end
28
34
  end
29
35
  end
@@ -1,3 +1,3 @@
1
1
  module ModelTokenAuth
2
- VERSION = '1.0.3'
2
+ VERSION = '1.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: model_token_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Armando Alejandre
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-23 00:00:00.000000000 Z
11
+ date: 2019-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -108,7 +108,22 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
- description: Generates tokens in models and authentication in the controllers.
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Plugin RoR that generates tokens in models and authentication in the
126
+ controllers.
112
127
  email:
113
128
  - armando1339@gmail.com
114
129
  executables: []
@@ -130,10 +145,11 @@ files:
130
145
  - lib/model_token_auth/token_generator.rb
131
146
  - lib/model_token_auth/version.rb
132
147
  - lib/tasks/auth_api_tasks.rake
133
- homepage: https://github.com/armando1339/model_token_auth
148
+ homepage: https://www.kinedu.com/
134
149
  licenses:
135
150
  - MIT
136
151
  metadata:
152
+ source_code_uri: https://github.com/Kinedu/model_token_auth
137
153
  allowed_push_host: https://rubygems.org
138
154
  post_install_message:
139
155
  rdoc_options: []
@@ -154,5 +170,5 @@ rubyforge_project:
154
170
  rubygems_version: 2.7.8
155
171
  signing_key:
156
172
  specification_version: 4
157
- summary: Generates tokens in models and authentication in the controllers.
173
+ summary: Plugin RoR that generates tokens in models and authentication in the controllers.
158
174
  test_files: []