doorkeeper_sso_client 0.2.2 → 0.2.5
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/lib/doorkeeper_sso_client.rb +1 -0
- data/lib/doorkeeper_sso_client/engine.rb +6 -0
- data/lib/doorkeeper_sso_client/mixins.rb +6 -0
- data/lib/doorkeeper_sso_client/mixins/controller_helpers.rb +14 -0
- data/lib/doorkeeper_sso_client/version.rb +1 -1
- data/spec/fabricators/passport_fabricator.rb +5 -0
- data/spec/fabricators/user_fabricator.rb +2 -0
- data/spec/lib/doorkeeper_sso_client/mixins/controller_helper_spec.rb +45 -0
- data/spec/support/devise.rb +14 -0
- data/spec/test_app/app/models/user.rb +4 -1
- data/spec/test_app/config/routes.rb +3 -0
- data/spec/test_app/db/schema.rb +9 -1
- metadata +26 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ee8d13e7e88d390380516c9def8b0c68a93d3f7
|
4
|
+
data.tar.gz: 34dd41b3aff5231b38fe5f848a135b23bdc71dac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8a82ab4fc2068f55b0b0c5f4d5d3997d1d0b657baf9872923e819b949187c3ccaf75859c36cd6ba3293eaa63a315448d8de8ed8a3be30c17ee1e9cf97909c8a
|
7
|
+
data.tar.gz: c1413b8872de5be18ee5b5c475c8abd211301c4bf837fdc0ecd7bb9370b8c68d018341bd15141d562a30059b476a57d6dbb4c97a5cc52565afd6ebadf7d8b64b
|
@@ -13,5 +13,11 @@ module DoorkeeperSsoClient
|
|
13
13
|
:request_specs => false
|
14
14
|
g.fixture_replacement :fabrication
|
15
15
|
end
|
16
|
+
|
17
|
+
config.before_initialize do
|
18
|
+
if Object.const_defined?("Devise")
|
19
|
+
::Devise::Controllers::Helpers.send(:include, DoorkeeperSsoClient::Mixins::ControllerHelpers)
|
20
|
+
end
|
21
|
+
end
|
16
22
|
end
|
17
23
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module DoorkeeperSsoClient
|
2
|
+
module Mixins
|
3
|
+
module ControllerHelpers
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
def validate_passport!
|
7
|
+
if sso_signed_in?
|
8
|
+
sign_out(current_sso) unless current_sso.passport.try(:active?)
|
9
|
+
end
|
10
|
+
return true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
Fabricator(:user) do
|
2
2
|
first_name { FFaker::Name.first_name }
|
3
3
|
last_name { FFaker::Name.last_name }
|
4
|
+
password { 'password' }
|
4
5
|
name { |attrs| [attrs[:first_name], attrs[:last_name]].join(" ") }
|
5
6
|
email { FFaker::Internet.email }
|
7
|
+
passport { Fabricate('DoorkeeperSsoClient::Passport') }
|
6
8
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
# DoorkeeperSsoClient::Mixins::ControllerHelpers automatically included into Devise::Controller::Helpers
|
4
|
+
|
5
|
+
RSpec.describe "DoorkeeperSsoClient::Mixins::ControllerHelpers", :type => :controller do
|
6
|
+
controller(ApplicationController) do
|
7
|
+
devise_group :sso, contains: [:user]
|
8
|
+
|
9
|
+
before_filter :authenticate_user!
|
10
|
+
before_filter :validate_passport!
|
11
|
+
|
12
|
+
def index
|
13
|
+
render nothing: :true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:user) { Fabricate(:user) }
|
18
|
+
let(:passport) { Fabricate(:passport, identity: user) }
|
19
|
+
|
20
|
+
describe "before_filter#validate_passport!" do
|
21
|
+
context "when user is logged in" do
|
22
|
+
before(:each) do
|
23
|
+
@request.env["devise.mapping"] = Devise.mappings[:user]
|
24
|
+
sign_in user
|
25
|
+
get :index
|
26
|
+
end
|
27
|
+
|
28
|
+
context "with valid passport" do
|
29
|
+
|
30
|
+
it "remain signed in" do
|
31
|
+
expect(controller.user_signed_in?).to be_truthy
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "when user is logged out" do
|
37
|
+
let(:passport) { Fabricate(:passport, identity: user, revoked_at: Time.now, revoke_reason: :logout ) }
|
38
|
+
|
39
|
+
it "log out user" do
|
40
|
+
expect(controller.user_signed_in?).to be_falsey
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module ControllerMacros
|
2
|
+
def login_user
|
3
|
+
@request.env["devise.mapping"] = Devise.mappings[:user]
|
4
|
+
user = Fabricate(:user)
|
5
|
+
user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the "confirmable" module
|
6
|
+
sign_in user
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
config.include Devise::TestHelpers, :type => :controller
|
13
|
+
config.extend ControllerMacros, :type => :controller
|
14
|
+
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
class User < ActiveRecord::Base
|
2
2
|
|
3
|
-
|
3
|
+
devise :database_authenticatable, :registerable,
|
4
|
+
:recoverable, :rememberable, :trackable, :validatable, password_length: 6..128
|
5
|
+
|
6
|
+
has_one :passport, as: :identity, class_name: "DoorkeeperSsoClient::Passport"
|
4
7
|
|
5
8
|
validates :email, :first_name, presence: true
|
6
9
|
|
data/spec/test_app/db/schema.rb
CHANGED
@@ -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.
|
@@ -45,6 +44,15 @@ ActiveRecord::Schema.define(version: 20150603155315) do
|
|
45
44
|
t.string "first_name"
|
46
45
|
t.string "last_name"
|
47
46
|
t.string "lang", default: "EN"
|
47
|
+
t.string "encrypted_password", default: "", null: false
|
48
|
+
t.string "reset_password_token"
|
49
|
+
t.datetime "reset_password_sent_at"
|
50
|
+
t.datetime "remember_created_at"
|
51
|
+
t.integer "sign_in_count", default: 0, null: false
|
52
|
+
t.datetime "current_sign_in_at"
|
53
|
+
t.datetime "last_sign_in_at"
|
54
|
+
t.inet "current_sign_in_ip"
|
55
|
+
t.inet "last_sign_in_ip"
|
48
56
|
t.datetime "created_at"
|
49
57
|
t.datetime "updated_at"
|
50
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: doorkeeper_sso_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Wong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
@@ -290,6 +290,20 @@ dependencies:
|
|
290
290
|
- - ">="
|
291
291
|
- !ruby/object:Gem::Version
|
292
292
|
version: '1'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: devise
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - "~>"
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '3.0'
|
300
|
+
type: :development
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - "~>"
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '3.0'
|
293
307
|
description: Provides SSO auth functionality based on Omniauth
|
294
308
|
email:
|
295
309
|
- john@flexnode.com
|
@@ -301,25 +315,31 @@ files:
|
|
301
315
|
- lib/doorkeeper_sso_client/config.rb
|
302
316
|
- lib/doorkeeper_sso_client/engine.rb
|
303
317
|
- lib/doorkeeper_sso_client/logging.rb
|
318
|
+
- lib/doorkeeper_sso_client/mixins.rb
|
319
|
+
- lib/doorkeeper_sso_client/mixins/controller_helpers.rb
|
304
320
|
- lib/doorkeeper_sso_client/passport_verifier.rb
|
305
321
|
- lib/doorkeeper_sso_client/version.rb
|
306
322
|
- lib/doorkeeper_sso_client/warden/hooks/after_fetch.rb
|
307
323
|
- lib/omniauth/strategies/doorkeeper_sso.rb
|
308
324
|
- lib/tasks/doorkeeper_sso_client_tasks.rake
|
309
325
|
- spec/controllers/doorkeeper_sso_client/callbacks_controller_spec.rb
|
326
|
+
- spec/fabricators/passport_fabricator.rb
|
310
327
|
- spec/fabricators/user_fabricator.rb
|
311
328
|
- spec/lib/doorkeeper_sso_client/config_spec.rb
|
329
|
+
- spec/lib/doorkeeper_sso_client/mixins/controller_helper_spec.rb
|
312
330
|
- spec/models/config_spec.rb
|
313
331
|
- spec/models/passport_spec.rb
|
314
332
|
- spec/rails_helper.rb
|
315
333
|
- spec/spec_helper.rb
|
316
334
|
- spec/support/database_cleaner.rb
|
335
|
+
- spec/support/devise.rb
|
317
336
|
- spec/support/fabrication.rb
|
318
337
|
- spec/support/vcr.rb
|
319
338
|
- spec/test_app/Rakefile
|
320
339
|
- spec/test_app/app/controllers/application_controller.rb
|
321
340
|
- spec/test_app/app/models/user.rb
|
322
341
|
- spec/test_app/config/database.yml
|
342
|
+
- spec/test_app/config/routes.rb
|
323
343
|
- spec/test_app/db/schema.rb
|
324
344
|
homepage: https://github.com/flexnode/sso_client
|
325
345
|
licenses:
|
@@ -347,18 +367,22 @@ specification_version: 4
|
|
347
367
|
summary: Client gem for flexnode/doorkeeper_sso
|
348
368
|
test_files:
|
349
369
|
- spec/controllers/doorkeeper_sso_client/callbacks_controller_spec.rb
|
370
|
+
- spec/fabricators/passport_fabricator.rb
|
350
371
|
- spec/fabricators/user_fabricator.rb
|
351
372
|
- spec/lib/doorkeeper_sso_client/config_spec.rb
|
373
|
+
- spec/lib/doorkeeper_sso_client/mixins/controller_helper_spec.rb
|
352
374
|
- spec/models/config_spec.rb
|
353
375
|
- spec/models/passport_spec.rb
|
354
376
|
- spec/rails_helper.rb
|
355
377
|
- spec/spec_helper.rb
|
356
378
|
- spec/support/database_cleaner.rb
|
379
|
+
- spec/support/devise.rb
|
357
380
|
- spec/support/fabrication.rb
|
358
381
|
- spec/support/vcr.rb
|
359
382
|
- spec/test_app/app/controllers/application_controller.rb
|
360
383
|
- spec/test_app/app/models/user.rb
|
361
384
|
- spec/test_app/config/database.yml
|
385
|
+
- spec/test_app/config/routes.rb
|
362
386
|
- spec/test_app/db/schema.rb
|
363
387
|
- spec/test_app/Rakefile
|
364
388
|
has_rdoc:
|