foyer 0.2.0 → 0.2.1
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/.rubocop.yml +56 -0
- data/.travis.yml +11 -0
- data/Rakefile +2 -2
- data/foyer.gemspec +15 -14
- data/lib/foyer.rb +7 -2
- data/lib/foyer/controller/helpers.rb +8 -10
- data/lib/foyer/grape/helpers.rb +4 -5
- data/lib/foyer/omniauth_callbacks_controller.rb +5 -2
- data/lib/foyer/rails.rb +10 -9
- data/lib/foyer/version.rb +1 -1
- data/spec/controllers/authenticated_controller_spec.rb +8 -8
- data/spec/dummy/app/controllers/sessions_controller.rb +1 -1
- data/spec/dummy/config.ru +1 -1
- data/spec/dummy/config/application.rb +4 -5
- data/spec/dummy/config/boot.rb +1 -1
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/config/routes.rb +2 -3
- data/spec/foyer/controller/helpers_spec.rb +7 -7
- data/spec/foyer/grape/helpers_spec.rb +7 -7
- data/spec/foyer/omniauth_callbacks_controller_spec.rb +3 -4
- data/spec/integration/authenticate_via_route_constraint_spec.rb +8 -11
- data/spec/spec_helper.rb +5 -5
- metadata +30 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7b52e3b4d9a31b491c4b49eb4b6df196df66eba
|
4
|
+
data.tar.gz: bef81cb0602a6812eb29a53d113ed2a9c524dd49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91440e9420e1ac33b39c437a1468a94abd0031fb12a306b56defe59ab9cbe416efd61dabbc162f29c23d44879315a48035cba13421d55b902c886a94139934ca
|
7
|
+
data.tar.gz: 46ae76bee314261f51fe6dc7a7f22eeebeb901a7d6aac83943620a9741ecc690eb5e1727b9b669fc43de313e855a7030b36165c0f8df8d9959f1ece73c2452b6
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
AllCops:
|
2
|
+
RunRailsCops: true
|
3
|
+
Exclude:
|
4
|
+
# Rubocop's default
|
5
|
+
- 'vendor/**/*'
|
6
|
+
# To ensure smooth `rake rails:update`, we exclude some of the Rails' generated files
|
7
|
+
# please add new Rails' generated files to this list after running `rake rails:update` (if any)
|
8
|
+
# please add your exclude specific for this project after this section
|
9
|
+
- 'bin/**/*'
|
10
|
+
- 'config/boot.rb'
|
11
|
+
- 'config/application.rb'
|
12
|
+
- 'config/environment.rb'
|
13
|
+
- 'config/environments/development.rb'
|
14
|
+
- 'config/environments/production.rb'
|
15
|
+
- 'config/environments/test.rb'
|
16
|
+
- 'config/initializers/assets.rb'
|
17
|
+
- 'config/initializers/backtrace_silencers.rb'
|
18
|
+
- 'config/initializers/cookies_serializer.rb'
|
19
|
+
- 'config/initializers/filter_parameter_logging.rb'
|
20
|
+
- 'config/initializers/inflections.rb'
|
21
|
+
- 'config/initializers/mime_types.rb'
|
22
|
+
- 'config/initializers/session_store.rb'
|
23
|
+
- 'config/initializers/wrap_parameters.rb'
|
24
|
+
- 'db/schema.rb'
|
25
|
+
- 'script/**/*'
|
26
|
+
# Common generated files (projects independent)
|
27
|
+
- 'config/unicorn.rb'
|
28
|
+
- 'config/initializers/devise.rb'
|
29
|
+
# Add your exclude files specific to this project here
|
30
|
+
- 'spec/dummy/config/initializers/secret_token.rb'
|
31
|
+
|
32
|
+
Style/AlignParameters:
|
33
|
+
Enabled: true
|
34
|
+
EnforcedStyle: with_fixed_indentation
|
35
|
+
|
36
|
+
Style/Documentation:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
# If the project still supporting ruby 1.8, uncomment the following lines to force Rubocop
|
40
|
+
# to use old hash_rockets syntax, if left commented, Rubocop will force the newer ruby19 syntax
|
41
|
+
# Style/HashSyntax:
|
42
|
+
# EnforcedStyle: hash_rockets
|
43
|
+
|
44
|
+
Style/SingleSpaceBeforeFirstArg:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
##################### Metrics ##################################
|
48
|
+
|
49
|
+
Metrics/LineLength:
|
50
|
+
Max: 120
|
51
|
+
AllowURI: true
|
52
|
+
|
53
|
+
Metrics/MethodLength:
|
54
|
+
CountComments: false
|
55
|
+
Exclude:
|
56
|
+
- 'db/migrate/*'
|
data/.travis.yml
ADDED
data/Rakefile
CHANGED
data/foyer.gemspec
CHANGED
@@ -4,23 +4,24 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'foyer/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'foyer'
|
8
8
|
spec.version = Foyer::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
9
|
+
spec.authors = ['Jason Nochlin']
|
10
|
+
spec.email = ['jason@gaggleamp.com']
|
11
|
+
spec.summary = 'Authentication layer for OmniAuth'
|
12
|
+
spec.description = 'Authentication layer for OmniAuth'
|
13
|
+
spec.homepage = ''
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.executables = spec.files.grep(%r{^bin
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)
|
19
|
-
spec.require_paths = [
|
17
|
+
spec.executables = spec.files.grep(%r{^bin\/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)\/})
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency
|
21
|
+
spec.add_dependency 'rails', '~> 4.0'
|
22
22
|
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.5'
|
24
|
+
spec.add_development_dependency 'rake'
|
25
|
+
spec.add_development_dependency 'rspec-rails', '~> 3.0.0.beta'
|
26
|
+
spec.add_development_dependency 'rubocop'
|
26
27
|
end
|
data/lib/foyer.rb
CHANGED
@@ -3,6 +3,9 @@ require 'foyer/engine'
|
|
3
3
|
require 'foyer/rails'
|
4
4
|
|
5
5
|
module Foyer
|
6
|
+
# Class variables are required for the implementation of this class.
|
7
|
+
# rubocop:disable Style/ClassVars
|
8
|
+
|
6
9
|
mattr_accessor :identity_provider
|
7
10
|
@@identity_provider = :gaggleamp
|
8
11
|
|
@@ -10,10 +13,12 @@ module Foyer
|
|
10
13
|
@@session_key = 'foyer.authenticated_user'
|
11
14
|
|
12
15
|
mattr_accessor :user_finder
|
13
|
-
@@user_finder =
|
16
|
+
@@user_finder = ->(_) { fail 'Override this method' }
|
14
17
|
|
15
18
|
mattr_accessor :token_finder
|
16
|
-
@@token_finder =
|
19
|
+
@@token_finder = ->(_) { fail 'Override this method' }
|
20
|
+
|
21
|
+
# rubocop:enable Style/ClassVars
|
17
22
|
|
18
23
|
module Controller
|
19
24
|
autoload :Helpers, 'foyer/controller/helpers'
|
@@ -8,11 +8,12 @@ module Foyer
|
|
8
8
|
end
|
9
9
|
|
10
10
|
protected
|
11
|
+
|
11
12
|
def sign_in(user)
|
12
13
|
session[Foyer.session_key] = {
|
13
14
|
id: user.id,
|
14
|
-
current_sign_in_at: Time.now,
|
15
|
-
current_sign_in_ip: request.ip
|
15
|
+
current_sign_in_at: Time.now, # rubocop:disable Rails/TimeZone
|
16
|
+
current_sign_in_ip: request.ip
|
16
17
|
}.with_indifferent_access
|
17
18
|
end
|
18
19
|
|
@@ -21,7 +22,7 @@ module Foyer
|
|
21
22
|
end
|
22
23
|
|
23
24
|
def user_signed_in?
|
24
|
-
user_session.present?
|
25
|
+
user_session.present? && current_user.present?
|
25
26
|
end
|
26
27
|
|
27
28
|
def current_user
|
@@ -36,16 +37,13 @@ module Foyer
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def authenticate_user!
|
39
|
-
|
40
|
-
|
41
|
-
end
|
40
|
+
return if user_signed_in?
|
41
|
+
redirect_to "/auth/#{Foyer.identity_provider}?origin=#{CGI.escape request.fullpath}"
|
42
42
|
end
|
43
43
|
|
44
44
|
module ClassMethods
|
45
|
-
def set_user_finder(&blk)
|
46
|
-
|
47
|
-
raise ":user_finder must accept 1 argument (user_id)"
|
48
|
-
end
|
45
|
+
def set_user_finder(&blk) # rubocop:disable Style/AccessorMethodName
|
46
|
+
fail ':user_finder must accept 1 argument (user_id)' unless blk.arity == 1
|
49
47
|
Foyer.user_finder = blk
|
50
48
|
end
|
51
49
|
end
|
data/lib/foyer/grape/helpers.rb
CHANGED
@@ -4,13 +4,14 @@ module Foyer
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
protected
|
7
|
+
|
7
8
|
def user_signed_in?
|
8
9
|
current_user.present?
|
9
10
|
end
|
10
11
|
|
11
12
|
def current_user
|
12
13
|
return nil unless headers['Authorization'] =~ /^Bearer (.*)/m
|
13
|
-
@current_user ||= Foyer.token_finder.call(
|
14
|
+
@current_user ||= Foyer.token_finder.call(Regexp.last_match[1])
|
14
15
|
end
|
15
16
|
|
16
17
|
def authenticate_user!
|
@@ -18,10 +19,8 @@ module Foyer
|
|
18
19
|
end
|
19
20
|
|
20
21
|
module ClassMethods
|
21
|
-
def set_token_finder(&blk)
|
22
|
-
|
23
|
-
raise ":token_finder must accept 1 argument (token)"
|
24
|
-
end
|
22
|
+
def set_token_finder(&blk) # rubocop:disable Style/AccessorMethodName
|
23
|
+
fail ':token_finder must accept 1 argument (token)' unless blk.arity == 1
|
25
24
|
Foyer.token_finder = blk
|
26
25
|
end
|
27
26
|
end
|
@@ -3,15 +3,18 @@ module Foyer
|
|
3
3
|
include Controller::Helpers
|
4
4
|
|
5
5
|
def callback
|
6
|
-
|
6
|
+
fail NotImplementedError
|
7
7
|
end
|
8
8
|
|
9
9
|
protected
|
10
|
+
|
10
11
|
def after_sign_in_path
|
11
|
-
origin ||
|
12
|
+
return origin if origin.to_s.match(%r{^\/}) || origin.to_s.match(%r{^#{request.scheme}://#{request.host}})
|
13
|
+
root_path
|
12
14
|
end
|
13
15
|
|
14
16
|
private
|
17
|
+
|
15
18
|
def origin
|
16
19
|
request.env['omniauth.origin']
|
17
20
|
end
|
data/lib/foyer/rails.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
require 'action_dispatch/routing/mapper'
|
2
2
|
|
3
|
-
module ActionDispatch
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
module ActionDispatch
|
4
|
+
module Routing
|
5
|
+
class Mapper
|
6
|
+
def authenticate(guard = nil)
|
7
|
+
constraint = lambda do |request|
|
8
|
+
user_id = request.env['rack.session'][Foyer.session_key].try(:with_indifferent_access).try(:[], :id)
|
9
|
+
guard.nil? ? true : guard.call(Foyer.user_finder.call(user_id)) if user_id
|
9
10
|
end
|
10
|
-
end
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
constraints(constraint) do
|
13
|
+
yield
|
14
|
+
end
|
14
15
|
end
|
15
16
|
end
|
16
17
|
end
|
data/lib/foyer/version.rb
CHANGED
@@ -2,15 +2,15 @@ require 'ostruct'
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe AuthenticatedController do
|
6
|
-
describe
|
7
|
-
it
|
5
|
+
describe AuthenticatedController, type: :controller do
|
6
|
+
describe 'not authenticated' do
|
7
|
+
it 'redirects to the identity_provider' do
|
8
8
|
get :index
|
9
9
|
|
10
10
|
expect(response.location).to match('/auth/gaggleamp')
|
11
11
|
end
|
12
12
|
|
13
|
-
it
|
13
|
+
it 'sets origin to the location an unauthenticated user was trying to access' do
|
14
14
|
get :index
|
15
15
|
|
16
16
|
response.location.split('?').last.tap do |query_string|
|
@@ -20,14 +20,14 @@ describe AuthenticatedController do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
describe
|
24
|
-
let(:user) { OpenStruct.new.tap { |i| i.id = rand(
|
23
|
+
describe 'after authenticating' do
|
24
|
+
let(:user) { OpenStruct.new.tap { |i| i.id = rand(10_000) } }
|
25
25
|
before do
|
26
26
|
sign_in user
|
27
|
-
Foyer.user_finder =
|
27
|
+
Foyer.user_finder = ->(_) { user }
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
30
|
+
it 'allows user to access the action' do
|
31
31
|
get :index
|
32
32
|
|
33
33
|
expect(response.status).to eq 200
|
data/spec/dummy/config.ru
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require File.expand_path('../boot', __FILE__)
|
2
2
|
|
3
3
|
# Pick the frameworks you want:
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
4
|
+
require 'action_controller/railtie'
|
5
|
+
require 'action_mailer/railtie'
|
6
|
+
require 'sprockets/railtie'
|
7
7
|
|
8
8
|
Bundler.require(*Rails.groups)
|
9
|
-
require
|
9
|
+
require 'foyer'
|
10
10
|
|
11
11
|
module Dummy
|
12
12
|
class Application < Rails::Application
|
@@ -23,4 +23,3 @@ module Dummy
|
|
23
23
|
# config.i18n.default_locale = :de
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
data/spec/dummy/config/boot.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Set up gems listed in the Gemfile.
|
2
2
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
|
3
3
|
|
4
|
-
require 'bundler/setup' if File.
|
4
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
5
5
|
$LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__)
|
@@ -14,7 +14,7 @@ Dummy::Application.configure do
|
|
14
14
|
|
15
15
|
# Configure static asset server for tests with Cache-Control for performance.
|
16
16
|
config.serve_static_assets = true
|
17
|
-
config.static_cache_control =
|
17
|
+
config.static_cache_control = 'public, max-age=3600'
|
18
18
|
|
19
19
|
# Show full error reports and disable caching.
|
20
20
|
config.consider_all_requests_local = true
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
|
-
|
3
2
|
post '/sign_in' => 'sessions#developer'
|
4
3
|
|
5
|
-
get '/authenticated' =>
|
4
|
+
get '/authenticated' => 'authenticated#index'
|
6
5
|
|
7
6
|
authenticate do
|
8
7
|
get '/authenticated_by_route_constraint' => 'unauthenticated#index'
|
9
8
|
end
|
10
9
|
|
11
|
-
authenticate
|
10
|
+
authenticate ->(_user) { false } do
|
12
11
|
get '/authenticated_by_route_constraint_which_blocks_all_users' => 'unauthenticated#index'
|
13
12
|
end
|
14
13
|
end
|
@@ -15,23 +15,23 @@ describe Foyer::Controller::Helpers do
|
|
15
15
|
|
16
16
|
subject { IncludesFoyerControllerHelpers.new }
|
17
17
|
|
18
|
-
describe
|
19
|
-
it
|
20
|
-
expect
|
18
|
+
describe '.set_user_finder' do
|
19
|
+
it 'sets the :user_finder configuration to the provided block' do
|
20
|
+
expect do
|
21
21
|
subject.class_eval do
|
22
22
|
set_user_finder do |user_id|
|
23
23
|
user_id
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
26
|
+
end.to change(Foyer, :user_finder)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
describe
|
31
|
-
it
|
30
|
+
describe '#current_user' do
|
31
|
+
it 'calls the user_finder method' do
|
32
32
|
@called = false
|
33
33
|
subject.send(:user_session)[:id] = '_'
|
34
|
-
Foyer.user_finder =
|
34
|
+
Foyer.user_finder = ->(_) { @called = true }
|
35
35
|
|
36
36
|
subject.send :current_user
|
37
37
|
|
@@ -11,22 +11,22 @@ describe Foyer::Grape::Helpers do
|
|
11
11
|
|
12
12
|
subject { IncludesFoyerGrapeHelpers.new }
|
13
13
|
|
14
|
-
describe
|
15
|
-
it
|
16
|
-
expect
|
14
|
+
describe '.set_token_finder' do
|
15
|
+
it 'sets the :token_finder configuration to the provided block' do
|
16
|
+
expect do
|
17
17
|
subject.class_eval do
|
18
18
|
set_token_finder do |token|
|
19
19
|
token
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
end.to change(Foyer, :token_finder)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
describe
|
27
|
-
it
|
26
|
+
describe '#current_user' do
|
27
|
+
it 'calls the token_finder method' do
|
28
28
|
@called = false
|
29
|
-
Foyer.token_finder =
|
29
|
+
Foyer.token_finder = ->(_) { @called = true }
|
30
30
|
|
31
31
|
subject.send :current_user
|
32
32
|
|
@@ -2,22 +2,21 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Foyer
|
4
4
|
describe OmniauthCallbacksController, type: :controller do
|
5
|
-
describe
|
5
|
+
describe '#after_sign_in_path' do
|
6
6
|
before do
|
7
7
|
allow(controller).to receive(:root_path).and_return '/'
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'defaults to root path' do
|
11
11
|
expect(controller.send :after_sign_in_path).to eq('/')
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
14
|
+
it 'returns omniauth.origin if available' do
|
15
15
|
origin = '/some_path'
|
16
16
|
@request.env['omniauth.origin'] = origin
|
17
17
|
|
18
18
|
expect(controller.send :after_sign_in_path).to eq(origin)
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
22
21
|
end
|
23
22
|
end
|
@@ -1,14 +1,12 @@
|
|
1
1
|
require 'ostruct'
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
describe
|
5
|
-
it
|
6
|
-
expect {
|
7
|
-
get '/authenticated_by_route_constraint'
|
8
|
-
}.to raise_error(ActionController::RoutingError)
|
4
|
+
describe 'authentication via routes helper', type: :request do
|
5
|
+
it 'does not allow an unauthenticated user to access to route' do
|
6
|
+
expect { get '/authenticated_by_route_constraint' }.to raise_error(ActionController::RoutingError)
|
9
7
|
end
|
10
8
|
|
11
|
-
it
|
9
|
+
it 'allows authenticated users to access the route' do
|
12
10
|
post '/sign_in'
|
13
11
|
|
14
12
|
get '/authenticated_by_route_constraint'
|
@@ -16,13 +14,12 @@ describe "authentication via routes helper" do
|
|
16
14
|
expect(response).to be_success
|
17
15
|
end
|
18
16
|
|
19
|
-
it
|
20
|
-
Foyer.user_finder =
|
17
|
+
it 'allows only certain users to access the route' do
|
18
|
+
Foyer.user_finder = ->(_user_id) { nil }
|
21
19
|
|
22
20
|
post '/sign_in'
|
23
21
|
|
24
|
-
expect {
|
25
|
-
|
26
|
-
}.to raise_error(ActionController::RoutingError)
|
22
|
+
expect { get '/authenticated_by_route_constraint_which_blocks_all_users' }
|
23
|
+
.to raise_error(ActionController::RoutingError)
|
27
24
|
end
|
28
25
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Configure Rails Envinronment
|
2
|
-
ENV[
|
3
|
-
require File.expand_path(
|
2
|
+
ENV['RAILS_ENV'] = 'test'
|
3
|
+
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
4
4
|
|
5
5
|
require 'rspec/rails'
|
6
6
|
|
7
|
-
ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')
|
7
|
+
ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../')
|
8
8
|
|
9
9
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
10
10
|
# in spec/support/ and its subdirectories.
|
11
|
-
Dir[File.join(ENGINE_RAILS_ROOT,
|
11
|
+
Dir[File.join(ENGINE_RAILS_ROOT, 'spec/support/**/*.rb')].each { |f| require f }
|
12
12
|
|
13
13
|
RSpec.configure do |config|
|
14
|
-
config.include Foyer::TestHelpers, :
|
14
|
+
config.include Foyer::TestHelpers, type: :controller
|
15
15
|
end
|
metadata
CHANGED
@@ -1,71 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foyer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Nochlin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec-rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 3.0.0.beta
|
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
68
|
version: 3.0.0.beta
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: Authentication layer for OmniAuth
|
70
84
|
email:
|
71
85
|
- jason@gaggleamp.com
|
@@ -73,8 +87,10 @@ executables: []
|
|
73
87
|
extensions: []
|
74
88
|
extra_rdoc_files: []
|
75
89
|
files:
|
76
|
-
- .gitignore
|
77
|
-
- .rspec
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".rubocop.yml"
|
93
|
+
- ".travis.yml"
|
78
94
|
- Gemfile
|
79
95
|
- LICENSE.txt
|
80
96
|
- README.md
|
@@ -138,12 +154,12 @@ require_paths:
|
|
138
154
|
- lib
|
139
155
|
required_ruby_version: !ruby/object:Gem::Requirement
|
140
156
|
requirements:
|
141
|
-
- -
|
157
|
+
- - ">="
|
142
158
|
- !ruby/object:Gem::Version
|
143
159
|
version: '0'
|
144
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
161
|
requirements:
|
146
|
-
- -
|
162
|
+
- - ">="
|
147
163
|
- !ruby/object:Gem::Version
|
148
164
|
version: '0'
|
149
165
|
requirements: []
|