grape_token_auth 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +13 -0
- data/README.md +4 -3
- data/lib/grape_token_auth.rb +4 -0
- data/lib/grape_token_auth/api_helpers.rb +1 -0
- data/lib/grape_token_auth/apis/confirmation_api.rb +2 -1
- data/lib/grape_token_auth/apis/omniauth_api.rb +13 -3
- data/lib/grape_token_auth/apis/password_api.rb +2 -1
- data/lib/grape_token_auth/apis/registration/endpoint_definer.rb +38 -0
- data/lib/grape_token_auth/apis/registration/helpers.rb +61 -0
- data/lib/grape_token_auth/apis/registration_api.rb +3 -68
- data/lib/grape_token_auth/apis/session_api.rb +6 -5
- data/lib/grape_token_auth/apis/token_validation_api.rb +1 -0
- data/lib/grape_token_auth/authentication_header.rb +1 -0
- data/lib/grape_token_auth/authorizer_data.rb +1 -0
- data/lib/grape_token_auth/configuration.rb +1 -0
- data/lib/grape_token_auth/exceptions.rb +1 -0
- data/lib/grape_token_auth/key_generator.rb +1 -0
- data/lib/grape_token_auth/lookup_token.rb +1 -0
- data/lib/grape_token_auth/mail/mail.rb +1 -0
- data/lib/grape_token_auth/mail/message_base.rb +1 -0
- data/lib/grape_token_auth/mail/messages/confirmation/confirmation_email.rb +1 -0
- data/lib/grape_token_auth/mail/messages/password_reset/password_reset_email.rb +1 -0
- data/lib/grape_token_auth/mail/smtp_mailer.rb +1 -0
- data/lib/grape_token_auth/middleware.rb +1 -0
- data/lib/grape_token_auth/mount_helpers.rb +1 -0
- data/lib/grape_token_auth/omniauth/omniauth_failure_html.rb +1 -0
- data/lib/grape_token_auth/omniauth/omniauth_html_base.rb +1 -0
- data/lib/grape_token_auth/omniauth/omniauth_resource.rb +1 -0
- data/lib/grape_token_auth/omniauth/omniauth_success_html.rb +1 -0
- data/lib/grape_token_auth/orm_integrations/active_record_token_auth.rb +14 -4
- data/lib/grape_token_auth/resource/resource_creator.rb +1 -0
- data/lib/grape_token_auth/resource/resource_crud_base.rb +3 -2
- data/lib/grape_token_auth/resource/resource_finder.rb +1 -0
- data/lib/grape_token_auth/resource/resource_updater.rb +1 -0
- data/lib/grape_token_auth/token.rb +1 -0
- data/lib/grape_token_auth/token_authentication.rb +1 -0
- data/lib/grape_token_auth/token_authorizer.rb +1 -0
- data/lib/grape_token_auth/unauthorized_middleware.rb +1 -0
- data/lib/grape_token_auth/utility.rb +1 -0
- data/lib/grape_token_auth/version.rb +2 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9eb52d69bb4f5d993b5dabb72d6e69c1e6aab019
|
4
|
+
data.tar.gz: 92258e86affff9fc05ef494a80f242510f9802fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1903c2ca38a0b489c469805efef6c2b5a569eafc0838a76c72f65d2a4b440779f314f9101b52c006c03cf7dc417cdf485ccab7b623f4737eae94a3c16255e7f6
|
7
|
+
data.tar.gz: e5725e0048fe7549bf9054ec7ddaa309bd3ed94ef862d796a116abe131cbd6681d3832b63d5e0ffe35df6238e09c78ad6a0688f9becabd6a8143510aae3ab9ff
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.3.1
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#Changelog
|
2
|
+
|
3
|
+
## Current
|
4
|
+
|
5
|
+
- Add frozen string comments for ruby 2.3
|
6
|
+
- Fix several bugs around rails sign out and session
|
7
|
+
- Fix insensitive_keys bug with devise compatability
|
8
|
+
- Fix some compatability issues with Grape version 0.16
|
9
|
+
|
10
|
+
|
11
|
+
## v0.1.0 Initial Release (2015-11-10)
|
12
|
+
|
13
|
+
- Majority of devise_token_auth parity
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# GrapeTokenAuth
|
2
|
-
[![Code Climate GPA][11]][12] [![Test Coverage][13]][14] [![Circle CI][15]][16]
|
2
|
+
[![Gem Version][17]][18] [![Code Climate GPA][11]][12] [![Test Coverage][13]][14] [![Circle CI][15]][16]
|
3
3
|
|
4
4
|
GrapeTokenAuth is a token authentication solution for grape. It is compatible
|
5
5
|
with [ng-token-auth][1] (for _angular_) and [j-toker][2] (for _jQuery_), and is
|
@@ -79,7 +79,6 @@ In _rails_, you will need to setup warden as so:
|
|
79
79
|
config.middleware.insert_after ActionDispatch::Flash, Warden::Manager do |manager|
|
80
80
|
manager.failure_app = GrapeTokenAuth::UnauthorizedMiddleware
|
81
81
|
manager.default_scope = :user
|
82
|
-
GrapeTokenAuth.configure_warden(manager)
|
83
82
|
end
|
84
83
|
```
|
85
84
|
|
@@ -145,7 +144,7 @@ class TestApp < Grape::API
|
|
145
144
|
# ...
|
146
145
|
|
147
146
|
mount_registration(to: '/auth', for: :user)
|
148
|
-
|
147
|
+
mount_sessions(to: '/auth', for: :user)
|
149
148
|
mount_token_validation(to: '/auth', for: :user)
|
150
149
|
mount_confirmation(to: '/auth', for: :user)
|
151
150
|
|
@@ -244,6 +243,8 @@ To run tests, you will need postgres to be setup and configured correctly. Run
|
|
244
243
|
[14]: https://codeclimate.com/github/mcordell/grape_token_auth/coverage
|
245
244
|
[15]: https://circleci.com/gh/mcordell/grape_token_auth.svg?style=svg
|
246
245
|
[16]: https://circleci.com/gh/mcordell/grape_token_auth
|
246
|
+
[17]: https://badge.fury.io/rb/grape_token_auth.svg
|
247
|
+
[18]: https://badge.fury.io/rb/grape_token_auth
|
247
248
|
[contributing]: https://github.com/mcordell/grape_token_auth/blob/master/CONTRIBUTING.md
|
248
249
|
[gta-wiki]: https://github.com/mcordell/grape_token_auth/wiki
|
249
250
|
[demo-repo]: https://github.com/mcordell/grape_token_auth_demo
|
data/lib/grape_token_auth.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'bcrypt'
|
2
3
|
require 'forwardable'
|
3
4
|
require 'grape'
|
@@ -7,6 +8,9 @@ require 'grape_token_auth/mail/message_base'
|
|
7
8
|
require 'grape_token_auth/omniauth/omniauth_html_base'
|
8
9
|
require 'grape_token_auth/resource/resource_crud_base'
|
9
10
|
|
11
|
+
require 'grape_token_auth/apis/registration/endpoint_definer'
|
12
|
+
require 'grape_token_auth/apis/registration/helpers'
|
13
|
+
|
10
14
|
require 'grape_token_auth/api_helpers'
|
11
15
|
require 'grape_token_auth/apis/confirmation_api'
|
12
16
|
require 'grape_token_auth/apis/omniauth_api'
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module GrapeTokenAuth
|
2
3
|
# Module that contains the majority of the email confirming functionality.
|
3
4
|
# This module can be included in a Grape::API class that defines a
|
@@ -10,7 +11,7 @@ module GrapeTokenAuth
|
|
10
11
|
base.resource_scope)
|
11
12
|
resource = resource_class.confirm_by_token(params[:confirmation_token])
|
12
13
|
|
13
|
-
if resource.persisted?
|
14
|
+
if resource && resource.persisted?
|
14
15
|
token = Token.new
|
15
16
|
|
16
17
|
resource.tokens[token.client_id] = {
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module GrapeTokenAuth
|
2
3
|
# Module that contains the majority of the OmniAuth functionality. This module
|
3
4
|
# can be included in a Grape::API class that defines a resource_scope and
|
@@ -6,7 +7,14 @@ module GrapeTokenAuth
|
|
6
7
|
def self.included(base)
|
7
8
|
base.helpers do
|
8
9
|
def auth_hash
|
9
|
-
@auth_hash ||=
|
10
|
+
@auth_hash ||= begin
|
11
|
+
hash = request.env['rack.session'].delete('gta.omniauth.auth')
|
12
|
+
|
13
|
+
# While using Grape on Rails, #session is an ActionDispatch::Request::Session class,
|
14
|
+
# which does not preserve OmniAuth::AuthHash class @ 'gta.omniauth.auth' key,
|
15
|
+
# converting it to Hash. Restoring
|
16
|
+
hash.kind_of?(::OmniAuth::AuthHash) ? hash : ::OmniAuth::AuthHash.new(hash)
|
17
|
+
end
|
10
18
|
end
|
11
19
|
|
12
20
|
def omniauth_params
|
@@ -106,8 +114,10 @@ module GrapeTokenAuth
|
|
106
114
|
helpers do
|
107
115
|
def redirect_route_from_api(api, provider)
|
108
116
|
prefix = api.routes.find do |r|
|
109
|
-
|
110
|
-
|
117
|
+
minor = /0\.(\d\d).\d+/.match(Grape::VERSION)[1].to_i
|
118
|
+
path = minor >= 16 ? r.origin : r.path
|
119
|
+
%r{/:provider/callback}.match(path)
|
120
|
+
end.path.split(%r{/:provider})[0]
|
111
121
|
Pathname.new(prefix).join(provider, 'callback.json').to_s
|
112
122
|
end
|
113
123
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module GrapeTokenAuth
|
2
3
|
# Module that contains the majority of the password reseting functionality.
|
3
4
|
# This module can be included in a Grape::API class that defines a
|
@@ -32,7 +33,7 @@ module GrapeTokenAuth
|
|
32
33
|
redirect_url ||= GrapeTokenAuth.configuration.default_password_reset_url
|
33
34
|
throw_unauthorized('Missing redirect url.') unless redirect_url
|
34
35
|
resource = ResourceFinder.find(base.resource_scope, params)
|
35
|
-
edit_path = routes[0].
|
36
|
+
edit_path = routes[0].path.gsub(/\(.*\)/, '') + "/edit"
|
36
37
|
if resource
|
37
38
|
resource.send_reset_password_instructions(
|
38
39
|
provider: 'email',
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module GrapeTokenAuth
|
3
|
+
module Registration
|
4
|
+
class EndpointDefiner
|
5
|
+
def self.define_endpoints(api)
|
6
|
+
define_post(api)
|
7
|
+
define_delete(api)
|
8
|
+
define_put(api)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.define_post(api)
|
12
|
+
api.post '/' do
|
13
|
+
return present empty_params_error if empty_params_error
|
14
|
+
return present invalid_redirect_error if invalid_redirect_error
|
15
|
+
present_create(params, api.resource_scope)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.define_delete(api)
|
20
|
+
api.delete do
|
21
|
+
user = find_resource(env, api.resource_scope)
|
22
|
+
return present bad_request(['resource not found.'], 404) unless user
|
23
|
+
user.delete
|
24
|
+
status 200
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.define_put(api)
|
29
|
+
api.put do
|
30
|
+
return present empty_params_error if empty_params_error
|
31
|
+
resource = find_resource(env, api.resource_scope)
|
32
|
+
return present no_resource unless resource
|
33
|
+
present_update(params, resource, api.resource_scope)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module GrapeTokenAuth
|
3
|
+
module Registration
|
4
|
+
module Helpers
|
5
|
+
def bad_request(messages, code = 422)
|
6
|
+
status(code)
|
7
|
+
{ 'status' => 'error', 'error' => messages.join(',') }
|
8
|
+
end
|
9
|
+
|
10
|
+
def invalid_redirect_error
|
11
|
+
white_list = GrapeTokenAuth.configuration.redirect_whitelist
|
12
|
+
return unless white_list
|
13
|
+
url_valid = white_list.include?(params['confirm_success_url'])
|
14
|
+
errors = ['redirect url is not in whitelist']
|
15
|
+
bad_request(errors, 403) unless url_valid
|
16
|
+
end
|
17
|
+
|
18
|
+
def present_update(params, resource, scope)
|
19
|
+
updater = ResourceUpdater.new(resource, params, nil, scope)
|
20
|
+
if updater.update!
|
21
|
+
present_success(updater.resource)
|
22
|
+
else
|
23
|
+
present bad_request(updater.errors, 403)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def present_create(params, scope)
|
28
|
+
creator = ResourceCreator.new(params, nil, scope)
|
29
|
+
if creator.create!
|
30
|
+
present_success(creator.resource)
|
31
|
+
else
|
32
|
+
present bad_request(creator.errors, 403)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def empty_params_error
|
37
|
+
if params.empty?
|
38
|
+
errors = ['email, password, password_confirmation \
|
39
|
+
params are required']
|
40
|
+
bad_request errors, 422
|
41
|
+
else
|
42
|
+
false
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def no_resource
|
47
|
+
bad_request(['resource not found.'], 404)
|
48
|
+
end
|
49
|
+
|
50
|
+
def find_resource(env, mapping)
|
51
|
+
token_authorizer = TokenAuthorizer.new(AuthorizerData.from_env(env))
|
52
|
+
token_authorizer.find_resource(mapping)
|
53
|
+
end
|
54
|
+
|
55
|
+
def present_success(resource)
|
56
|
+
status 200
|
57
|
+
present(data: resource)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -1,76 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module GrapeTokenAuth
|
2
3
|
module RegistrationAPICore
|
3
4
|
def self.included(base)
|
4
5
|
base.helpers do
|
5
|
-
|
6
|
-
status(code)
|
7
|
-
{ 'status' => 'error', 'error' => messages.join(',') }
|
8
|
-
end
|
9
|
-
|
10
|
-
def validate_redirect_url!
|
11
|
-
white_list = GrapeTokenAuth.configuration.redirect_whitelist
|
12
|
-
return unless white_list
|
13
|
-
url_valid = white_list.include?(params['confirm_success_url'])
|
14
|
-
errors = ['redirect url is not in whitelist']
|
15
|
-
bad_request(errors, 403) unless url_valid
|
16
|
-
end
|
17
|
-
|
18
|
-
def validate_not_empty!
|
19
|
-
if params.empty?
|
20
|
-
errors = ['email, password, password_confirmation \
|
21
|
-
params are required']
|
22
|
-
bad_request errors, 422
|
23
|
-
else
|
24
|
-
false
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def find_resource(env, mapping)
|
29
|
-
token_authorizer = TokenAuthorizer.new(AuthorizerData.from_env(env))
|
30
|
-
token_authorizer.find_resource(mapping)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
base.post '/' do
|
35
|
-
empty_params_error = validate_not_empty!
|
36
|
-
return present(empty_params_error) if empty_params_error
|
37
|
-
redirect_error = validate_redirect_url!
|
38
|
-
return present(redirect_error) if redirect_error
|
39
|
-
mapping = base.resource_scope
|
40
|
-
configuration = GrapeTokenAuth.configuration
|
41
|
-
creator = ResourceCreator.new(params, configuration, mapping)
|
42
|
-
if creator.create!
|
43
|
-
status 200
|
44
|
-
present(data: creator.resource)
|
45
|
-
else
|
46
|
-
present bad_request(creator.errors, 403)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
base.delete do
|
51
|
-
user = find_resource(env, base.resource_scope)
|
52
|
-
return present bad_request(['resource not found.'], 404) unless user
|
53
|
-
user.delete
|
54
|
-
status 200
|
55
|
-
end
|
56
|
-
|
57
|
-
base.put do
|
58
|
-
empty_params_error = validate_not_empty!
|
59
|
-
return present(empty_params_error) if empty_params_error
|
60
|
-
resource = find_resource(env, base.resource_scope)
|
61
|
-
return present bad_request(['resource not found.'], 404) unless resource
|
62
|
-
|
63
|
-
updater = ResourceUpdater.new(resource,
|
64
|
-
params,
|
65
|
-
GrapeTokenAuth.configuration,
|
66
|
-
base.resource_scope)
|
67
|
-
if updater.update!
|
68
|
-
status 200
|
69
|
-
present(data: updater.resource)
|
70
|
-
else
|
71
|
-
present bad_request(updater.errors, 403)
|
72
|
-
end
|
6
|
+
include GrapeTokenAuth::Registration::Helpers
|
73
7
|
end
|
8
|
+
GrapeTokenAuth::Registration::EndpointDefiner.define_endpoints(base)
|
74
9
|
|
75
10
|
base.format :json
|
76
11
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module GrapeTokenAuth
|
2
3
|
module SessionsAPICore
|
3
4
|
def self.included(base)
|
@@ -26,10 +27,7 @@ module GrapeTokenAuth
|
|
26
27
|
data = AuthorizerData.load_from_env_or_create(env)
|
27
28
|
env['rack.session'] ||= {}
|
28
29
|
data.store_resource(resource, base.resource_scope)
|
29
|
-
|
30
|
-
auth_header.headers.each do |key, value|
|
31
|
-
header key.to_s, value.to_s
|
32
|
-
end
|
30
|
+
data.authed_with_token = false
|
33
31
|
status 200
|
34
32
|
present data: resource
|
35
33
|
end
|
@@ -39,7 +37,10 @@ module GrapeTokenAuth
|
|
39
37
|
resource = find_resource(data, base.resource_scope)
|
40
38
|
|
41
39
|
if resource
|
42
|
-
|
40
|
+
# Rails prepends 'CLIENT' header with 'HTTP_' prefix, so to make sure we address to
|
41
|
+
# proper header, better use normalized version stored at <tt>data</tt>
|
42
|
+
# See more: http://stackoverflow.com/a/26936364/1592582
|
43
|
+
resource.tokens.delete(data.client_id)
|
43
44
|
data.skip_auth_headers = true
|
44
45
|
resource.save
|
45
46
|
status 200
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module GrapeTokenAuth
|
2
3
|
module ActiveRecord
|
3
4
|
module TokenAuth
|
@@ -15,6 +16,15 @@ module GrapeTokenAuth
|
|
15
16
|
base.before_update :synchronize_email_and_uid
|
16
17
|
|
17
18
|
class << base
|
19
|
+
def case_insensitive_keys
|
20
|
+
@case_insensitive_keys ||
|
21
|
+
if Object.const_defined?(:Devise)
|
22
|
+
Object.const_get(:Devise).case_insensitive_keys
|
23
|
+
else
|
24
|
+
[:email]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
18
28
|
def exists_in_column?(column, value)
|
19
29
|
where(column => value).count > 0
|
20
30
|
end
|
@@ -59,7 +69,7 @@ module GrapeTokenAuth
|
|
59
69
|
|
60
70
|
attr_writer :reset_token_lifespan
|
61
71
|
attr_writer :confirmation_token_lifespan
|
62
|
-
|
72
|
+
attr_writer :case_insensitive_keys
|
63
73
|
end
|
64
74
|
end
|
65
75
|
|
@@ -81,8 +91,8 @@ module GrapeTokenAuth
|
|
81
91
|
def password_confirmation_matches
|
82
92
|
return if password.present? && password_confirmation.present? &&
|
83
93
|
password == password_confirmation
|
84
|
-
errors.add(:
|
85
|
-
'password confirmation
|
94
|
+
errors.add(:base,
|
95
|
+
'password and password confirmation do not match')
|
86
96
|
end
|
87
97
|
|
88
98
|
def create_new_auth_token(client_id = nil)
|
@@ -192,7 +202,7 @@ module GrapeTokenAuth
|
|
192
202
|
|
193
203
|
def build_auth_url(url, params)
|
194
204
|
url = URI(url)
|
195
|
-
expiry = tokens[params[:client_id]][:expiry]
|
205
|
+
expiry = tokens[params[:client_id]].with_indifferent_access[:expiry]
|
196
206
|
url.query = params.merge(uid: uid, expiry: expiry).to_query
|
197
207
|
url.to_s
|
198
208
|
end
|
@@ -1,9 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module GrapeTokenAuth
|
2
3
|
class ResourceCrudBase
|
3
4
|
attr_reader :resource, :errors, :scope
|
4
5
|
|
5
|
-
def initialize(params, configuration, scope = :user)
|
6
|
-
@configuration = configuration
|
6
|
+
def initialize(params, configuration = nil, scope = :user)
|
7
|
+
@configuration = configuration || GrapeTokenAuth.configuration
|
7
8
|
@params = params
|
8
9
|
@errors = []
|
9
10
|
@scope = scope
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grape_token_auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Cordell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grape
|
@@ -259,6 +259,7 @@ files:
|
|
259
259
|
- ".rspec"
|
260
260
|
- ".ruby-version"
|
261
261
|
- ".travis.yml"
|
262
|
+
- CHANGELOG.md
|
262
263
|
- CONTRIBUTING.md
|
263
264
|
- Gemfile
|
264
265
|
- LICENSE.txt
|
@@ -275,6 +276,8 @@ files:
|
|
275
276
|
- lib/grape_token_auth/apis/confirmation_api.rb
|
276
277
|
- lib/grape_token_auth/apis/omniauth_api.rb
|
277
278
|
- lib/grape_token_auth/apis/password_api.rb
|
279
|
+
- lib/grape_token_auth/apis/registration/endpoint_definer.rb
|
280
|
+
- lib/grape_token_auth/apis/registration/helpers.rb
|
278
281
|
- lib/grape_token_auth/apis/registration_api.rb
|
279
282
|
- lib/grape_token_auth/apis/session_api.rb
|
280
283
|
- lib/grape_token_auth/apis/token_validation_api.rb
|
@@ -331,9 +334,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
331
334
|
version: '0'
|
332
335
|
requirements: []
|
333
336
|
rubyforge_project:
|
334
|
-
rubygems_version: 2.
|
337
|
+
rubygems_version: 2.5.1
|
335
338
|
signing_key:
|
336
339
|
specification_version: 4
|
337
340
|
summary: Token auth for grape apps
|
338
341
|
test_files: []
|
339
|
-
has_rdoc:
|