solidus_jwt 0.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
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: []