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