omniauth-identity 3.0.9 → 3.1.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
- checksums.yaml.gz.sig +2 -0
- data/CHANGELOG.md +122 -53
- data/CONTRIBUTING.md +164 -0
- data/{LICENSE → LICENSE.txt} +5 -3
- data/README.md +239 -88
- data/SECURITY.md +23 -0
- data/lib/omniauth/identity/model.rb +19 -17
- data/lib/omniauth/identity/models/active_record.rb +4 -3
- data/lib/omniauth/identity/models/couch_potato.rb +6 -5
- data/lib/omniauth/identity/models/mongoid.rb +5 -4
- data/lib/omniauth/identity/models/nobrainer.rb +5 -4
- data/lib/omniauth/identity/models/sequel.rb +28 -15
- data/lib/omniauth/identity/secure_password.rb +51 -24
- data/lib/{omniauth-identity → omniauth/identity}/version.rb +3 -1
- data/lib/omniauth/identity.rb +25 -9
- data/lib/omniauth/strategies/identity.rb +25 -28
- data/lib/omniauth-identity.rb +13 -2
- data.tar.gz.sig +2 -0
- metadata +134 -40
- metadata.gz.sig +0 -0
- data/spec/omniauth/identity/model_spec.rb +0 -44
- data/spec/omniauth/identity/models/active_record_spec.rb +0 -40
- data/spec/omniauth/identity/models/sequel_spec.rb +0 -39
- data/spec/omniauth/identity/secure_password_spec.rb +0 -27
- data/spec/omniauth/strategies/identity_spec.rb +0 -373
- data/spec/spec_helper.rb +0 -40
- data/spec/support/shared_contexts/instance_with_instance_methods.rb +0 -89
- data/spec/support/shared_contexts/model_with_class_methods.rb +0 -29
- data/spec/support/shared_contexts/persistable_model.rb +0 -24
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "sequel"
|
4
4
|
|
5
5
|
module OmniAuth
|
6
6
|
module Identity
|
@@ -17,20 +17,33 @@ module OmniAuth
|
|
17
17
|
# NOTE: Using the deprecated :validations_class_methods because it defines
|
18
18
|
# validates_confirmation_of, while current :validation_helpers does not.
|
19
19
|
# plugin :validation_helpers
|
20
|
-
plugin
|
21
|
-
|
22
|
-
include
|
23
|
-
include
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
20
|
+
plugin(:validation_class_methods)
|
21
|
+
|
22
|
+
include(::OmniAuth::Identity::Model)
|
23
|
+
include(::OmniAuth::Identity::SecurePassword)
|
24
|
+
|
25
|
+
# `validations: true` (default) would normally incur a dependency on ActiveModel.
|
26
|
+
# Starting in v3.1 we check if ActiveModel is defined before we actually set validations.
|
27
|
+
# If ActiveModel isn't defined, it may be unexpected that validations are not being set,
|
28
|
+
# so this will result in a warning deprecation until release of v4,
|
29
|
+
# at which point the default (for Sequel ORM only) will change to `validations: false`
|
30
|
+
has_secure_password(validations: OmniAuth::Identity::Version.major < 4)
|
31
|
+
|
32
|
+
class << self
|
33
|
+
def auth_key=(key)
|
34
|
+
super
|
35
|
+
# Sequel version of validates_uniqueness_of! Does not incur ActiveRecord dependency!
|
36
|
+
validates_uniqueness_of(:key, case_sensitive: false)
|
37
|
+
end
|
38
|
+
|
39
|
+
# @param arguments [any] -
|
40
|
+
# Filtering is probably the most common dataset modifying action done in Sequel.
|
41
|
+
# Both the where and filter methods filter the dataset by modifying the dataset’s WHERE clause.
|
42
|
+
# Both accept a wide variety of input formats, which are passed as arguments below.
|
43
|
+
# See: https://sequel.jeremyevans.net/rdoc/files/doc/querying_rdoc.html#label-Filters
|
44
|
+
def locate(arguments)
|
45
|
+
where(arguments).first
|
46
|
+
end
|
34
47
|
end
|
35
48
|
|
36
49
|
def persisted?
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "bcrypt"
|
4
4
|
|
5
5
|
module OmniAuth
|
6
6
|
module Identity
|
@@ -11,13 +11,13 @@ module OmniAuth
|
|
11
11
|
# a has_secure_password method.
|
12
12
|
module SecurePassword
|
13
13
|
def self.included(base)
|
14
|
-
base.extend
|
14
|
+
base.extend(ClassMethods) unless base.respond_to?(:has_secure_password)
|
15
15
|
end
|
16
16
|
|
17
17
|
# BCrypt hash function can handle maximum 72 bytes, and if we pass
|
18
18
|
# password of length more than 72 bytes it ignores extra characters.
|
19
19
|
# Hence need to put a restriction on password length.
|
20
|
-
MAX_PASSWORD_LENGTH_ALLOWED =
|
20
|
+
MAX_PASSWORD_LENGTH_ALLOWED = BCrypt::Engine::MAX_SECRET_BYTESIZE
|
21
21
|
|
22
22
|
class << self
|
23
23
|
attr_accessor :min_cost # :nodoc:
|
@@ -29,7 +29,15 @@ module OmniAuth
|
|
29
29
|
# This mechanism requires you to have a +XXX_digest+ attribute.
|
30
30
|
# Where +XXX+ is the attribute name of your desired password.
|
31
31
|
#
|
32
|
-
#
|
32
|
+
# For Supported ActiveModel-based ORMs:
|
33
|
+
#
|
34
|
+
# * ActiveRecord
|
35
|
+
# * CouchPotato
|
36
|
+
# * Mongoid
|
37
|
+
# * NoBrainer
|
38
|
+
#
|
39
|
+
# the following validations are added automatically:
|
40
|
+
#
|
33
41
|
# * Password must be present on creation
|
34
42
|
# * Password length should be less than or equal to 72 bytes
|
35
43
|
# * Confirmation of password (using a +XXX_confirmation+ attribute)
|
@@ -39,8 +47,14 @@ module OmniAuth
|
|
39
47
|
# it). When this attribute has a +nil+ value, the validation will not be
|
40
48
|
# triggered.
|
41
49
|
#
|
42
|
-
# For
|
43
|
-
#
|
50
|
+
# For Supported non-ActiveModel-based ORMs:
|
51
|
+
#
|
52
|
+
# * Sequel
|
53
|
+
#
|
54
|
+
# validations are disabled by default.
|
55
|
+
#
|
56
|
+
# It is possible to disable the default validations in any ORM
|
57
|
+
# by passing <tt>validations: false</tt> as an argument.
|
44
58
|
#
|
45
59
|
# Add bcrypt (~> 3.1.7) to Gemfile to use #has_secure_password:
|
46
60
|
#
|
@@ -73,47 +87,60 @@ module OmniAuth
|
|
73
87
|
# This is to avoid ActiveModel (and by extension the entire framework)
|
74
88
|
# being dependent on a binary library.
|
75
89
|
begin
|
76
|
-
require
|
90
|
+
require "bcrypt"
|
77
91
|
rescue LoadError
|
78
|
-
warn
|
92
|
+
warn("You don't have bcrypt installed in your application. Please add it to your Gemfile and run bundle install")
|
79
93
|
raise
|
80
94
|
end
|
81
95
|
|
82
|
-
include
|
96
|
+
include(InstanceMethodsOnActivation.new(attribute))
|
83
97
|
|
84
98
|
if validations
|
85
|
-
|
99
|
+
if !defined?(ActiveModel)
|
100
|
+
warn("[DEPRECATION][omniauth-identity v3.1][w/ Sequel ORM] has_secure_password(validations: true) is default, but incurs dependency on ActiveModel. v4 will default to `has_secure_password(validations: false)`.")
|
101
|
+
begin
|
102
|
+
require "active_model"
|
103
|
+
rescue LoadError
|
104
|
+
warn("You don't have active_model installed in your application. Please add it to your Gemfile and run bundle install")
|
105
|
+
raise
|
106
|
+
end
|
107
|
+
end
|
108
|
+
include(ActiveModel::Validations)
|
86
109
|
|
87
110
|
# This ensures the model has a password by checking whether the password_digest
|
88
111
|
# is present, so that this works with both new and existing records. However,
|
89
112
|
# when there is an error, the message is added to the password attribute instead
|
90
113
|
# so that the error message will make sense to the end-user.
|
91
114
|
validate do |record|
|
92
|
-
record.errors.add(attribute, :blank) unless record.public_send("#{attribute}_digest").present?
|
115
|
+
record.errors.add(attribute, :blank) unless record.public_send(:"#{attribute}_digest").present?
|
93
116
|
end
|
94
117
|
|
95
|
-
validates_length_of
|
96
|
-
validates_confirmation_of
|
118
|
+
validates_length_of(attribute, maximum: MAX_PASSWORD_LENGTH_ALLOWED)
|
119
|
+
validates_confirmation_of(attribute, allow_blank: true)
|
97
120
|
end
|
98
121
|
end
|
99
122
|
end
|
100
123
|
|
101
124
|
class InstanceMethodsOnActivation < Module
|
102
125
|
def initialize(attribute)
|
103
|
-
attr_reader
|
126
|
+
attr_reader(attribute)
|
104
127
|
|
105
|
-
define_method("#{attribute}=") do |unencrypted_password|
|
128
|
+
define_method(:"#{attribute}=") do |unencrypted_password|
|
106
129
|
if unencrypted_password.nil?
|
107
|
-
public_send("#{attribute}_digest=", nil)
|
130
|
+
public_send(:"#{attribute}_digest=", nil)
|
108
131
|
elsif !unencrypted_password.empty?
|
109
|
-
instance_variable_set("@#{attribute}", unencrypted_password)
|
110
|
-
cost = ActiveModel::SecurePassword
|
111
|
-
|
132
|
+
instance_variable_set(:"@#{attribute}", unencrypted_password)
|
133
|
+
cost = if defined?(ActiveModel::SecurePassword)
|
134
|
+
ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost
|
135
|
+
else
|
136
|
+
BCrypt::Engine.cost
|
137
|
+
end
|
138
|
+
public_send(:"#{attribute}_digest=", BCrypt::Password.create(unencrypted_password, cost: cost))
|
112
139
|
end
|
113
140
|
end
|
114
141
|
|
115
|
-
define_method("#{attribute}_confirmation=") do |unencrypted_password|
|
116
|
-
instance_variable_set("@#{attribute}_confirmation", unencrypted_password)
|
142
|
+
define_method(:"#{attribute}_confirmation=") do |unencrypted_password|
|
143
|
+
instance_variable_set(:"@#{attribute}_confirmation", unencrypted_password)
|
117
144
|
end
|
118
145
|
|
119
146
|
# Returns +self+ if the password is correct, otherwise +false+.
|
@@ -126,12 +153,12 @@ module OmniAuth
|
|
126
153
|
# user.save
|
127
154
|
# user.authenticate_password('notright') # => false
|
128
155
|
# user.authenticate_password('mUc3m00RsqyRe') # => user
|
129
|
-
define_method("authenticate_#{attribute}") do |unencrypted_password|
|
130
|
-
attribute_digest = public_send("#{attribute}_digest")
|
156
|
+
define_method(:"authenticate_#{attribute}") do |unencrypted_password|
|
157
|
+
attribute_digest = public_send(:"#{attribute}_digest")
|
131
158
|
BCrypt::Password.new(attribute_digest).is_password?(unencrypted_password) && self
|
132
159
|
end
|
133
160
|
|
134
|
-
alias_method
|
161
|
+
alias_method(:authenticate, :authenticate_password) if attribute == :password
|
135
162
|
end
|
136
163
|
end
|
137
164
|
end
|
data/lib/omniauth/identity.rb
CHANGED
@@ -1,21 +1,37 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
# TODO[v4]: Remove this deprecation with v4 release.
|
4
|
+
unless defined?(OmniAuth::Identity::Version::VERSION)
|
5
|
+
# external gems
|
6
|
+
require "version_gem"
|
7
|
+
|
8
|
+
# this library's version
|
9
|
+
require "omniauth/identity/version"
|
10
|
+
|
11
|
+
# Ensure version is configured before loading the rest of the library
|
12
|
+
OmniAuth::Identity::Version.class_eval do
|
13
|
+
extend VersionGem::Basic
|
14
|
+
end
|
15
|
+
|
16
|
+
warn "[DEPRECATION][omniauth-identity v3.1] Change `require 'omniauth/identity'` to `require 'omniauth-identity'`. Support for `require 'omniauth/identity'` will be removed in v4."
|
17
|
+
end
|
18
|
+
|
19
|
+
require "omniauth"
|
4
20
|
|
5
21
|
module OmniAuth
|
6
22
|
module Strategies
|
7
|
-
autoload :Identity,
|
23
|
+
autoload :Identity, "omniauth/strategies/identity"
|
8
24
|
end
|
9
25
|
|
10
26
|
module Identity
|
11
|
-
autoload :Model,
|
12
|
-
autoload :SecurePassword,
|
27
|
+
autoload :Model, "omniauth/identity/model"
|
28
|
+
autoload :SecurePassword, "omniauth/identity/secure_password"
|
13
29
|
module Models
|
14
|
-
autoload :ActiveRecord,
|
15
|
-
autoload :Mongoid,
|
16
|
-
autoload :CouchPotatoModule,
|
17
|
-
autoload :NoBrainer,
|
18
|
-
autoload :Sequel,
|
30
|
+
autoload :ActiveRecord, "omniauth/identity/models/active_record"
|
31
|
+
autoload :Mongoid, "omniauth/identity/models/mongoid"
|
32
|
+
autoload :CouchPotatoModule, "omniauth/identity/models/couch_potato"
|
33
|
+
autoload :NoBrainer, "omniauth/identity/models/nobrainer"
|
34
|
+
autoload :Sequel, "omniauth/identity/models/sequel"
|
19
35
|
end
|
20
36
|
end
|
21
37
|
end
|
@@ -19,12 +19,12 @@ module OmniAuth
|
|
19
19
|
option :on_validation, nil # See #registration_phase
|
20
20
|
option :on_registration, nil # See #registration_phase
|
21
21
|
option :on_failed_registration, nil # See #registration_phase
|
22
|
-
option :locate_conditions, ->(req) { {
|
23
|
-
option :create_identity_link_text,
|
24
|
-
option :registration_failure_message,
|
25
|
-
option :validation_failure_message,
|
26
|
-
option :title,
|
27
|
-
option :registration_form_title,
|
22
|
+
option :locate_conditions, ->(req) { {model.auth_key => req.params["auth_key"]} }
|
23
|
+
option :create_identity_link_text, "Create an Identity"
|
24
|
+
option :registration_failure_message, "One or more fields were invalid"
|
25
|
+
option :validation_failure_message, "Validation failed"
|
26
|
+
option :title, "Identity Verification" # Title for Login Form
|
27
|
+
option :registration_form_title, "Register Identity" # Title for Registration Form
|
28
28
|
|
29
29
|
def request_phase
|
30
30
|
if options[:on_login]
|
@@ -71,14 +71,14 @@ module OmniAuth
|
|
71
71
|
|
72
72
|
def registration_phase
|
73
73
|
attributes = (options[:fields] + DEFAULT_REGISTRATION_FIELDS).each_with_object({}) do |k, h|
|
74
|
-
h[k] = request[k.to_s]
|
74
|
+
h[k] = request.params[k.to_s]
|
75
75
|
end
|
76
|
-
if model.respond_to?(:column_names) && model.column_names.include?(
|
77
|
-
attributes.reverse_merge!(provider:
|
76
|
+
if model.respond_to?(:column_names) && model.column_names.include?("provider")
|
77
|
+
attributes.reverse_merge!(provider: "identity")
|
78
78
|
end
|
79
79
|
if validating?
|
80
80
|
@identity = model.new(attributes)
|
81
|
-
env[
|
81
|
+
env["omniauth.identity"] = @identity
|
82
82
|
if valid?
|
83
83
|
@identity.save
|
84
84
|
registration_result
|
@@ -87,7 +87,7 @@ module OmniAuth
|
|
87
87
|
end
|
88
88
|
else
|
89
89
|
@identity = model.create(attributes)
|
90
|
-
env[
|
90
|
+
env["omniauth.identity"] = @identity
|
91
91
|
registration_result
|
92
92
|
end
|
93
93
|
end
|
@@ -96,7 +96,7 @@ module OmniAuth
|
|
96
96
|
info { identity.info }
|
97
97
|
|
98
98
|
def registration_path
|
99
|
-
options[:registration_path] || "#{path_prefix}/#{name}/register"
|
99
|
+
options[:registration_path] || "#{script_name}#{path_prefix}/#{name}/register"
|
100
100
|
end
|
101
101
|
|
102
102
|
def on_registration_path?
|
@@ -104,13 +104,10 @@ module OmniAuth
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def identity
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
conditions = options[:locate_conditions].to_hash
|
112
|
-
end
|
113
|
-
@identity ||= model.authenticate(conditions, request['password'])
|
107
|
+
conditions = options[:locate_conditions]
|
108
|
+
conditions = conditions.is_a?(Proc) ? instance_exec(request, &conditions).to_hash : conditions.to_hash
|
109
|
+
|
110
|
+
@identity ||= model.authenticate(conditions, request.params["password"])
|
114
111
|
end
|
115
112
|
|
116
113
|
def model
|
@@ -122,24 +119,24 @@ module OmniAuth
|
|
122
119
|
def build_omniauth_login_form
|
123
120
|
OmniAuth::Form.build(
|
124
121
|
title: options[:title],
|
125
|
-
url: callback_path
|
122
|
+
url: callback_path,
|
126
123
|
) do |f|
|
127
|
-
f.text_field
|
128
|
-
f.password_field
|
124
|
+
f.text_field("Login", "auth_key")
|
125
|
+
f.password_field("Password", "password")
|
129
126
|
if options[:enable_registration]
|
130
|
-
f.html
|
127
|
+
f.html("<p align='center'><a href='#{registration_path}'>#{options[:create_identity_link_text]}</a></p>")
|
131
128
|
end
|
132
129
|
end
|
133
130
|
end
|
134
131
|
|
135
132
|
def build_omniauth_registration_form(validation_message)
|
136
133
|
OmniAuth::Form.build(title: options[:registration_form_title]) do |f|
|
137
|
-
f.html
|
134
|
+
f.html("<p style='color:red'>#{validation_message}</p>") if validation_message
|
138
135
|
options[:fields].each do |field|
|
139
|
-
f.text_field
|
136
|
+
f.text_field(field.to_s.capitalize, field.to_s)
|
140
137
|
end
|
141
|
-
f.password_field
|
142
|
-
f.password_field
|
138
|
+
f.password_field("Password", "password")
|
139
|
+
f.password_field("Confirm Password", "password_confirmation")
|
143
140
|
end
|
144
141
|
end
|
145
142
|
|
@@ -169,7 +166,7 @@ module OmniAuth
|
|
169
166
|
|
170
167
|
def registration_result
|
171
168
|
if @identity.persisted?
|
172
|
-
env[
|
169
|
+
env["PATH_INFO"] = "#{path_prefix}/#{name}/callback"
|
173
170
|
callback_phase
|
174
171
|
else
|
175
172
|
registration_failure(options[:registration_failure_message])
|
data/lib/omniauth-identity.rb
CHANGED
@@ -1,4 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
require
|
3
|
+
# external gems
|
4
|
+
require "version_gem"
|
5
|
+
|
6
|
+
# this library's version
|
7
|
+
require "omniauth/identity/version"
|
8
|
+
|
9
|
+
# Ensure version is configured before loading the rest of the library
|
10
|
+
OmniAuth::Identity::Version.class_eval do
|
11
|
+
extend VersionGem::Basic
|
12
|
+
end
|
13
|
+
|
14
|
+
# this library
|
15
|
+
require "omniauth/identity"
|
data.tar.gz.sig
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-identity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
@@ -9,37 +9,133 @@ authors:
|
|
9
9
|
- Michael Bleigh
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
|
-
cert_chain:
|
13
|
-
|
12
|
+
cert_chain:
|
13
|
+
- |
|
14
|
+
-----BEGIN CERTIFICATE-----
|
15
|
+
MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
|
16
|
+
ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
17
|
+
A2NvbTAeFw0yNDA5MjAwODU4NDJaFw0yNTA5MjAwODU4NDJaMEMxFTATBgNVBAMM
|
18
|
+
DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
19
|
+
LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAjrxsKObI
|
20
|
+
rFQjBpzvVfqnT6JlF8/pkpgEEjFh7ex3zIerfuHzZvSrx+sRDGxQ8koWWG0Wjx8s
|
21
|
+
wkBZ5dIqvl0g3sWP5asa28u/09opxkQTC1Ao77iYxcBcwoCe/Dpf1m4Q/m6oH0kL
|
22
|
+
2AZVNJQL3UkqAcLS0tsj/s/jAKnVlsaZZE5gQiIIi8HtkvSsajtx+Cq2AxDvcWvV
|
23
|
+
/CliD+pmzYkTjvjwGm8yeyFGGGgrisJMryiZdZlkTwrQSjCzudIKbLeuG8Se4JTD
|
24
|
+
TAcT+rPubr27v1jwmtIjtiot3rf4nof7LHLb122a/0VR7cC7xPLnXw0Cq1BShvoq
|
25
|
+
/GKRdSwMNinTOGkFTK1gKnjN+3iD4zyXU3XO3CXoTr+Ju8fXPN1x4tpOMgbv8dme
|
26
|
+
WbcQMOH9ZjmA5w0bSVRL1c3NhRRpUzrKTNXBEvqOyWjUnintxWKj+cRXx+z+dUgI
|
27
|
+
dL3kj68fcsiTgl75In3C485pnCMmq1eLuVoiy3jkLNOn2lHeLt9ZK63LAgMBAAGj
|
28
|
+
fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRhfc+2UaVYd74p
|
29
|
+
yJ1JclGiUYN8+jAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
|
30
|
+
A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
|
31
|
+
ggGBAA4fLU2+mQ++jBhVM2IeyvQdw1nm+0thkH4Ldv8ZOBm5ZxCPGIMoYliDDzg4
|
32
|
+
4JDFxZR1wR4sdrz/K5tWtEkN23SKzopwbNb1NIQRSLQ7nOoc+4bkuz9xwKinmIvF
|
33
|
+
D+5qsl2S27WLKFreMDtGoh0CREIMBUxU4rGTh0gtzmweGR+fnOShg4Jo0kxrjU5h
|
34
|
+
uYk/uVE+bn/jOEGs43GvKXZLyshpBrZjQ+ArbvxDht5t35zbSxerbUxUPZUbXUCW
|
35
|
+
tTyh38a9UYjAAHvnh6Y4Fi9wd4/pGNsektrzB3z/zlVj4YF2TMLX9XfNJWEGRGpO
|
36
|
+
sSkLYdtEX1WQAmuZtActVW2cL3HdQaRbiv7VbfpA0eSk0ZdZHvBCl516ZZu10uX6
|
37
|
+
82W1mg6fuezdpeBOiXwrEbZSt/oGiF4V511F6nd55p0okwHc/6nS10F/3aKJ4gwC
|
38
|
+
I5o+DRfXQHqKucx1ldFHvI2rE/kSCWqGTHN2eyu1sqCPeOoIMxrltJhaejKPkxqj
|
39
|
+
zaF9Og==
|
40
|
+
-----END CERTIFICATE-----
|
41
|
+
date: 2024-11-18 00:00:00.000000000 Z
|
14
42
|
dependencies:
|
15
43
|
- !ruby/object:Gem::Dependency
|
16
44
|
name: bcrypt
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '3.1'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '3.1'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: omniauth
|
17
59
|
requirement: !ruby/object:Gem::Requirement
|
18
60
|
requirements:
|
19
61
|
- - ">="
|
20
62
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
63
|
+
version: '1'
|
22
64
|
type: :runtime
|
23
65
|
prerelease: false
|
24
66
|
version_requirements: !ruby/object:Gem::Requirement
|
25
67
|
requirements:
|
26
68
|
- - ">="
|
27
69
|
- !ruby/object:Gem::Version
|
28
|
-
version: '
|
70
|
+
version: '1'
|
29
71
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
72
|
+
name: version_gem
|
31
73
|
requirement: !ruby/object:Gem::Requirement
|
32
74
|
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.1'
|
33
78
|
- - ">="
|
34
79
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
80
|
+
version: 1.1.4
|
36
81
|
type: :runtime
|
37
82
|
prerelease: false
|
38
83
|
version_requirements: !ruby/object:Gem::Requirement
|
39
84
|
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '1.1'
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 1.1.4
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: activerecord
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '5'
|
98
|
+
type: :development
|
99
|
+
prerelease: false
|
100
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '5'
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: anonymous_active_record
|
107
|
+
requirement: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '1.0'
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 1.0.9
|
115
|
+
type: :development
|
116
|
+
prerelease: false
|
117
|
+
version_requirements: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - "~>"
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '1.0'
|
40
122
|
- - ">="
|
41
123
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
124
|
+
version: 1.0.9
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: appraisal
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2.5'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.5'
|
43
139
|
- !ruby/object:Gem::Dependency
|
44
140
|
name: rack-test
|
45
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,6 +185,9 @@ dependencies:
|
|
89
185
|
- - "~>"
|
90
186
|
- !ruby/object:Gem::Version
|
91
187
|
version: '1.0'
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: 1.0.6
|
92
191
|
type: :development
|
93
192
|
prerelease: false
|
94
193
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -96,32 +195,37 @@ dependencies:
|
|
96
195
|
- - "~>"
|
97
196
|
- !ruby/object:Gem::Version
|
98
197
|
version: '1.0'
|
198
|
+
- - ">="
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: 1.0.6
|
99
201
|
- !ruby/object:Gem::Dependency
|
100
202
|
name: sqlite3
|
101
203
|
requirement: !ruby/object:Gem::Requirement
|
102
204
|
requirements:
|
103
|
-
- - "
|
205
|
+
- - ">="
|
104
206
|
- !ruby/object:Gem::Version
|
105
|
-
version: '1
|
207
|
+
version: '1'
|
106
208
|
type: :development
|
107
209
|
prerelease: false
|
108
210
|
version_requirements: !ruby/object:Gem::Requirement
|
109
211
|
requirements:
|
110
|
-
- - "
|
212
|
+
- - ">="
|
111
213
|
- !ruby/object:Gem::Version
|
112
|
-
version: '1
|
214
|
+
version: '1'
|
113
215
|
description: Traditional username/password based authentication system for OmniAuth
|
114
216
|
email:
|
217
|
+
- peter.boling@gmail.com
|
115
218
|
executables: []
|
116
219
|
extensions: []
|
117
220
|
extra_rdoc_files: []
|
118
221
|
files:
|
119
222
|
- CHANGELOG.md
|
120
223
|
- CODE_OF_CONDUCT.md
|
121
|
-
-
|
224
|
+
- CONTRIBUTING.md
|
225
|
+
- LICENSE.txt
|
122
226
|
- README.md
|
227
|
+
- SECURITY.md
|
123
228
|
- lib/omniauth-identity.rb
|
124
|
-
- lib/omniauth-identity/version.rb
|
125
229
|
- lib/omniauth/identity.rb
|
126
230
|
- lib/omniauth/identity/model.rb
|
127
231
|
- lib/omniauth/identity/models/active_record.rb
|
@@ -130,23 +234,22 @@ files:
|
|
130
234
|
- lib/omniauth/identity/models/nobrainer.rb
|
131
235
|
- lib/omniauth/identity/models/sequel.rb
|
132
236
|
- lib/omniauth/identity/secure_password.rb
|
237
|
+
- lib/omniauth/identity/version.rb
|
133
238
|
- lib/omniauth/strategies/identity.rb
|
134
|
-
|
135
|
-
- spec/omniauth/identity/models/active_record_spec.rb
|
136
|
-
- spec/omniauth/identity/models/sequel_spec.rb
|
137
|
-
- spec/omniauth/identity/secure_password_spec.rb
|
138
|
-
- spec/omniauth/strategies/identity_spec.rb
|
139
|
-
- spec/spec_helper.rb
|
140
|
-
- spec/support/shared_contexts/instance_with_instance_methods.rb
|
141
|
-
- spec/support/shared_contexts/model_with_class_methods.rb
|
142
|
-
- spec/support/shared_contexts/persistable_model.rb
|
143
|
-
homepage: http://github.com/omniauth/omniauth-identity
|
239
|
+
homepage: https://github.com/omniauth/omniauth-identity
|
144
240
|
licenses:
|
145
241
|
- MIT
|
146
|
-
metadata:
|
242
|
+
metadata:
|
243
|
+
homepage_uri: https://railsbling.com/tags/omniauth-identity/
|
244
|
+
source_code_uri: https://github.com/omniauth/omniauth-identity/tree/v3.1.1
|
245
|
+
changelog_uri: https://github.com/omniauth/omniauth-identity/blob/v3.1.1/CHANGELOG.md
|
246
|
+
bug_tracker_uri: https://github.com/omniauth/omniauth-identity/issues
|
247
|
+
documentation_uri: https://www.rubydoc.info/gems/omniauth-identity/3.1.1
|
248
|
+
wiki_uri: https://github.com/omniauth/omniauth-identity/wiki
|
249
|
+
funding_uri: https://liberapay.com/pboling
|
250
|
+
rubygems_mfa_required: 'true'
|
147
251
|
post_install_message:
|
148
|
-
rdoc_options:
|
149
|
-
- "--charset=UTF-8"
|
252
|
+
rdoc_options: []
|
150
253
|
require_paths:
|
151
254
|
- lib
|
152
255
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -158,19 +261,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
261
|
requirements:
|
159
262
|
- - ">="
|
160
263
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
264
|
+
version: '0'
|
162
265
|
requirements: []
|
163
|
-
rubygems_version: 3.
|
266
|
+
rubygems_version: 3.5.23
|
164
267
|
signing_key:
|
165
268
|
specification_version: 4
|
166
|
-
summary:
|
167
|
-
test_files:
|
168
|
-
- spec/spec_helper.rb
|
169
|
-
- spec/support/shared_contexts/persistable_model.rb
|
170
|
-
- spec/support/shared_contexts/model_with_class_methods.rb
|
171
|
-
- spec/support/shared_contexts/instance_with_instance_methods.rb
|
172
|
-
- spec/omniauth/identity/models/active_record_spec.rb
|
173
|
-
- spec/omniauth/identity/models/sequel_spec.rb
|
174
|
-
- spec/omniauth/identity/secure_password_spec.rb
|
175
|
-
- spec/omniauth/identity/model_spec.rb
|
176
|
-
- spec/omniauth/strategies/identity_spec.rb
|
269
|
+
summary: ''
|
270
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|