devise-doorkeeper 1.1.2 → 1.2.0.ci.133.1

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
- SHA1:
3
- metadata.gz: 5a760922ab6f1d1bb0cae57a2106d0807d7d37f3
4
- data.tar.gz: 1ba62b0056ee1c6c77c6151254d6f738feac174c
2
+ SHA256:
3
+ metadata.gz: b0b329edf4d98ff84bdcd1d2a481e36c331bfc307f718d81f503ca69dad46174
4
+ data.tar.gz: 9f4e39359852ca3956447d654d64f5de7a42fa8d0ac96b6f5ea86627c0a97b39
5
5
  SHA512:
6
- metadata.gz: cdca8e31ffddddfb355bbf51179c0f99e8f21dc7d95382727d036a53f78daff86248b72ff108d8d7e2218dc83f7855223d95323b29e805a7ac780981e72e1ada
7
- data.tar.gz: 723f7e5573f3667dde0acd8bfd2669e6772cf4ce035da05218d8f252c74e9da247accf538470a57da81f93c5c5d49620c34c9284e7bd339c3d06465a122e5085
6
+ metadata.gz: a3fe30fadabedfc3d51a28cb38aac43b626ee49f63ecf61ba9634e4cc8a6dd94d69374cb963e7d4c5e7f614a7e8f8b1216b582293a2c6cd936981f5f2eb87d78
7
+ data.tar.gz: 3bb0b4751de1c1f9bd8ed5188bbcf3badd6d14044e8c7b20df2ddf091adbe1bdf17f117e3edc9b27fd89286a0b875052373f2a941852e3243b268b63bfaa19aa
data/.gitignore CHANGED
@@ -15,3 +15,6 @@ mkmf.log
15
15
  *.sqlite3
16
16
  *.log
17
17
  spec/dummy/tmp
18
+
19
+ # Mac finder artifacts
20
+ .DS_Store
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.2.2
1
+ 2.6.6
data/.travis.yml CHANGED
@@ -1,4 +1,7 @@
1
1
  language: ruby
2
+ cache: bundler
3
+ before_install:
4
+ - gem install bundler --version '~> 2.2'
2
5
  deploy:
3
6
  provider: rubygems
4
7
  api_key:
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 BetterUP, Inc.
1
+ Copyright (c) 2015 BetterUp, Inc.
2
2
 
3
3
  MIT License
4
4
 
@@ -6,8 +6,8 @@ require 'devise/doorkeeper/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'devise-doorkeeper'
8
8
  spec.version = Devise::Doorkeeper::VERSION
9
- spec.authors = ['Ryan Sonnek']
10
- spec.email = ['ryan@codecrate.com']
9
+ spec.authors = ['BetterUp']
10
+ spec.email = ['developers@betterup.co']
11
11
  spec.summary = %q{ Integrate Doorkeeper OAuth2 tokens into Devise applications }
12
12
  spec.description = %q{ Support authentication via OAuth2 tokens dispensed from the Doorkeeper authorization flow }
13
13
  spec.homepage = ''
@@ -22,17 +22,17 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'devise'
23
23
  spec.add_dependency 'doorkeeper'
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 1.7'
26
- spec.add_development_dependency 'rspec-rails'
27
- spec.add_development_dependency 'factory_girl_rails'
28
- spec.add_development_dependency 'factory_girl_rspec'
29
- spec.add_development_dependency 'faker'
30
- spec.add_development_dependency 'json_spec'
31
- spec.add_development_dependency 'sqlite3'
32
- spec.add_development_dependency 'coveralls'
33
- spec.add_development_dependency 'pry'
34
- spec.add_development_dependency 'rake', '~> 10.0'
35
- spec.add_development_dependency 'travis'
25
+ spec.add_development_dependency 'bundler', '~> 2.2'
26
+ spec.add_development_dependency 'rspec-rails', '~> 4.0'
27
+ spec.add_development_dependency 'factory_bot_rails', '~> 6.1'
28
+ spec.add_development_dependency 'factory_girl_rspec', '~> 3.0'
29
+ spec.add_development_dependency 'faker', '~> 2.16'
30
+ spec.add_development_dependency 'json_spec', '~> 1.1'
31
+ spec.add_development_dependency 'sqlite3', '~> 1.3.11'
32
+ spec.add_development_dependency 'coveralls', '~> 0.8'
33
+ spec.add_development_dependency 'pry', '~> 0.14'
34
+ spec.add_development_dependency 'rake', '~> 13.0'
35
+ spec.add_development_dependency 'travis', '~> 1.10'
36
36
 
