omniauth-multipassword 0.4.2 → 2.0.0.rc1
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 +5 -5
- data/.editorconfig +12 -0
- data/.github/workflows/test.yml +46 -0
- data/.rspec +1 -0
- data/.rubocop.yml +10 -0
- data/.travis.yml +6 -5
- data/CHANGELOG.md +18 -0
- data/Gemfile +14 -4
- data/Rakefile +3 -1
- data/lib/omniauth/multipassword/base.rb +17 -8
- data/lib/omniauth/multipassword/version.rb +6 -4
- data/lib/omniauth/strategies/multi_password.rb +20 -15
- data/lib/omniauth-multipassword.rb +5 -3
- data/omniauth-multipassword.gemspec +17 -11
- data/spec/omniauth/multipassword/base_spec.rb +18 -24
- data/spec/omniauth/strategy/multi_password_spec.rb +8 -21
- data/spec/spec_helper.rb +14 -19
- data/spec/support/strategies.rb +27 -0
- metadata +17 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4c42cc59feffb560101a1ca960ea75b5099054097dc688570f814fde8a07d33a
|
4
|
+
data.tar.gz: d8a94787d62f2d9ab2a8435cbaa81d087a4a2332e703a560fa907e3da0c9f9d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: caef3ce2da16ace112cb73c2f178fb3909ad5fe184f57912cc0ae50622511e6f581638c0f4ab79d84c39229486b2114cc4799d47ba1057e02129392f892e4173
|
7
|
+
data.tar.gz: 2bb20ced2304ba9496012e1b186619b7149fc4c19265b013305afb1ce68a3c76b12fa1d7300432f38851fe6d7e1c7fa21225f337b227da89662b47ace17d9937
|
data/.editorconfig
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
---
|
2
|
+
name: test
|
3
|
+
on: push
|
4
|
+
jobs:
|
5
|
+
rspec:
|
6
|
+
name: "Ruby ${{ matrix.ruby }}"
|
7
|
+
runs-on: ubuntu-20.04
|
8
|
+
|
9
|
+
strategy:
|
10
|
+
fail-fast: false
|
11
|
+
matrix:
|
12
|
+
ruby:
|
13
|
+
- "3.0"
|
14
|
+
- "2.7"
|
15
|
+
- "2.6"
|
16
|
+
- "2.5"
|
17
|
+
|
18
|
+
steps:
|
19
|
+
- uses: actions/checkout@master
|
20
|
+
- uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: ${{ matrix.ruby }}
|
23
|
+
bundler-cache: True
|
24
|
+
env:
|
25
|
+
BUNDLE_WITHOUT: development
|
26
|
+
BUNDLE_JOBS: 4
|
27
|
+
BUNDLE_RETRY: 3
|
28
|
+
|
29
|
+
- run: bundle exec rspec --color
|
30
|
+
|
31
|
+
rubocop:
|
32
|
+
name: rubocop
|
33
|
+
runs-on: ubuntu-20.04
|
34
|
+
|
35
|
+
steps:
|
36
|
+
- uses: actions/checkout@master
|
37
|
+
- uses: ruby/setup-ruby@v1
|
38
|
+
with:
|
39
|
+
ruby-version: 3.0
|
40
|
+
bundler-cache: True
|
41
|
+
env:
|
42
|
+
BUNDLE_WITHOUT: development
|
43
|
+
BUNDLE_JOBS: 4
|
44
|
+
BUNDLE_RETRY: 3
|
45
|
+
|
46
|
+
- run: bundle exec rubocop --parallel --fail-level E
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--backtrace
|
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# CHANGELOG
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a Changelog](http://keepachangelog.com/).
|
5
|
+
|
6
|
+
## Unreleased
|
7
|
+
---
|
8
|
+
|
9
|
+
### New
|
10
|
+
|
11
|
+
### Changes
|
12
|
+
|
13
|
+
### Fixes
|
14
|
+
|
15
|
+
### Breaks
|
16
|
+
* Updated strategy to OmniAuth >= 2.0
|
17
|
+
|
18
|
+
|
data/Gemfile
CHANGED
@@ -1,10 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
# Specify your gem's dependencies in omniauth-multipassword.gemspec
|
4
6
|
gemspec
|
5
7
|
|
6
8
|
gem 'rake'
|
7
|
-
gem '
|
8
|
-
|
9
|
-
|
10
|
-
gem
|
9
|
+
gem 'rake-release'
|
10
|
+
|
11
|
+
group :test do
|
12
|
+
gem 'rack-test'
|
13
|
+
|
14
|
+
gem 'rspec', '~> 3.0'
|
15
|
+
|
16
|
+
gem 'codecov', require: false
|
17
|
+
gem 'simplecov', require: false
|
18
|
+
|
19
|
+
gem 'my-rubocop', github: 'jgraichen/my-rubocop', ref: 'v2'
|
20
|
+
end
|
data/Rakefile
CHANGED
@@ -1,21 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module OmniAuth
|
2
4
|
module MultiPassword
|
3
5
|
module Base
|
4
6
|
def self.included(base)
|
5
7
|
base.class_eval do
|
6
|
-
option :title,
|
7
|
-
option :fields, [
|
8
|
+
option :title, 'Restricted Access'
|
9
|
+
option :fields, %i[username password]
|
8
10
|
|
9
|
-
uid
|
11
|
+
uid { username }
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
13
15
|
def username_id
|
14
|
-
options[:fields][0] ||
|
16
|
+
options[:fields][0] || 'username'
|
15
17
|
end
|
16
18
|
|
17
19
|
def password_id
|
18
|
-
options[:fields][1] ||
|
20
|
+
options[:fields][1] || 'password'
|
19
21
|
end
|
20
22
|
|
21
23
|
def username
|
@@ -37,11 +39,18 @@ module OmniAuth
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def request_phase
|
40
|
-
OmniAuth::Form.build(:
|
41
|
-
f.text_field
|
42
|
-
f.password_field
|
42
|
+
OmniAuth::Form.build(title: options.title, url: callback_url) do |f|
|
43
|
+
f.text_field 'Username', username_id
|
44
|
+
f.password_field 'Password', password_id
|
43
45
|
end.to_response
|
44
46
|
end
|
47
|
+
|
48
|
+
def other_phase
|
49
|
+
# OmniAuth, by default, disables "GET" requests for security reasons.
|
50
|
+
# This effectively disables showing a password form on a GET request to
|
51
|
+
# the `request_phase`. Instead, we hook the GET requests here.
|
52
|
+
return request_phase if on_request_path?
|
53
|
+
end
|
45
54
|
end
|
46
55
|
end
|
47
56
|
end
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Omniauth
|
2
4
|
module Multipassword
|
3
5
|
module VERSION
|
4
|
-
MAJOR =
|
5
|
-
MINOR =
|
6
|
-
PATCH =
|
7
|
-
STAGE =
|
6
|
+
MAJOR = 2
|
7
|
+
MINOR = 0
|
8
|
+
PATCH = 0
|
9
|
+
STAGE = 'rc1'
|
8
10
|
|
9
11
|
def self.to_s
|
10
12
|
[MAJOR, MINOR, PATCH, STAGE].reject(&:nil?).join '.'
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'omniauth'
|
4
|
+
require 'omniauth/multipassword/base'
|
3
5
|
|
4
6
|
module OmniAuth
|
5
7
|
module Strategies
|
@@ -8,12 +10,16 @@ module OmniAuth
|
|
8
10
|
include OmniAuth::MultiPassword::Base
|
9
11
|
|
10
12
|
def initialize(app, *args, &block)
|
11
|
-
super(app, *args) do
|
13
|
+
super(app, *args) do
|
14
|
+
# Do pass an empty block, as otherwise the captured block would be
|
15
|
+
# passed to `super`, but this needs to be evaluate inside this
|
16
|
+
# middleware, not omniauth's Rack builder instance.
|
17
|
+
end
|
12
18
|
|
13
|
-
if block.arity
|
14
|
-
instance_eval
|
19
|
+
if block.arity.zero?
|
20
|
+
instance_eval(&block)
|
15
21
|
else
|
16
|
-
|
22
|
+
yield self
|
17
23
|
end
|
18
24
|
end
|
19
25
|
|
@@ -25,16 +31,16 @@ module OmniAuth
|
|
25
31
|
def authenticator(klass, *args, &block)
|
26
32
|
unless klass.is_a?(Class)
|
27
33
|
begin
|
28
|
-
klass = OmniAuth::Strategies.const_get(
|
34
|
+
klass = OmniAuth::Strategies.const_get(OmniAuth::Utils.camelize(klass.to_s).to_s)
|
29
35
|
rescue NameError
|
30
|
-
raise LoadError
|
31
|
-
|
36
|
+
raise LoadError.new("Could not find matching strategy for #{klass.inspect}." \
|
37
|
+
"You may need to install an additional gem (such as omniauth-#{klass}).")
|
32
38
|
end
|
33
39
|
end
|
34
40
|
|
35
41
|
args << block if block
|
36
42
|
@authenticators ||= []
|
37
|
-
@authenticators << [
|
43
|
+
@authenticators << [klass, args]
|
38
44
|
end
|
39
45
|
|
40
46
|
def callback_phase
|
@@ -43,7 +49,7 @@ module OmniAuth
|
|
43
49
|
if authenticate(username, password)
|
44
50
|
super
|
45
51
|
else
|
46
|
-
|
52
|
+
fail!(:invalid_credentials)
|
47
53
|
end
|
48
54
|
end
|
49
55
|
|
@@ -52,11 +58,9 @@ module OmniAuth
|
|
52
58
|
begin
|
53
59
|
@authenticator = auth[0].new @app, *auth[1]
|
54
60
|
@authenticator.init_authenticator(@request, @env, username)
|
55
|
-
if @authenticator.authenticate(username, password)
|
56
|
-
return true
|
57
|
-
end
|
61
|
+
return true if @authenticator.authenticate(username, password)
|
58
62
|
rescue Error => e
|
59
|
-
OmniAuth.logger.warn "OmniAuth ERR >>> "
|
63
|
+
OmniAuth.logger.warn "OmniAuth ERR >>> #{e}"
|
60
64
|
end
|
61
65
|
@authenticator = nil
|
62
66
|
end
|
@@ -65,6 +69,7 @@ module OmniAuth
|
|
65
69
|
|
66
70
|
def name
|
67
71
|
return @authenticator.name if @authenticator
|
72
|
+
|
68
73
|
super
|
69
74
|
end
|
70
75
|
|
@@ -1,3 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'omniauth/multipassword/base'
|
4
|
+
require 'omniauth/multipassword/version'
|
5
|
+
require 'omniauth/strategies/multi_password'
|
@@ -1,20 +1,26 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('lib/omniauth/multipassword/version', __dir__)
|
3
4
|
|
4
5
|
Gem::Specification.new do |gem|
|
5
|
-
gem.authors = [
|
6
|
-
gem.email = [
|
7
|
-
gem.description =
|
8
|
-
gem.summary =
|
9
|
-
gem.homepage =
|
6
|
+
gem.authors = ['Jan Graichen']
|
7
|
+
gem.email = ['jgraichen@altimos.de']
|
8
|
+
gem.description = 'A OmniAuth strategy to authenticate using different passwort strategies.'
|
9
|
+
gem.summary = 'A OmniAuth strategy to authenticate using different passwort strategies.'
|
10
|
+
gem.homepage = 'https://github.com/jgraichen/omniauth-multipassword'
|
10
11
|
gem.license = 'MIT'
|
11
12
|
|
12
|
-
gem.
|
13
|
+
gem.required_ruby_version = '>= 2.5'
|
14
|
+
gem.metadata = {
|
15
|
+
'rubygems_mfa_required' => 'true',
|
16
|
+
}
|
17
|
+
|
18
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map {|f| File.basename(f) }
|
13
19
|
gem.files = `git ls-files`.split("\n")
|
14
20
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
|
-
gem.name =
|
16
|
-
gem.require_paths = [
|
21
|
+
gem.name = 'omniauth-multipassword'
|
22
|
+
gem.require_paths = ['lib']
|
17
23
|
gem.version = Omniauth::Multipassword::VERSION
|
18
24
|
|
19
|
-
gem.add_dependency 'omniauth', '~>
|
25
|
+
gem.add_dependency 'omniauth', '~> 2.0'
|
20
26
|
end
|
@@ -1,48 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'rack/test'
|
3
5
|
|
4
|
-
describe OmniAuth::MultiPassword::Base do
|
5
|
-
|
6
|
-
let(:args) { [] }
|
7
|
-
let(:block) { nil }
|
8
|
-
|
9
|
-
class OmniAuth::Strategy::OneTest
|
10
|
-
include OmniAuth::Strategy
|
11
|
-
include OmniAuth::MultiPassword::Base
|
12
|
-
|
13
|
-
def authenticate(username, password)
|
14
|
-
username == 'john' && password == 'secret'
|
15
|
-
end
|
16
|
-
end
|
6
|
+
describe OmniAuth::MultiPassword::Base do # rubocop:disable RSpec/FilePath
|
7
|
+
subject { strategy }
|
17
8
|
|
9
|
+
let(:app) { instance_double(Proc) }
|
18
10
|
let(:strategy) do
|
19
|
-
OmniAuth::
|
11
|
+
OmniAuth::Strategies::OneTest.new(app, *args, &block)
|
20
12
|
end
|
21
|
-
|
22
|
-
|
13
|
+
let(:args) { [] }
|
14
|
+
let(:block) { nil }
|
23
15
|
|
24
16
|
describe '#username_id' do
|
25
|
-
subject { strategy.username_id }
|
17
|
+
subject(:username_id) { strategy.username_id }
|
26
18
|
|
27
19
|
it 'defaults to :username' do
|
28
|
-
|
20
|
+
expect(username_id).to eq :username
|
29
21
|
end
|
30
22
|
|
31
23
|
context 'when configured' do
|
32
|
-
let(:args) { [{fields: [
|
24
|
+
let(:args) { [{fields: %i[user pass]}] }
|
25
|
+
|
33
26
|
it { is_expected.to eq :user }
|
34
27
|
end
|
35
28
|
end
|
36
29
|
|
37
30
|
describe '#password_id' do
|
38
|
-
subject { strategy.password_id }
|
31
|
+
subject(:password_id) { strategy.password_id }
|
39
32
|
|
40
33
|
it 'defaults to :password' do
|
41
|
-
|
34
|
+
expect(password_id).to eq :password
|
42
35
|
end
|
43
36
|
|
44
37
|
context 'when configured' do
|
45
|
-
let(:args) { [{fields: [
|
38
|
+
let(:args) { [{fields: %i[user pass]}] }
|
39
|
+
|
46
40
|
it { is_expected.to eq :pass }
|
47
41
|
end
|
48
42
|
end
|
@@ -51,11 +45,11 @@ describe OmniAuth::MultiPassword::Base do
|
|
51
45
|
include Rack::Test::Methods
|
52
46
|
|
53
47
|
let(:app) do
|
54
|
-
Rack::Builder.new
|
48
|
+
Rack::Builder.new do
|
55
49
|
use OmniAuth::Test::PhonySession
|
56
50
|
use OmniAuth::Strategies::OneTest
|
57
51
|
run ->(env) { [404, {'Content-Type' => 'text/plain'}, [env.key?('omniauth.auth').to_s]] }
|
58
|
-
|
52
|
+
end.to_app
|
59
53
|
end
|
60
54
|
|
61
55
|
it 'shows login FORM' do
|
@@ -1,36 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'rack/test'
|
3
5
|
|
4
|
-
describe OmniAuth::Strategies::MultiPassword do
|
6
|
+
describe OmniAuth::Strategies::MultiPassword do # rubocop:disable RSpec/FilePath
|
5
7
|
include Rack::Test::Methods
|
6
8
|
|
7
|
-
class OmniAuth::Strategies::OneTest
|
8
|
-
include OmniAuth::Strategy
|
9
|
-
include OmniAuth::MultiPassword::Base
|
10
|
-
|
11
|
-
def authenticate(username, password)
|
12
|
-
username == 'john' && password == 'secret'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class OmniAuth::Strategies::TwoTest
|
17
|
-
include OmniAuth::Strategy
|
18
|
-
include OmniAuth::MultiPassword::Base
|
19
|
-
|
20
|
-
def authenticate(username, password)
|
21
|
-
username == 'jane' && password == '1234'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
9
|
let(:app) do
|
26
|
-
Rack::Builder.new
|
10
|
+
Rack::Builder.new do
|
27
11
|
use OmniAuth::Test::PhonySession
|
28
12
|
use OmniAuth::Strategies::MultiPassword do
|
29
13
|
authenticator :one_test
|
30
14
|
authenticator :two_test
|
31
15
|
end
|
32
16
|
run ->(env) { [404, {'Content-Type' => 'text/plain'}, [env['omniauth.auth']['uid'].to_s]] }
|
33
|
-
|
17
|
+
end.to_app
|
34
18
|
end
|
35
19
|
|
36
20
|
it 'shows login FORM' do
|
@@ -41,17 +25,20 @@ describe OmniAuth::Strategies::MultiPassword do
|
|
41
25
|
|
42
26
|
it 'redirect on all failed strategies' do
|
43
27
|
post '/auth/multipassword/callback', username: 'paul', password: 'wrong'
|
28
|
+
|
44
29
|
expect(last_response).to be_redirect
|
45
30
|
expect(last_response.headers['Location']).to eq '/auth/failure?message=invalid_credentials&strategy=multipassword'
|
46
31
|
end
|
47
32
|
|
48
33
|
it 'authenticates john' do
|
49
34
|
post '/auth/multipassword/callback', username: 'john', password: 'secret'
|
35
|
+
|
50
36
|
expect(last_response.body).to eq 'john'
|
51
37
|
end
|
52
38
|
|
53
39
|
it 'authenticates jane' do
|
54
40
|
post '/auth/multipassword/callback', username: 'jane', password: '1234'
|
41
|
+
|
55
42
|
expect(last_response.body).to eq 'jane'
|
56
43
|
end
|
57
44
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,30 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rspec'
|
2
4
|
require 'simplecov'
|
3
5
|
|
4
|
-
if ENV['CI']
|
5
|
-
|
6
|
-
|
7
|
-
CodeClimate::TestReporter.start
|
8
|
-
rescue LoadError
|
9
|
-
end
|
10
|
-
SimpleCov.start
|
6
|
+
if ENV['CI']
|
7
|
+
require 'codecov'
|
8
|
+
SimpleCov.formatter = SimpleCov::Formatter::Codecov
|
11
9
|
end
|
12
10
|
|
13
|
-
|
14
|
-
|
15
|
-
Dir[File.expand_path('spec/support/**/*.rb')].each {|f| require f }
|
16
|
-
|
17
|
-
# Disable omniauth logger
|
18
|
-
class NullLogger < Logger
|
19
|
-
def initialize(*args)
|
20
|
-
end
|
21
|
-
|
22
|
-
def add(*args, &block)
|
23
|
-
end
|
11
|
+
SimpleCov.start do
|
12
|
+
add_filter 'spec'
|
24
13
|
end
|
25
14
|
|
26
|
-
|
15
|
+
require 'omniauth-multipassword'
|
16
|
+
|
17
|
+
Dir[File.expand_path('spec/support/**/*.rb')].sort.each {|f| require f }
|
27
18
|
|
28
19
|
RSpec.configure do |config|
|
29
20
|
config.order = 'random'
|
21
|
+
|
22
|
+
config.before do
|
23
|
+
OmniAuth.config.logger = Logger.new(IO::NULL)
|
24
|
+
end
|
30
25
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OmniAuth
|
4
|
+
module Strategies
|
5
|
+
class OneTest
|
6
|
+
include OmniAuth::Strategy
|
7
|
+
include OmniAuth::MultiPassword::Base
|
8
|
+
|
9
|
+
def authenticate(username, password)
|
10
|
+
username == 'john' && password == 'secret'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module OmniAuth
|
17
|
+
module Strategies
|
18
|
+
class TwoTest
|
19
|
+
include OmniAuth::Strategy
|
20
|
+
include OmniAuth::MultiPassword::Base
|
21
|
+
|
22
|
+
def authenticate(username, password)
|
23
|
+
username == 'jane' && password == '1234'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-multipassword
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 2.0.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Graichen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
@@ -16,23 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.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
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
description: A OmniAuth strategy to authenticate using different passwort strategies.
|
28
28
|
email:
|
29
|
-
-
|
29
|
+
- jgraichen@altimos.de
|
30
30
|
executables: []
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
+
- ".editorconfig"
|
35
|
+
- ".github/workflows/test.yml"
|
34
36
|
- ".gitignore"
|
37
|
+
- ".rspec"
|
38
|
+
- ".rubocop.yml"
|
35
39
|
- ".travis.yml"
|
40
|
+
- CHANGELOG.md
|
36
41
|
- Gemfile
|
37
42
|
- LICENSE
|
38
43
|
- README.md
|
@@ -45,10 +50,12 @@ files:
|
|
45
50
|
- spec/omniauth/multipassword/base_spec.rb
|
46
51
|
- spec/omniauth/strategy/multi_password_spec.rb
|
47
52
|
- spec/spec_helper.rb
|
53
|
+
- spec/support/strategies.rb
|
48
54
|
homepage: https://github.com/jgraichen/omniauth-multipassword
|
49
55
|
licenses:
|
50
56
|
- MIT
|
51
|
-
metadata:
|
57
|
+
metadata:
|
58
|
+
rubygems_mfa_required: 'true'
|
52
59
|
post_install_message:
|
53
60
|
rdoc_options: []
|
54
61
|
require_paths:
|
@@ -57,15 +64,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
57
64
|
requirements:
|
58
65
|
- - ">="
|
59
66
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
67
|
+
version: '2.5'
|
61
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
69
|
requirements:
|
63
|
-
- - "
|
70
|
+
- - ">"
|
64
71
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
72
|
+
version: 1.3.1
|
66
73
|
requirements: []
|
67
|
-
|
68
|
-
rubygems_version: 2.4.6
|
74
|
+
rubygems_version: 3.2.22
|
69
75
|
signing_key:
|
70
76
|
specification_version: 4
|
71
77
|
summary: A OmniAuth strategy to authenticate using different passwort strategies.
|