omniauth-multipassword 0.4.2 → 2.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|