37
37
  # configure gem version for continuous integration builds
38
38
  if ENV['TRAVIS_JOB_NUMBER']
@@ -1,4 +1,5 @@
1
1
  require 'devise/strategies/doorkeeper'
2
+ require 'devise/doorkeeper/unconfirmed_resource_response'
2
3
 
3
4
  module Devise
4
5
  module Doorkeeper
@@ -6,6 +7,8 @@ module Devise
6
7
  def respond
7
8
  if oauth_error?
8
9
  invalid_oauth_token
10
+ elsif unconfirmed_resource?
11
+ unconfirmed_resource
9
12
  else
10
13
  super
11
14
  end
@@ -17,12 +20,23 @@ module Devise
17
20
  warden_message == Devise::Strategies::Doorkeeper::WARDEN_INVALID_TOKEN_MESSAGE
18
21
  end
19
22
 
23
+ def unconfirmed_resource?
24
+ warden_message == Devise::Strategies::Doorkeeper::WARDEN_UNCONFIRMED_RESOURCE_MESSAGE
25
+ end
26
+
20
27
  def invalid_oauth_token
21
28
  error = ::Doorkeeper::OAuth::InvalidTokenResponse.new
22
29
  headers.merge! error.headers
23
30
  self.response_body = error.body.to_json
24
31
  self.status = error.status
25
32
  end
33
+
34
+ def unconfirmed_resource
35
+ error = UnconfirmedResourceResponse.new
36
+ headers.merge! error.headers
37
+ self.response_body = error.body.to_json
38
+ self.status = error.status
39
+ end
26
40
  end
27
41
  end
28
42
  end
@@ -0,0 +1,23 @@
1
+ require 'devise/strategies/doorkeeper'
2
+
3
+ module Devise
4
+ module Doorkeeper
5
+ class UnconfirmedResourceResponse < ::Doorkeeper::OAuth::ErrorResponse
6
+ def initialize(attributes = {})
7
+ super(attributes.merge(name: :unconfirmed_resource, state: :locked))
8
+ end
9
+
10
+ def status
11
+ :locked
12
+ end
13
+
14
+ def description
15
+ @description ||= I18n.translate('doorkeeper.errors.messages.unconfirmed_resource')
16
+ end
17
+
18
+ def exception_class
19
+ ::Doorkeeper::Errors::DoorkeeperError
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  module Devise
2
2
  module Doorkeeper
3
- VERSION = '1.1.2'
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  end
@@ -7,6 +7,7 @@ module Devise
7
7
  module Strategies
8
8
  class Doorkeeper < ::Devise::Strategies::Authenticatable
9
9
  WARDEN_INVALID_TOKEN_MESSAGE = :invalid_token
10
+ WARDEN_UNCONFIRMED_RESOURCE_MESSAGE = :unconfirmed_resource
10
11
 
11
12
  def valid?
12
13
  credentials = ::Doorkeeper::OAuth::Token.from_request(request, *access_token_methods)
@@ -17,7 +18,11 @@ module Devise
17
18
  resource = resource_from_token
18
19
  if validate(resource)
19
20
  request.env['devise.skip_trackable'] = true
20
- success!(resource)
21
+ if resource.active_for_authentication?
22
+ success!(resource)
23
+ else
24
+ unconfirmed_resource
25
+ end
21
26
  else
