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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb90fce03417e63ffe090a2f3e361eaa3b7791d8
4
- data.tar.gz: a8c6ce0b3cb250b2d24337409faf7496ab6ae5c3
3
+ metadata.gz: 8ee8d13e7e88d390380516c9def8b0c68a93d3f7
4
+ data.tar.gz: 34dd41b3aff5231b38fe5f848a135b23bdc71dac
5
5
  SHA512:
6
- metadata.gz: e915e2cabf6f82644d3e54f28cdbffa877bc1af4ba833a43dfab0675318bedb5e8e1e595b40ba791ede90ec5f5a4e4864bb0575d63fd00e422d102522d07ba47
7
- data.tar.gz: 5f6d0c4c69a05e0d81ea0e714ee8f6e6764ceb926d465f9a712648327961e5c8d2094351682e1a7da60ea30832554b7cca4d24c350b2261e2c29014d4aec5052
6
+ metadata.gz: f8a82ab4fc2068f55b0b0c5f4d5d3997d1d0b657baf9872923e819b949187c3ccaf75859c36cd6ba3293eaa63a315448d8de8ed8a3be30c17ee1e9cf97909c8a
7
+ data.tar.gz: c1413b8872de5be18ee5b5c475c8abd211301c4bf837fdc0ecd7bb9370b8c68d018341bd15141d562a30059b476a57d6dbb4c97a5cc52565afd6ebadf7d8b64b
@@ -1,3 +1,4 @@
1
+ require 'doorkeeper_sso_client/mixins'
1
2
  require "doorkeeper_sso_client/engine"
2
3
  require 'doorkeeper_sso_client/config'
3
4
  require 'doorkeeper_sso_client/logging'
@@ -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,6 @@
1
+ require 'doorkeeper_sso_client/mixins/controller_helpers'
2
+
3
+ module DoorkeeperSsoClient
4
+ module Mixins
5
+ end
6
+ 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,3 +1,3 @@
1
1
  module DoorkeeperSsoClient
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -0,0 +1,5 @@
1
+ Fabricator('DoorkeeperSsoClient::Passport') do
2
+ uid { SecureRandom.uuid }
3
+ secret { SecureRandom.uuid }
4
+ token { SecureRandom.urlsafe_base64(64) }
5
+ 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
- has_one :passport, as: :identity
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
 
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ devise_for :users
3
+ 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.
@@ -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.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-06-17 00:00:00.000000000 Z
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: