solidus_jwt 0.0.1.pre

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 58ce250f90cb43c3a8b38d57c4e0684b52230113
4
+ data.tar.gz: ee45f49f53bd03731f22cd8a2ecabf55eff81757
5
+ SHA512:
6
+ metadata.gz: caecff57b135bd8a42b380f60d1d4f42a7f03f80222dccfca99232be7e9897c63aa298c044f2a4cd21817a8fbe90b9272568f4a9d75efd25c8da49d97a246d95
7
+ data.tar.gz: fce68065432fe5016cecc134e63defef86d1fcc5b5037192ddfb6dcb2e660f268f90683e7e4559fe813ef89c5422881e57a650f448d3ecc01ce651c082f3836a
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2018 [name of plugin creator]
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,76 @@
1
+ SolidusJwt
2
+ ==========
3
+
4
+ This gem gives [Solidus](https://github.com/solidusio/solidus) stores the ability to authenticate API requests with
5
+ JSON Web Tokens.
6
+
7
+ To use this gem, you should have a sound understanding of **JSON web tokens**. For more information you can visit the [**Offical JWT Website**](https://jwt.io/introduction/). It may also be useful to look at [**ruby-jwt**](https://github.com/jwt/ruby-jwt), the library required by this gem.
8
+
9
+
10
+ Installation
11
+ ------------
12
+
13
+ Add solidus_jwt to your Gemfile:
14
+
15
+ ```ruby
16
+ gem 'solidus'
17
+ gem 'solidus_jwt'
18
+ ```
19
+
20
+ Bundle your dependencies and run the installation generator:
21
+
22
+ ```shell
23
+ bundle
24
+ bundle exec rails g solidus_jwt:install
25
+ ```
26
+
27
+ Configuration
28
+ -------------
29
+ TODO
30
+
31
+ Usage
32
+ -------------
33
+ ### Generating and decoding a token:
34
+
35
+ ```ruby
36
+ SolidusJwt::Config.configure do |config|
37
+ config.jwt_secret = 'secret'
38
+ end
39
+
40
+ user = Spree::User.new email: 'email@example.com', id: 1
41
+ token = user.generate_jwt_token(expires_in: 1.hour.to_i) # Expiration is time in seconds
42
+ # eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NDA1MzIzNjcsImlhdCI6IjIwMTgtMTAtMjYgMDQ6Mzk6MjcgVVRDIiwiaWQiOjEsImVtYWlsIjoiZW1haWxAZXhhbXBsZS5jb20ifQ.LWqf_cfsMwB995AqN9wj5IseJqEZYaIHHIhf8Ej7WIc
43
+
44
+ SolidusJwt.decode(token)
45
+ # [{"exp"=>1540532367, "iat"=>"2018-10-26 04:39:27 UTC", "id"=>1, "email"=>"email@example.com"}, {"alg"=>"HS256"}]
46
+ ```
47
+
48
+ ### Distributing a Token Using 'solidus_auth_devise':
49
+
50
+ To have the `solidus_auth_devise` gem distribute a token back to the client
51
+ you can do the following:
52
+ ```ruby
53
+ # app/controllers/application_controller.rb
54
+ include SolidusJwt::Distributor::Devise
55
+ ```
56
+
57
+ When a user logs in, the redirect will contain the header `X-SPREE-TOKEN`.
58
+
59
+ Testing
60
+ -------
61
+
62
+ First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs, and [Rubocop](https://github.com/bbatsov/rubocop) static code analysis. The dummy app can be regenerated by using `rake test_app`.
63
+
64
+ ```shell
65
+ bundle
66
+ bundle exec rake
67
+ ```
68
+
69
+ When testing your applications integration with this extension you may use it's factories.
70
+ Simply add this require statement to your spec_helper:
71
+
72
+ ```ruby
73
+ require 'solidus_jwt/factories'
74
+ ```
75
+
76
+ Copyright (c) 2018 [name of extension creator], released under the New BSD License
data/Rakefile ADDED
@@ -0,0 +1,30 @@
1
+ require 'bundler'
2
+
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ begin
6
+ require 'spree/testing_support/extension_rake'
7
+ require 'rubocop/rake_task'
8
+ require 'rspec/core/rake_task'
9
+
10
+ RSpec::Core::RakeTask.new(:spec)
11
+
12
+ RuboCop::RakeTask.new
13
+
14
+ task default: %i(first_run rubocop spec)
15
+ rescue LoadError
16
+ # no rspec available
17
+ end
18
+
19
+ task :first_run do
20
+ if Dir['spec/dummy'].empty?
21
+ Rake::Task[:test_app].invoke
22
+ Dir.chdir('../../')
23
+ end
24
+ end
25
+
26
+ desc 'Generates a dummy app for testing'
27
+ task :test_app do
28
+ ENV['LIB_NAME'] = 'solidus_jwt'
29
+ Rake::Task['extension:test_app'].invoke
30
+ end
@@ -0,0 +1,2 @@
1
+ // Placeholder manifest file.
2
+ // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/backend/all.js'
@@ -0,0 +1,2 @@
1
+ // Placeholder manifest file.
2
+ // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/frontend/all.js'
@@ -0,0 +1,4 @@
1
+ /*
2
+ Placeholder manifest file.
3
+ the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/backend/all.css'
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Placeholder manifest file.
3
+ the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/frontend/all.css'
4
+ */
@@ -0,0 +1,19 @@
1
+ module Spree::Api::BaseController::JsonWebTokens
2
+ def load_user
3
+ return super unless json_web_token.present?
4
+ @current_api_user ||= Spree.user_class.find_by(id: json_web_token['id'])
5
+ end
6
+
7
+ def json_web_token
8
+ @json_web_token ||= SolidusJwt.decode(api_key).first
9
+ rescue JWT::DecodeError
10
+ # Allow spree to try and authenticate if we still allow it. Otherwise
11
+ # raise an error
12
+ return if SolidusJwt::Config.allow_spree_api_key
13
+ raise
14
+ end
15
+
16
+ def invalid_jwt_format?
17
+ api_key.split('.').size != 3
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ Spree::Api::BaseController.class_eval do
2
+ prepend Spree::Api::BaseController::JsonWebTokens
3
+
4
+ rescue_from JWT::DecodeError do
5
+ render "spree/api/errors/invalid_api_key", status: 401
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ Spree.user_class.class_eval do
2
+ ##
3
+ # Generate a json web token
4
+ # @see https://github.com/jwt/ruby-jwt
5
+ # @return [String]
6
+ #
7
+ def generate_jwt_token(expires_in: nil)
8
+ SolidusJwt.encode(payload: as_jwt_payload, expires_in: expires_in)
9
+ end
10
+
11
+ private
12
+
13
+ def as_jwt_payload
14
+ as_json(only: %i[email id])
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: Hello world
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ # Add your extension routes here
3
+ end
@@ -0,0 +1,30 @@
1
+ module SolidusJwt
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ class_option :auto_run_migrations, type: :boolean, default: false
5
+
6
+ def add_javascripts
7
+ append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_jwt\n"
8
+ append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_jwt\n"
9
+ end
10
+
11
+ def add_stylesheets
12
+ inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_jwt\n", before: /\*\//, verbose: true
13
+ inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_jwt\n", before: /\*\//, verbose: true
14
+ end
15
+
16
+ def add_migrations
17
+ run 'bundle exec rake railties:install:migrations FROM=solidus_jwt'
18
+ end
19
+
20
+ def run_migrations
21
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
22
+ if run_migrations
23
+ run 'bundle exec rake db:migrate'
24
+ else
25
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,15 @@
1
+ require 'jwt'
2
+
3
+ require 'solidus_core'
4
+ require 'solidus_jwt/engine'
5
+
6
+ require 'solidus_jwt/version'
7
+ require 'solidus_jwt/config'
8
+ require 'solidus_jwt/concerns/decodeable'
9
+ require 'solidus_jwt/concerns/encodeable'
10
+ require 'solidus_jwt/distributor/devise'
11
+
12
+ module SolidusJwt
13
+ extend Decodeable
14
+ extend Encodeable
15
+ end
@@ -0,0 +1,15 @@
1
+ module SolidusJwt
2
+ module Decodeable
3
+ ##
4
+ # Decode a token generated by SolidusJwt
5
+ # @see https://github.com/jwt/ruby-jwt
6
+ #
7
+ # @param token [String] The token to decode
8
+ # @return [Array<Hash>]
9
+ #
10
+ def decode(token)
11
+ JWT.decode(token, SolidusJwt::Config.jwt_secret, true,
12
+ algorithm: SolidusJwt::Config.jwt_algorithm)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ module SolidusJwt
2
+ module Encodeable
3
+ ##
4
+ # Encode a specified payload
5
+ # @see https://github.com/jwt/ruby-jwt
6
+ #
7
+ # @param payload [Hash] Attributes to place within the jwt
8
+ # @param expires_in [Integer] How long until token expires in Seconds (*Optional*).
9
+ # Note that if no expires at is set, then the token will last forever.
10
+ # @return [String]
11
+ #
12
+ def encode(payload:, expires_in: nil)
13
+ # @see https://github.com/jwt/ruby-jwt#support-for-reserved-claim-names
14
+ extras = {}
15
+ extras['exp'] = Time.current.to_i + expires_in if expires_in.present?
16
+ extras['iat'] = Time.current
17
+
18
+ payload = extras.merge(payload)
19
+ JWT.encode(payload, SolidusJwt::Config.jwt_secret,
20
+ SolidusJwt::Config.jwt_algorithm)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ require 'solidus_jwt/preferences'
2
+
3
+ SolidusJwt::Config = SolidusJwt::Preferences.new
@@ -0,0 +1,15 @@
1
+ module SolidusJwt
2
+ module Distributor
3
+ module Devise
4
+ def after_sign_in_path_for(resource)
5
+ # Send back json web token in redirect header
6
+ if try_spree_current_user
7
+ response.headers['X-SPREE-TOKEN'] = try_spree_current_user.
8
+ generate_jwt_token(expires_in: SolidusJwt::Config.jwt_expiration)
9
+ end
10
+
11
+ super
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ module SolidusJwt
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'solidus_jwt'
6
+
7
+ # use rspec for tests
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ end
11
+
12
+ def self.activate
13
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
14
+ Rails.configuration.cache_classes ? require(c) : load(c)
15
+ end
16
+ end
17
+
18
+ config.to_prepare(&method(:activate).to_proc)
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
3
+ #
4
+ # Example adding this to your spec_helper will load these Factories for use:
5
+ # require 'solidus_jwt/factories'
6
+ end
@@ -0,0 +1,47 @@
1
+ require 'spree/preferences/configuration'
2
+
3
+ module SolidusJwt
4
+ class Preferences < Spree::Preferences::Configuration
5
+ ##
6
+ # Provide your own secret when creating json web tokens
7
+ # @attr_writer jwt_secret [String] The secret to encrypt web tokens with.
8
+ #
9
+ attr_writer :jwt_secret
10
+
11
+ ##
12
+ # @!attribute [rw] allow_spree_api_key
13
+ # @return [String] Allow spree_api_key to still be used. (default true)
14
+ #
15
+ preference :allow_spree_api_key, :boolean, default: true
16
+
17
+ ##
18
+ # @see https://github.com/jwt/ruby-jwt#algorithms-and-usage
19
+ # @!attribute [rw] jwt_algorithm
20
+ # @return [String] The hashing algorithm to use. (default 'HS256')
21
+ #
22
+ preference :jwt_algorithm, :string, default: 'HS256'
23
+
24
+ # @!attribute [rw] jwt_expiration
25
+ # @return [String] How long until the token expires in seconds.
26
+ # (default: +3600+)
27
+ #
28
+ preference :jwt_expiration, :integer, default: 3600
29
+
30
+ # @see https://github.com/jwt/ruby-jwt#algorithms-and-usage
31
+ # @!attribute [rw] jwt_options
32
+ # @return [String] The options to pass into `Spree::User#as_json` when
33
+ # when creating the jwt payload. (default: `{ only: %i[email first_name id last_name] }`)
34
+ #
35
+ preference :jwt_options, :hash, default: { only: %i[email first_name id last_name] }
36
+
37
+ ##
38
+ # Get the secret token to encrypt json web tokens with.
39
+ # @return [String] The secret used to encrypt json web tokens
40
+ #
41
+ #
42
+ def jwt_secret
43
+ # Account for different rails versions
44
+ @jwt_secret ||= ENV['SECRET_KEY_BASE'] || Rails.application.secret_key_base
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,11 @@
1
+ module SolidusJwt
2
+ MAJOR = 0
3
+ MINOR = 0
4
+ PATCH = 1
5
+ PRERELEASE = 'pre'.freeze
6
+
7
+ def self.version
8
+ version = [MAJOR, MINOR, PATCH].join('.')
9
+ [version, PRERELEASE].compact.join('.')
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,273 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solidus_jwt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre
5
+ platform: ruby
6
+ authors:
7
+ - Taylor Scott
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-10-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: solidus_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: solidus_backend
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '3'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '3'
53
+ - !ruby/object:Gem::Dependency
54
+ name: solidus_support
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.1.3
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.1.3
67
+ - !ruby/object:Gem::Dependency
68
+ name: jwt
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: capybara
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: poltergeist
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: coffee-rails
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: sass-rails
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: database_cleaner
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: factory_bot
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: rspec-rails
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: rubocop
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ - !ruby/object:Gem::Dependency
194
+ name: simplecov
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: sqlite3
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ description: Add Json Web Tokens to Solidus API
222
+ email: t.skukx@gmail.com
223
+ executables: []
224
+ extensions: []
225
+ extra_rdoc_files: []
226
+ files:
227
+ - LICENSE
228
+ - README.md
229
+ - Rakefile
230
+ - app/assets/javascripts/spree/backend/solidus_jwt.js
231
+ - app/assets/javascripts/spree/frontend/solidus_jwt.js
232
+ - app/assets/stylesheets/spree/backend/solidus_jwt.css
233
+ - app/assets/stylesheets/spree/frontend/solidus_jwt.css
234
+ - app/controllers/spree/api/base_controller/json_web_tokens.rb
235
+ - app/controllers/spree/api/base_controller_decorator.rb
236
+ - app/models/spree/user_decorator.rb
237
+ - config/locales/en.yml
238
+ - config/routes.rb
239
+ - lib/generators/solidus_jwt/install/install_generator.rb
240
+ - lib/solidus_jwt.rb
241
+ - lib/solidus_jwt/concerns/decodeable.rb
242
+ - lib/solidus_jwt/concerns/encodeable.rb
243
+ - lib/solidus_jwt/config.rb
244
+ - lib/solidus_jwt/distributor/devise.rb
245
+ - lib/solidus_jwt/engine.rb
246
+ - lib/solidus_jwt/factories.rb
247
+ - lib/solidus_jwt/preferences.rb
248
+ - lib/solidus_jwt/version.rb
249
+ homepage: https://github.com/skukx
250
+ licenses:
251
+ - BSD-3-Clause
252
+ metadata: {}
253
+ post_install_message:
254
+ rdoc_options: []
255
+ require_paths:
256
+ - lib
257
+ required_ruby_version: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ required_rubygems_version: !ruby/object:Gem::Requirement
263
+ requirements:
264
+ - - ">"
265
+ - !ruby/object:Gem::Version
266
+ version: 1.3.1
267
+ requirements: []
268
+ rubyforge_project:
269
+ rubygems_version: 2.5.1
270
+ signing_key:
271
+ specification_version: 4
272
+ summary: Add Json Web Tokens to Solidus API
273
+ test_files: []