22
27
  invalid_token
23
28
  end
@@ -48,6 +53,11 @@ module Devise
48
53
  mapping.to.find(token.resource_owner_id)
49
54
  end
50
55
 
56
+ def unconfirmed_resource
57
+ fail!(WARDEN_UNCONFIRMED_RESOURCE_MESSAGE)
58
+ throw :warden
59
+ end
60
+
51
61
  def invalid_token
52
62
  fail!(WARDEN_INVALID_TOKEN_MESSAGE)
53
63
  throw :warden
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link_directory ../stylesheets .css
@@ -2,6 +2,10 @@ class User < ActiveRecord::Base
2
2
  # Include default devise modules. Others available are:
3
3
  # :confirmable, :lockable, :timeoutable and :omniauthable
4
4
  devise :database_authenticatable, :registerable,
5
- :recoverable, :rememberable, :trackable, :validatable
5
+ :recoverable, :rememberable, :trackable, :validatable, :confirmable
6
6
  devise :database_authenticatable, :doorkeeper
7
+
8
+ def send_confirmation_notification?
9
+ false
10
+ end
7
11
  end
@@ -130,6 +130,8 @@ en:
130
130
  expired: "The access token expired"
131
131
  unknown: "The access token is invalid"
132
132
 
133
+ unconfirmed_resource: 'The resource owner account is unconfirmed.'
134
+
133
135
  flash:
134
136
  applications:
135
137
  create:
@@ -1,4 +1,4 @@
1
- class CreateUsers < ActiveRecord::Migration
1
+ class CreateUsers < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :users do |t|
4
4
 
@@ -1,4 +1,4 @@
1
- class CreateDoorkeeperTables < ActiveRecord::Migration
1
+ class CreateDoorkeeperTables < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :oauth_applications do |t|
4
4
  t.string :name, null: false
@@ -1,4 +1,4 @@
1
- class AddDeviseToUsers < ActiveRecord::Migration
1
+ class AddDeviseToUsers < ActiveRecord::Migration[4.2]
2
2
  def self.up
3
3
  change_table(:users) do |t|
4
4
  ## Database authenticatable
@@ -0,0 +1,11 @@
1
+ class AddConfidentialToDoorkeeperApplication < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column(
4
+ :oauth_applications,
5
+ :confidential,
6
+ :boolean,
7
+ null: false,
8
+ default: true # maintaining backwards compatibility: require secrets
9
+ )
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ class AddConfirmableFieldToUsers < ActiveRecord::Migration[5.0]
2
+ def change
3
+ change_table(:users) do |t|
4
+ ## Confirmable
5
+ t.string :confirmation_token
6
+ t.datetime :confirmed_at
7
+ t.datetime :confirmation_sent_at
8
+ t.string :unconfirmed_email # Only if using reconfirmable
9
+ end
10
+ end
11
+ end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # This file is auto-generated from the current state of the database. Instead
3
2
  # of editing this file, please use the migrations feature of Active Record to
4
3
  # incrementally modify your database, and then regenerate this schema definition.
@@ -11,7 +10,7 @@
11
10
  #
12
11
  # It's strongly recommended that you check this file into your version control system.
13
12
 
14
- ActiveRecord::Schema.define(version: 20150120162830) do
13
+ ActiveRecord::Schema.define(version: 20210301204550) do
15
14
 
16
15
  create_table "oauth_access_grants", force: :cascade do |t|
17
16
  t.integer "resource_owner_id", null: false
@@ -22,10 +21,9 @@ ActiveRecord::Schema.define(version: 20150120162830) do
22
21
  t.datetime "created_at", null: false
23
22
  t.datetime "revoked_at"
24
23
  t.string "scopes"
24
+ t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true
25
25
  end
26
26
 
27
- add_index "oauth_access_grants", ["token"], name: "index_oauth_access_grants_on_token", unique: true
28
-
29
27
  create_table "oauth_access_tokens", force: :cascade do |t|
30
28
  t.integer "resource_owner_id"
31
29
  t.integer "application_id"
@@ -35,24 +33,23 @@ ActiveRecord::Schema.define(version: 20150120162830) do
35
33
  t.datetime "revoked_at"
36
34
  t.datetime "created_at", null: false
37
35
  t.string "scopes"
36
+ t.index ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true
37
+ t.index ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id"
38
+ t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true
38
39
  end
39
40
 
40
- add_index "oauth_access_tokens", ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true
41
- add_index "oauth_access_tokens", ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id"
42
- add_index "oauth_access_tokens", ["token"], name: "index_oauth_access_tokens_on_token", unique: true
43
-
44
41
  create_table "oauth_applications", force: :cascade do |t|
45
- t.string "name", null: false
46
- t.string "uid", null: false
47
- t.string "secret", null: false
48
- t.text "redirect_uri", null: false
49
- t.string "scopes", default: "", null: false
42
+ t.string "name", null: false
43
+ t.string "uid", null: false
44
+ t.string "secret", null: false
45
+ t.text "redirect_uri", null: false
46
+ t.string "scopes", default: "", null: false
50
47
  t.datetime "created_at"
51
48
  t.datetime "updated_at"
49
+ t.boolean "confidential", default: true, null: false
50
+ t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true
52
51
  end
53
52
 
54
- add_index "oauth_applications", ["uid"], name: "index_oauth_applications_on_uid", unique: true
55
-
56
53
  create_table "users", force: :cascade do |t|
57
54
  t.datetime "created_at", null: false
58
55
  t.datetime "updated_at", null: false
@@ -66,15 +63,12 @@ ActiveRecord::Schema.define(version: 20150120162830) do
66
63
  t.datetime "last_sign_in_at"
67
64
  t.string "current_sign_in_ip"
68
65
  t.string "last_sign_in_ip"
69
- end
70
-
71
- add_index "users", ["email"], name: "index_users_on_email", unique: true
72
- add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
73
-
74
- create_table "waitlist_subscribers", force: :cascade do |t|
75
- t.string "email"
76
- t.datetime "created_at"
77
- t.datetime "updated_at"
66
+ t.string "confirmation_token"
67
+ t.datetime "confirmed_at"
68
+ t.datetime "confirmation_sent_at"
69
+ t.string "unconfirmed_email"
70
+ t.index ["email"], name: "index_users_on_email", unique: true
71
+ t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
78
72
  end
79
73
 
80
74
  end
@@ -1,4 +1,4 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  factory :access_token, class: Doorkeeper::AccessToken do
3
3
  resource_owner_id { association(:user).id }
4
4
  application_id { association(:application).id }
@@ -1,8 +1,6 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  factory :application, class: Doorkeeper::Application do
3
- name 'sample app'
4
- # uid { SecureRandom.hex(20) }
5
- # secret { SecureRandom.hex(20) }
6
- redirect_uri 'urn:ietf:wg:oauth:2.0:oob'
3
+ name { 'sample app' }
4
+ redirect_uri { 'urn:ietf:wg:oauth:2.0:oob' }
7
5
  end
8
6
  end
@@ -1,8 +1,13 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  sequence(:email) { "jon.doe+#{SecureRandom.hex(10)}@acme.com" }
3
3
 
4
4
  factory :user do
5
5
  email { Faker::Internet.email }
6
6
  password { Faker::Internet.password }
7
+ confirmed_at { Time.current }
8
+
9
+ trait :when_unconfirmed do
10
+ confirmed_at { nil }
11
+ end
7
12
  end
8
13
  end
@@ -3,28 +3,50 @@ require 'rails_helper'
3
3
  RSpec.describe 'OAuth bearer token requests', type: :request do
4
4
  let(:request_path) { '/example.json' }
5
5
  context 'with valid access token' do
6
- with :access_token
7
- let(:headers) do
8
- {
9
- 'Authorization' => "Bearer #{access_token.token}"
10
- }
11
- end
12
- let(:params) { {} }
13
- before do
14
- @original_timestamp = User.find(access_token.resource_owner_id).last_sign_in_at
15
- get request_path, params, headers
16
- end
17
- it { expect(response.status).to eq 200 }
18
- it 'does not send Set-Cookie headers' do
19
- expect(response.headers).to_not include 'Set-Cookie'
6
+ context 'when user confirmed' do
7
+ let(:access_token) { create(:access_token) }
8
+ let(:headers) do
9
+ {
10
+ 'Authorization' => "Bearer #{access_token.token}"
11
+ }
12
+ end
13
+ let(:params) { {} }
14
+ before do
15
+ @original_timestamp = User.find(access_token.resource_owner_id).last_sign_in_at
16
+ get request_path, params: params, headers: headers
17
+ end
18
+ it { expect(response.status).to eq 200 }
19
+ it 'does not send Set-Cookie headers' do
20
+ expect(response.headers).to_not include 'Set-Cookie'
21
+ end
22
+ it 'does not update the user last_signin_at timestamp' do
23
+ new_timestamp = User.find(access_token.resource_owner_id).last_sign_in_at
24
+ expect(new_timestamp).to eq @original_timestamp
25
+ end
20
26
  end
21
- it 'does not update the user last_signin_at timestamp' do
22
- new_timestamp = User.find(access_token.resource_owner_id).last_sign_in_at
23
- expect(new_timestamp).to eq @original_timestamp
27
+ context 'when user unconfirmed' do
28
+ let(:user) { create(:user, :when_unconfirmed) }
29
+ let(:access_token) { create(:access_token, resource_owner_id: user.id) }
30
+ let(:headers) do
31
+ {
32
+ 'Authorization' => "Bearer #{access_token.token}"
33
+ }
34
+ end
35
+ before do
36
+ get request_path, headers: headers
37
+ end
38
+ it { expect(response.status).to eq 423 }
39
+ it do
40
+ expect(JSON.parse(response.body)).to include(
41
+ 'error' => 'unconfirmed_resource',
42
+ 'error_description' => 'The resource owner account is unconfirmed.',
43
+ 'state' => 'locked'
44
+ )
45
+ end
24
46
  end
25
47
  end
26
48
  context 'with expired access token' do
27
- with :access_token, expires_in: 0
49
+ let(:access_token) { create(:access_token, expires_in: 0) }
28
50
  let(:headers) do
29
51
  {
30
52
  'Authorization' => "Bearer #{access_token.token}"
@@ -32,14 +54,14 @@ RSpec.describe 'OAuth bearer token requests', type: :request do
32
54
  end
33
55
  let(:params) { {} }
34
56
  before do
35
- get request_path, params, headers
57
+ get request_path, params: params, headers: headers
36
58
  end
37
59
  it { expect(response.status).to eq 401 }
38
60
  it { expect(response.headers['WWW-Authenticate']).to eq 'Bearer realm="DeviseDoorkeeperApp", error="invalid_token", error_description="The access token is invalid"' }
39
61
  it { expect(response.body).to eq '{"error":"invalid_token","error_description":"The access token is invalid","state":"unauthorized"}' }
40
62
  end
41
63
  context 'with revoked access token' do
42
- with :access_token, revoked_at: 1.year.ago
64
+ let(:access_token) { create(:access_token, revoked_at: 1.year.ago) }
43
65
  let(:headers) do
44
66
  {
45
67
  'Authorization' => "Bearer #{access_token.token}"
@@ -47,7 +69,7 @@ RSpec.describe 'OAuth bearer token requests', type: :request do
47
69
  end
48
70
  let(:params) { {} }
49
71
  before do
50
- get request_path, params, headers
72
+ get request_path, params: params, headers: headers
51
73
  end
52
74
  it { expect(response.status).to eq 401 }
53
75
  end
@@ -60,7 +82,7 @@ RSpec.describe 'OAuth bearer token requests', type: :request do
60
82
  end
61
83
  let(:params) { {} }
62
84
  before do
63
- get request_path, params, headers
85
+ get request_path, params: params, headers: headers
64
86
  end
65
87
  it { expect(response.status).to eq 401 }
66
88
  end
@@ -17,13 +17,13 @@ RSpec.describe 'oauth/tokens password grant flow', type: :request do
17
17
  let(:expected_response) do
18
18
  {
19
19
  access_token: @new_token.token,
20
- token_type: 'bearer',
20
+ token_type: 'Bearer',
21
21
  expires_in: 'ignored',
22
22
  created_at: 'ignored'
23
23
  }.to_json
24
24
  end
25
25
  before do
26
- post '/oauth/token', params, headers
26
+ post '/oauth/token', params: params, headers: headers
27
27
  @new_token = Doorkeeper::AccessToken.last
28
28
  end
29
29
  it { expect(response.status).to eq 200 }
@@ -43,9 +43,9 @@ RSpec.describe 'oauth/tokens password grant flow', type: :request do
43
43
  end
44
44
  let(:headers) { {} }
45
45
  before do
46
- post '/oauth/token', params, headers
46
+ post '/oauth/token', params: params, headers: headers
47
47
  end
48
- it { expect(response.status).to eq 401 }
48
+ it { expect(response.status).to eq 400 }
49
49
  end
50
50
  context 'with invalid username' do
51
51
  with :user
@@ -61,8 +61,8 @@ RSpec.describe 'oauth/tokens password grant flow', type: :request do
61
61
  end
62
62
  let(:headers) { {} }
63
63
  before do
64
- post '/oauth/token', params, headers
64
+ post '/oauth/token', params: params, headers: headers
65
65
  end
66
- it { expect(response.status).to eq 401 }
66
+ it { expect(response.status).to eq 400 }
67
67
  end
68
68
  end
@@ -1,6 +1,6 @@
1
1
  require 'faker'
2
2
  require 'factory_girl_rspec'
3
- require 'factory_girl_rails'
4
- FactoryGirl.definition_file_paths = [
3
+ require 'factory_bot_rails'
4
+ FactoryBot.definition_file_paths = [
5
5
  File.join(__dir__, '../factories')
6
6
  ]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-doorkeeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0.ci.133.1
5
5
  platform: ruby
6
6
  authors:
7
- - Ryan Sonnek
7
+ - BetterUp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-05 00:00:00.000000000 Z
11
+ date: 2021-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -58,158 +58,158 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.7'
61
+ version: '2.2'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.7'
68
+ version: '2.2'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '4.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '4.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: factory_girl_rails
84
+ name: factory_bot_rails
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '6.1'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '6.1'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: factory_girl_rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '3.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '3.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: faker
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: '2.16'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: '2.16'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: json_spec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0'
131
+ version: '1.1'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0'
138
+ version: '1.1'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: sqlite3
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: 1.3.11
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0'
152
+ version: 1.3.11
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: coveralls
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '0'
159
+ version: '0.8'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '0'
166
+ version: '0.8'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: pry
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '0'
173
+ version: '0.14'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '0'
180
+ version: '0.14'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rake
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '10.0'
187
+ version: '13.0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '10.0'
194
+ version: '13.0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: travis
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - ">="
199
+ - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: '0'
201
+ version: '1.10'
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ">="
206
+ - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: '0'
208
+ version: '1.10'
209
209
  description: " Support authentication via OAuth2 tokens dispensed from the Doorkeeper
210
210
  authorization flow "
211
211
  email:
212
- - ryan@codecrate.com
212
+ - developers@betterup.co
213
213
  executables: []
214
214
  extensions: []
215
215
  extra_rdoc_files: []
@@ -224,11 +224,13 @@ files:
224
224
  - devise-doorkeeper.gemspec
225
225
  - lib/devise/doorkeeper.rb
226
226
  - lib/devise/doorkeeper/doorkeeper_failure_app.rb
227
+ - lib/devise/doorkeeper/unconfirmed_resource_response.rb
227
228
  - lib/devise/doorkeeper/version.rb
228
229
  - lib/devise/strategies/doorkeeper.rb
229
230
  - spec/dummy/.rspec
230
231
  - spec/dummy/README.rdoc
231
232
  - spec/dummy/Rakefile
233
+ - spec/dummy/app/assets/config/manifest.js
232
234
  - spec/dummy/app/assets/images/.keep
233
235
  - spec/dummy/app/assets/javascripts/application.js
234
236
  - spec/dummy/app/assets/stylesheets/application.css
@@ -273,6 +275,8 @@ files:
273
275
  - spec/dummy/db/migrate/20150120154622_create_users.rb
274
276
  - spec/dummy/db/migrate/20150120154657_create_doorkeeper_tables.rb
275
277
  - spec/dummy/db/migrate/20150120162830_add_devise_to_users.rb
278
+ - spec/dummy/db/migrate/20210301163315_add_confidential_to_doorkeeper_application.rb
279
+ - spec/dummy/db/migrate/20210301204550_add_confirmable_field_to_users.rb
276
280
  - spec/dummy/db/schema.rb
277
281
  - spec/dummy/lib/assets/.keep
278
282
  - spec/dummy/log/.keep
@@ -288,7 +292,7 @@ files:
288
292
  - spec/requests/oauth/bearer_tokens_spec.rb
289
293
  - spec/requests/oauth/password_grant_spec.rb
290
294
  - spec/spec_helper.rb
291
- - spec/support/factory_girl.rb
295
+ - spec/support/factory_bot.rb
292
296
  - spec/support/json_spec.rb
293
297
  - spec/support/pry.rb
294
298
  homepage: ''
@@ -306,12 +310,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
306
310
  version: '0'
307
311
  required_rubygems_version: !ruby/object:Gem::Requirement
308
312
  requirements:
309
- - - ">="
313
+ - - ">"
310
314
  - !ruby/object:Gem::Version
311
- version: '0'
315
+ version: 1.3.1
312
316
  requirements: []
313
- rubyforge_project:
314
- rubygems_version: 2.4.5
317
+ rubygems_version: 3.0.8
315
318
  signing_key:
316
319
  specification_version: 4
317
320
  summary: Integrate Doorkeeper OAuth2 tokens into Devise applications
@@ -319,6 +322,7 @@ test_files:
319
322
  - spec/dummy/.rspec
320
323
  - spec/dummy/README.rdoc
321
324
  - spec/dummy/Rakefile
325
+ - spec/dummy/app/assets/config/manifest.js
322
326
  - spec/dummy/app/assets/images/.keep
323
327
  - spec/dummy/app/assets/javascripts/application.js
324
328
  - spec/dummy/app/assets/stylesheets/application.css
@@ -363,6 +367,8 @@ test_files:
363
367
  - spec/dummy/db/migrate/20150120154622_create_users.rb
364
368
  - spec/dummy/db/migrate/20150120154657_create_doorkeeper_tables.rb
365
369
  - spec/dummy/db/migrate/20150120162830_add_devise_to_users.rb
370
+ - spec/dummy/db/migrate/20210301163315_add_confidential_to_doorkeeper_application.rb
371
+ - spec/dummy/db/migrate/20210301204550_add_confirmable_field_to_users.rb
366
372
  - spec/dummy/db/schema.rb
367
373
  - spec/dummy/lib/assets/.keep
368
374
  - spec/dummy/log/.keep
@@ -378,6 +384,6 @@ test_files:
378
384
  - spec/requests/oauth/bearer_tokens_spec.rb
379
385
  - spec/requests/oauth/password_grant_spec.rb
380
386
  - spec/spec_helper.rb
381
- - spec/support/factory_girl.rb
387
+ - spec/support/factory_bot.rb
382
388
  - spec/support/json_spec.rb
383
389
  - spec/support/pry.rb