omniauth-identity 3.1.1 → 3.1.3

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.
data/README.md CHANGED
@@ -1,152 +1,121 @@
1
- # `OmniAuth::Identity`
2
-
3
- [![Version][👽versioni]][👽version]
4
- [![License: MIT][📄license-img]][📄license-ref]
5
- [![Downloads Rank][👽dl-ranki]][👽dl-rank]
6
- [![Open Source Helpers][👽oss-helpi]][👽oss-help]
7
- [![Depfu][🔑depfui♻️]][🔑depfu]
8
- [![CodeCov][🔑codecovi♻️]][🔑codecov]
9
- [![Test Coverage][🔑cc-covi♻️]][🔑cc-cov]
10
- [![Maintainability][🔑cc-mnti♻️]][🔑cc-mnt]
11
- [![CI Supported Build][🚎6-s-wfi]][🚎6-s-wf]
12
- [![CI Legacy Build][🚎4-lg-wfi]][🚎4-lg-wf]
13
- [![CI Unsupported Build][🚎7-us-wfi]][🚎7-us-wf]
14
- [![CI Heads Build][🚎3-hd-wfi]][🚎3-hd-wf]
15
- [![CI Ancient Build][🚎1-an-wfi]][🚎1-an-wf]
16
- [![CI Coverage Build][🚎2-cov-wfi]][🚎2-cov-wf]
17
- [![CI Style Build][🚎5-st-wfi]][🚎5-st-wf]
18
-
19
- <!--- ( 👽️ INFO LINKS ) -->
1
+ <p align="center">
2
+ <a href="https://discord.gg/3qme4XHNKN" target="_blank" rel="noopener">
3
+ <img width="124px" src="https://github.com/omniauth/omniauth-identity/raw/main/docs/images/logo/galtzo-floss-logos-original.svg?raw=true" alt="Galtzo.com Logo by Aboling0, CC BY-SA 4.0">
4
+ </a>
5
+ <a href="https://github.com/omniauth" target="_blank" rel="noopener">
6
+ <img src="https://github.com/omniauth/omniauth-identity/raw/main/docs/images/logo/omniauth-logo-182px.png?raw=true" alt="OmniAuth Logo possibly by Ted O'Meara, license unknown">
7
+ </a>
8
+ <a href="https://www.ruby-lang.org/" target="_blank" rel="noopener">
9
+ <img width="124px" src="https://github.com/omniauth/omniauth-identity/raw/main/docs/images/logo/ruby-logo-198px.svg?raw=true" alt="Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5">
10
+ </a>
11
+ </p>
20
12
 
21
- [👽dl-rank]: https://rubygems.org/gems/omniauth-identity
22
- [👽dl-ranki]: https://img.shields.io/gem/rd/omniauth-identity.svg
23
- [👽oss-help]: https://www.codetriage.com/omniauth/omniauth-identity
24
- [👽oss-helpi]: https://www.codetriage.com/omniauth/omniauth-identity/badges/users.svg
25
- [👽version]: https://rubygems.org/gems/omniauth-identity
26
- [👽versioni]: https://img.shields.io/gem/v/omniauth-identity.svg
27
-
28
- <!--- ( 🔑 KEYED LINKS ) -->
29
-
30
- [🔑cc-mnt]: https://codeclimate.com/github/omniauth/omniauth-identity/maintainability
31
- [🔑cc-mnti♻️]: https://api.codeclimate.com/v1/badges/621d6211cb2e0959ce00/maintainability
32
- [🔑cc-cov]: https://codeclimate.com/github/omniauth/omniauth-identity/test_coverage
33
- [🔑cc-covi♻️]: https://api.codeclimate.com/v1/badges/621d6211cb2e0959ce00/test_coverage
34
- [🔑codecov]: https://codecov.io/gh/omniauth/omniauth-identity
35
- [🔑codecovi♻️]: https://codecov.io/gh/omniauth/omniauth-identity/graph/badge.svg?token=cc6UdZCpAL
36
- [🔑depfu]: https://depfu.com/github/omniauth/omniauth-identity
37
- [🔑depfui♻️]: https://badges.depfu.com/badges/6c9b45362951b872127f9e46d39bed76/count.svg
13
+ # 🫵 OmniAuth::Identity
38
14
 
39
- <!--- ( 🚎 BUILD LINKS ) -->
40
-
41
- [🚎1-an-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/ancient.yml
42
- [🚎1-an-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/ancient.yml/badge.svg
43
- [🚎2-cov-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/coverage.yml
44
- [🚎2-cov-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/coverage.yml/badge.svg
45
- [🚎3-hd-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/heads.yml
46
- [🚎3-hd-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/heads.yml/badge.svg
47
- [🚎4-lg-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/legacy.yml
48
- [🚎4-lg-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/legacy.yml/badge.svg
49
- [🚎5-st-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/style.yml
50
- [🚎5-st-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/style.yml/badge.svg
51
- [🚎6-s-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/supported.yml
52
- [🚎6-s-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/supported.yml/badge.svg
53
- [🚎7-us-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/unsupported.yml
54
- [🚎7-us-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/unsupported.yml/badge.svg
15
+ [![Version][👽versioni]][👽version] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![Depfu][🔑depfui♻️]][🔑depfu] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi♻️]][🔑qlty-cov] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
55
16
 
56
- -----
17
+ ---
57
18
 
58
- [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay]
59
- [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor]
60
- [![Polar Shield][🖇polar-img]][🖇polar]
61
- [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
62
- [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
19
+ [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
63
20
 
64
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
65
- [⛳liberapay]: https://liberapay.com/pboling/donate
66
- [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
67
- [🖇sponsor]: https://github.com/sponsors/pboling
68
- [🖇polar-img]: https://polar.sh/embed/seeks-funding-shield.svg?org=pboling
69
- [🖇polar]: https://polar.sh/pboling
70
- [🖇kofi-img]: https://img.shields.io/badge/buy%20me%20coffee-donate-yellow.svg
71
- [🖇kofi]: https://ko-fi.com/O5O86SNP4
72
- [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-yellow.svg
73
- [🖇patreon]: https://patreon.com/galtzo
74
-
75
- The OmniAuth Identity gem provides a way for applications to utilize a
21
+ The `omniauth-identity` gem provides a way for applications to utilize a
76
22
  traditional username/password based authentication system without the need
77
23
  to give up the simple authentication flow provided by OmniAuth. Identity
78
24
  is designed on purpose to be as featureless as possible: it provides the
79
25
  basic construct for user management and then gets out of the way.
80
26
 
81
- | Primary Namespace | `OmniAuth::Identity` |
82
- |-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
83
- | documentation | [on Github.com][homepage], [Latest release on RubyDoc.info][documentation], [HEAD on RubyDoc.info][documentation-head] |
84
- | expert support | [![Get help on Codementor](https://cdn.codementor.io/badges/get_help_github.svg)](https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github) |
85
- | `...` 💖 | [![Follow Me on LinkedIn][🖇linkedin-img]][🖇linkedin] [![Find Me on WellFound:][✌️wellfound-img]][✌️wellfound] [![Find Me on CrunchBase][💲crunchbase-img]][💲crunchbase] [![My LinkTree][🌳linktree-img]][🌳linktree] [![Follow Me on Ruby.Social][🐘ruby-mast-img]][🐘ruby-mast] [![Tweet @ Peter][🐦tweet-img]][🐦tweet] [💻][coderme] [🌏][aboutme] |
86
-
87
- <!--- 7️⃣ spread 💖 -->
88
- [🐦tweet-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow%20%40galtzo
89
- [🐦tweet]: http://twitter.com/galtzo
90
- [🚎blog]: http://www.railsbling.com/tags/omniauth-identity/
91
- [🚎blog-img]: https://img.shields.io/badge/blog-railsbling-brightgreen.svg?style=flat
92
- [🖇linkedin]: http://www.linkedin.com/in/peterboling
93
- [🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-blue?style=plastic&logo=linkedin
94
- [✌️wellfound]: https://angel.co/u/peter-boling
95
- [✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=plastic&logo=wellfound
96
- [💲crunchbase]: https://www.crunchbase.com/person/peter-boling
97
- [💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=plastic&logo=crunchbase
98
- [🐘ruby-mast]: https://ruby.social/@galtzo
99
- [🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=plastic&logo=mastodon&label=Ruby%20%40galtzo
100
- [🌳linktree]: https://linktr.ee/galtzo
101
- [🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=plastic&logo=linktree
102
-
103
- <!--- Maintainer Contact Links -->
104
- [aboutme]: https://about.me/peter.boling
105
- [coderme]: https://coderwall.com/Peter%20Boling
106
-
107
- ## Installation
108
-
109
- To acquire the latest release from RubyGems, and add this gem to your `Gemfile`, run:
27
+ ## 💡 Info you can shake a stick at
28
+
29
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
30
+ |-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
31
+ | Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎10-j-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎10-j-wf] [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
32
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
33
+ | Works with MRI Ruby 2 | [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
34
+ | Source | [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
35
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![BDFL Blog][🚂bdfl-blog-img]][🚂bdfl-blog] [![Wiki][📜wiki-img]][📜wiki] |
36
+ | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
37
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] |
38
+ | Support | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
39
+ | Enterprise Support | [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]<br/>💡Subscribe for support guarantees covering _all_ FLOSS dependencies!<br/>💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]!<br/>💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers! |
40
+ | Comrade BDFL 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact BDFL][🚂bdfl-contact-img]][🚂bdfl-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
41
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
42
+
43
+ ## ✨ Installation
44
+
45
+ Install the gem and add to the application's Gemfile by executing:
46
+
47
+ $ bundle add omniauth-identity
48
+
49
+ If bundler is not being used to manage dependencies, install the gem by executing:
50
+
51
+ $ gem install omniauth-identity
52
+
53
+ ### 🔒 Secure Installation
54
+
55
+ `omniauth-identity` is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
56
+ [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
57
+ by following the instructions below.
58
+
59
+ Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
110
60
 
111
61
  ```shell
112
- bundle add omniauth-identity
62
+ gem cert --add <(curl -Ls https://raw.github.com/omniauth/omniauth-identity/main/certs/pboling.pem)
113
63
  ```
114
64
 
115
- If the git repository has new commits not yet in an official release, simply specify the repo instead:
65
+ You only need to do that once. Then proceed to install with:
116
66
 
117
- ```ruby
118
- gem "omniauth-identity", git: "https://github.com/omniauth/omniauth-identity.git"
67
+ ```shell
68
+ gem install omniauth-identity -P MediumSecurity
119
69
  ```
120
70
 
121
- ## Compatibility
71
+ The `MediumSecurity` trust profile will verify signed gems, but allow the installation of unsigned dependencies.
122
72
 
123
- This gem is compatible with a wide range of Ruby versions and Ruby ORMs, as of Nov 2024, version 3.1.
73
+ This is necessary because not all of `omniauth-identity`’s dependencies are signed, so we cannot use `HighSecurity`.
74
+
75
+ If you want to up your security game full-time:
76
+
77
+ ```shell
78
+ bundle config set --global trust-policy MediumSecurity
79
+ ```
124
80
 
125
- * Latest released version of omniauth, v2+
126
- * Tested in CI against Ruby 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, ruby-head, truffleruby-head
127
- * Probably also compatible with Ruby 2.4 and jruby-head
81
+ NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
82
+
83
+ ## 🔧 Compatibility
84
+
85
+ This gem is compatible with a wide range of Ruby versions and Ruby ORMs, as of May 2025, version 3.1.
86
+
87
+ * Tested in CI against:
88
+ * Ruby 2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, 3.4, ruby-head
89
+ * JRuby 9.2, 9.3, 9.4, 10.0, jruby-head
90
+ * omniauth 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, HEAD
91
+ * activerecord 5.2, 6.0, 6.1, 7.0, 7.1, 7.2, 8.0, HEAD
92
+ * sqlite3 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.0, 2.1
93
+ * couch_potato 1.17+
94
+ * mongoid 7.3, 7.4, 8.1, 9.0
95
+ * bson 4.12, 4.15, 5.0, HEAD
96
+ * sequel 5.86+
128
97
  * At least 5 different database ORM adapters, which connect to 15 different database clients!
129
98
 
130
99
  | Databases | Adapter Libraries |
131
- |-----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|
132
- | MySQL, PostgreSQL, SQLite3 | [ActiveRecord](https://guides.rubyonrails.org/active_record_basics.html) |
100
+ | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
101
+ | MySQL, MariaDB, PostgreSQL, SQLite | [ActiveRecord](https://guides.rubyonrails.org/active_record_basics.html) |
133
102
  | CouchDB | [CouchPotato](https://github.com/langalex/couch_potato) |
134
103
  | MongoDB | [Mongoid](https://github.com/mongodb/mongoid) |
135
104
  | RethinkDB | [NoBrainer](http://nobrainer.io/) |
136
- | ADO, Amalgalite, IBM_DB, JDBC, MySQL, Mysql2, ODBC, Oracle, PostgreSQL, SQLAnywhere, SQLite3, and TinyTDS | [Sequel](http://sequel.jeremyevans.net) |
105
+ | ADO, Amalgalite, IBM_DB, JDBC, MySQL, MariaDB, ODBC, Oracle, PostgreSQL, SQLAnywhere, SQLite, and TinyTDS | [Sequel](http://sequel.jeremyevans.net) |
137
106
 
138
- ## Usage
107
+ ## 🔧 Basic Usage
139
108
 
140
109
  This can be a bit hard to understand the first time. Luckily, Ryan Bates made
141
110
  a [Railscast](http://railscasts.com/episodes/304-omniauth-identity) about it!
142
111
 
143
112
  You use `omniauth-identity` just like you would any other OmniAuth provider: as a
144
113
  Rack middleware. In rails, this would be created by an initializer, such as
145
- `config/initializers/omniauth.rb`. The basic setup for a email/password authentication would look something like this:
114
+ `config/initializers/omniauth.rb`. The basic setup for an email/password authentication would look something like this:
146
115
 
147
116
  ```ruby
148
117
  use OmniAuth::Builder do
149
- provider :identity, #mandatory: tells OA that the Identity strategy is being used
118
+ provider :identity, # required: tells OA that the Identity strategy is being used
150
119
  model: Identity, # optional: specifies the name of the "Identity" model. Defaults to "Identity"
151
120
  fields: %i[email custom1 custom2] # optional: list of custom fields that are in the model's table
152
121
  end
@@ -162,7 +131,7 @@ running, you can point users to `/auth/identity` and it will request
162
131
  that they log in or give them the opportunity to sign up for an account.
163
132
  Once they have authenticated with their identity, OmniAuth will call
164
133
  through to `/auth/identity/callback` with the same kinds of information
165
- it would had the user authenticated through an external provider.
134
+ it would have had the user authenticated through an external provider.
166
135
 
167
136
  **Note:** OmniAuth Identity is different from many other user authentication
168
137
  systems in that it is *not* built to store authentication information in your primary
@@ -173,7 +142,7 @@ strategies such as Facebook, Twitter, etc.
173
142
  ### ActiveRecord
174
143
 
175
144
  Just subclass `OmniAuth::Identity::Models::ActiveRecord` and provide fields
176
- in the database for all of the fields you are using.
145
+ in the database for all the fields you are using.
177
146
 
178
147
  ```ruby
179
148
  class Identity < OmniAuth::Identity::Models::ActiveRecord
@@ -271,7 +240,7 @@ end
271
240
  NOTE: In the above example, `MyCustomClass` must have a class method called `auth_key` that returns
272
241
  the default (`email`) or custom `auth_key` to use.
273
242
 
274
- ## Customizing Registration Failure
243
+ ### Customizing Registration Failure
275
244
 
276
245
  To use your own custom registration form, create a form that POSTs to
277
246
  `/auth/identity/register` with `password`, `password_confirmation`, and your
@@ -320,7 +289,7 @@ introduction](http://library.edgecase.com/Rails/2011/01/04/rails-routing-and-rac
320
289
  and
321
290
  [ActionController::Metal](http://rubydoc.info/docs/rails/ActionController/Metal)
322
291
 
323
- ## Customizing Locate Conditions
292
+ ### Customizing Locate Conditions
324
293
 
325
294
  You can customize the way that matching records are found when authenticating.
326
295
  For example, for a site with multiple domains, you may wish to scope the search
@@ -344,9 +313,10 @@ Note: Be careful when customizing `locate_conditions`. The best way to modify t
344
313
  to copy the default value, and then add to the hash. Removing the default condition will almost
345
314
  always break things!
346
315
 
347
- ## Customizing Other Things
316
+ ### Customizing Other Things
348
317
 
349
318
  From the code - here are the options we have for you, a couple of which are documented above, and the rest are documented... in the specs we hope!?
319
+
350
320
  ```
351
321
  option :fields, %i[name email]
352
322
 
@@ -364,23 +334,32 @@ option :locate_conditions, ->(req) { {model.auth_key => req.params["auth_key"]}
364
334
 
365
335
  Please contribute some documentation if you have the gumption! The maintainer's time is limited, and sometimes the authors of PRs with new options don't update the _this_ readme. 😭
366
336
 
337
+ ## 🔐 Security
338
+
339
+ See [SECURITY.md][🔐security].
340
+
367
341
  ## 🤝 Contributing
368
342
 
369
343
  If you need some ideas of where to help, you could work on adding more code coverage,
370
- or if it is already 💯 (see [below](#code-coverage)) then check [issues][🤝issues], or [PRs][🤝pulls],
344
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
371
345
  or use the gem and think about how it could be better.
372
346
 
373
- Also, see [CONTRIBUTING.md][🤝contributing].
347
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
374
348
 
375
- [🤝issues]: https://github.com/omniauth/omniauth-identity/issues
376
- [🤝pulls]: https://github.com/omniauth/omniauth-identity/pulls
377
- [🤝contributing]: CONTRIBUTING.md
349
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
350
+
351
+ ### 🚀 Release Instructions
352
+
353
+ See [CONTRIBUTING.md][🤝contributing].
378
354
 
379
355
  ### Code Coverage
380
356
 
381
- [![Coverage Graph][🔑codecov-g]][🔑codecov]
357
+ [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
358
+
359
+ ### 🪇 Code of Conduct
382
360
 
383
- [🔑codecov-g]: https://codecov.io/gh/omniauth/omniauth-identity/graphs/tree.svg?token=cc6UdZCpAL
361
+ Everyone interacting with this project's codebases, issue trackers,
362
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
384
363
 
385
364
  ## 🌈 Contributors
386
365
 
@@ -388,41 +367,45 @@ Also, see [CONTRIBUTING.md][🤝contributing].
388
367
 
389
368
  Made with [contributors-img][🖐contrib-rocks].
390
369
 
391
- [🖐contrib-rocks]: https://contrib.rocks
392
- [🖐contributors]: https://github.com/omniauth/omniauth-identity/graphs/contributors
393
- [🖐contributors-img]: https://contrib.rocks/image?repo=omniauth/omniauth-identity
394
-
395
- ## Star History
370
+ ## ⭐️ Star History
396
371
 
397
372
  <a href="https://star-history.com/#omniauth/omniauth-identity&Date">
398
373
  <picture>
399
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=omniauth/omniauth-identity&type=Date&theme=dark" />
400
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=omniauth/omniauth-identity&type=Date" />
374
+ <source media="(prefers-color-scheme: dark)"
375
+ srcset="https://api.star-history.com/svg?repos=omniauth/omniauth-identity&type=Date&theme=dark"/>
376
+ <source media="(prefers-color-scheme: light)"
377
+ srcset="https://api.star-history.com/svg?repos=omniauth/omniauth-identity&type=Date"/>
401
378
  <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=omniauth/omniauth-identity&type=Date" />
402
379
  </picture>
403
380
  </a>
404
381
 
405
- ## 🪇 Code of Conduct
406
-
407
- Everyone interacting in this project's codebases, issue trackers,
408
- chat rooms and mailing lists is expected to follow the [code of conduct][🪇conduct].
409
-
410
- [🪇conduct]: CODE_OF_CONDUCT.md
411
-
412
382
  ## 📌 Versioning
413
383
 
414
- This Library adheres to [Semantic Versioning 2.0.0][📌semver].
384
+ This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
415
385
  Violations of this scheme should be reported as bugs.
416
386
  Specifically, if a minor or patch version is released that breaks backward compatibility,
417
387
  a new version should be immediately released that restores compatibility.
418
388
  Breaking changes to the public API will only be introduced with new major versions.
419
389
 
390
+ ### 📌 Is "Platform Support" part of the public API?
391
+
392
+ Yes. But I'm obligated to include notes...
393
+
394
+ SemVer should, but doesn't explicitly, say that dropping support for specific Platforms
395
+ is a *breaking change* to an API.
396
+ It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
397
+
398
+ > dropping support for a platform is both obviously and objectively a breaking change
399
+
400
+ - Jordan Harband (@ljharb, maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
401
+
420
402
  To get a better understanding of how SemVer is intended to work over a project's lifetime,
421
403
  read this article from the creator of SemVer:
422
404
 
423
405
  - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
424
406
 
425
- As a result of this policy, you can (and should) specify a dependency on these libraries using
407
+ As a result of this policy, and the interpretive lens used by the maintainer,
408
+ you can (and should) specify a dependency on these libraries using
426
409
  the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
427
410
 
428
411
  For example:
@@ -431,14 +414,7 @@ For example:
431
414
  spec.add_dependency("omniauth-identity", "~> 3.1")
432
415
  ```
433
416
 
434
- See [CHANGELOG.md][📌changelog] for list of releases.
435
-
436
- <!--- ( 📌 VERSIONING LINKS ) -->
437
-
438
- [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
439
- [📌semver]: http://semver.org/
440
- [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
441
- [📌changelog]: CHANGELOG.md
417
+ See [CHANGELOG.md][📌changelog] for a list of releases.
442
418
 
443
419
  ## 📄 License
444
420
 
@@ -446,36 +422,217 @@ The gem is available as open source under the terms of
446
422
  the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref].
447
423
  See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
448
424
 
449
- [comment]: <> ( 📄 LEGAL LINKS )
450
-
451
- [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
452
- [📄license]: LICENSE.txt
453
- [📄license-ref]: https://opensource.org/licenses/MIT
454
- [📄license-img]: https://img.shields.io/badge/License-MIT-green.svg
455
-
456
425
  ### © Copyright
457
426
 
458
- * Copyright (c) 2021, 2024 [Peter H. Boling][peterboling], and OmniAuth-Identity Maintainers
459
- * Copyright (c) 2020 [Peter H. Boling][peterboling], Andrew Roberts, and Jellybooks Ltd.
460
- * Copyright (c) 2010-2015 Michael Bleigh, and Intridea, Inc.
461
-
462
- [railsbling]: http://www.railsbling.com
463
- [peterboling]: http://www.peterboling.com
464
- [bundle-group-pattern]: https://gist.github.com/pboling/4564780
465
- [documentation]: http://rubydoc.info/gems/omniauth-identity
466
- [documentation-head]: https://rubydoc.info/github/omniauth/omniauth-identity/main
467
- [homepage]: https://github.com/omniauth/omniauth-identity
427
+ <ul>
428
+ <li>
429
+ Copyright (c) 2021, 2024-2025 Peter H. Boling, of
430
+ <a href="https://discord.gg/3qme4XHNKN">
431
+ Galtzo.com
432
+ <picture>
433
+ <img src="https://github.com/omniauth/omniauth-identity/raw/main/docs/images/logo/galtzo-floss-logos-wordless.svg?raw=true" alt="Galtzo.com Logo by Aboling0, CC BY-SA 4.0" width="24">
434
+ </picture>
435
+ </a>, and omniauth-identity contributors
436
+ </li>
437
+ <li>
438
+ Copyright (c) 2020 Peter H. Boling, Andrew Roberts, and Jellybooks Ltd.
439
+ </li>
440
+ <li>
441
+ Copyright (c) 2010-2015 Michael Bleigh, and Intridea, Inc.
442
+ </li>
443
+ </ul>
468
444
 
469
445
  ## 🤑 One more thing
470
446
 
471
- You made it to the bottom of the page,
472
- so perhaps you'll indulge me for another 20 seconds.
473
- I maintain many dozens of gems, including this one,
474
- because I want Ruby to be a great place for people to solve problems, big and small.
475
- Please consider supporting my efforts via the giant yellow link below,
476
- or one of the others at the head of this README.
447
+ Having arrived at the bottom of the page, please endure a final supplication.
448
+ The primary maintainer of this gem, Peter Boling, wants
449
+ Ruby to be a great place for people to solve problems, big and small.
450
+ Please consider supporting his efforts via the giant yellow link below,
451
+ or one of smaller ones, depending on button size preference.
477
452
 
478
453
  [![Buy me a latte][🖇buyme-img]][🖇buyme]
479
454
 
455
+ [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
456
+
457
+ P.S. Use the gem => Discord for help
458
+
459
+ [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
460
+
461
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay
462
+ [⛳liberapay]: https://liberapay.com/pboling/donate
463
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
464
+ [🖇sponsor]: https://github.com/sponsors/pboling
465
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-yellow.svg
466
+ [🖇polar]: https://polar.sh/pboling
467
+ [🖇kofi-img]: https://img.shields.io/badge/a_more_different_coffee-✓-yellow.svg
468
+ [🖇kofi]: https://ko-fi.com/O5O86SNP4
469
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-yellow.svg
470
+ [🖇patreon]: https://patreon.com/galtzo
471
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-yellow.svg?style=flat
480
472
  [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
481
473
  [🖇buyme]: https://www.buymeacoffee.com/pboling
474
+
475
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
476
+ [⛳️gem-namespace]: https://github.com/omniauth/omniauth-identity
477
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-OmniAuth%3A%3AIdentity-brightgreen.svg?style=flat&logo=ruby&logoColor=white
478
+ [⛳️gem-name]: https://rubygems.org/gems/omniauth-identity
479
+ [⛳️name-img]: https://img.shields.io/badge/name-omniauth--identity-brightgreen.svg?style=flat&logo=rubygems&logoColor=red
480
+ [🚂bdfl-blog]: http://www.railsbling.com/tags/omniauth-identity
481
+ [🚂bdfl-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
482
+ [🚂bdfl-contact]: http://www.railsbling.com/contact
483
+ [🚂bdfl-contact-img]: https://img.shields.io/badge/Contact-BDFL-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
484
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
485
+ [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling
486
+ [💖✌️wellfound]: https://angel.co/u/peter-boling
487
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
488
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
489
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
490
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
491
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo
492
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
493
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
494
+ [💖🌳linktree]: https://linktr.ee/galtzo
495
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
496
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
497
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
498
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
499
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
500
+ [💖🧊berg]: https://codeberg.org/pboling
501
+ [💖🐙hub]: https://github.org/pboling
502
+ [💖🛖hut]: https://sr.ht/~galtzo/
503
+ [💖🧪lab]: https://gitlab.com/pboling
504
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
505
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
506
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
507
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
508
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription
509
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
510
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
511
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
512
+ [🚂railsbling]: http://www.railsbling.com
513
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
514
+ [📜src-gl]: https://gitlab.com/omniauth/omniauth-identity/
515
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
516
+ [📜src-cb]: https://codeberg.org/omniauth/omniauth-identity
517
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
518
+ [📜src-gh]: https://github.com/omniauth/omniauth-identity
519
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
520
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
521
+ [📜wiki]: https://github.com/omniauth/omniauth-identity/wiki
522
+ [📜wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=Wiki&logoColor=white
523
+ [👽dl-rank]: https://rubygems.org/gems/omniauth-identity
524
+ [👽dl-ranki]: https://img.shields.io/gem/rd/omniauth-identity.svg
525
+ [👽oss-help]: https://www.codetriage.com/omniauth/omniauth-identity
526
+ [👽oss-helpi]: https://www.codetriage.com/omniauth/omniauth-identity/badges/users.svg
527
+ [👽version]: https://rubygems.org/gems/omniauth-identity
528
+ [👽versioni]: https://img.shields.io/gem/v/omniauth-identity.svg
529
+ [🔑qlty-mnt]: https://qlty.sh/gh/omniauth/projects/omniauth-identity
530
+ [🔑qlty-mnti♻️]: https://qlty.sh/badges/c2eb0211-c105-4fc6-9b36-650307c67e06/maintainability.svg
531
+ [🔑qlty-cov]: https://qlty.sh/gh/omniauth/projects/omniauth-identity
532
+ [🔑qlty-covi♻️]: https://qlty.sh/badges/c2eb0211-c105-4fc6-9b36-650307c67e06/test_coverage.svg
533
+ [🔑codecov]: https://codecov.io/gh/omniauth/omniauth-identity
534
+ [🔑codecovi♻️]: https://codecov.io/gh/omniauth/omniauth-identity/branch/main/graph/badge.svg?token=cc6UdZCpAL
535
+ [🔑coveralls]: https://coveralls.io/github/omniauth/omniauth-identity?branch=main
536
+ [🔑coveralls-img]: https://coveralls.io/repos/github/omniauth/omniauth-identity/badge.svg?branch=main
537
+ [🔑depfu]: https://depfu.com/github/omniauth/omniauth-identity?project_id=22381
538
+ [🔑depfui♻️]: https://badges.depfu.com/badges/6c9b45362951b872127f9e46d39bed76/count.svg
539
+ [🖐codeQL]: https://github.com/omniauth/omniauth-identity/security/code-scanning
540
+ [🖐codeQL-img]: https://github.com/omniauth/omniauth-identity/actions/workflows/codeql-analysis.yml/badge.svg
541
+ [🚎1-an-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/ancient.yml
542
+ [🚎1-an-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/ancient.yml/badge.svg
543
+ [🚎2-cov-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/coverage.yml
544
+ [🚎2-cov-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/coverage.yml/badge.svg
545
+ [🚎3-hd-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/heads.yml
546
+ [🚎3-hd-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/heads.yml/badge.svg
547
+ [🚎4-lg-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/legacy.yml
548
+ [🚎4-lg-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/legacy.yml/badge.svg
549
+ [🚎5-st-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/style.yml
550
+ [🚎5-st-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/style.yml/badge.svg
551
+ [🚎6-s-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/supported.yml
552
+ [🚎6-s-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/supported.yml/badge.svg
553
+ [🚎7-us-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/unsupported.yml
554
+ [🚎7-us-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/unsupported.yml/badge.svg
555
+ [🚎8-ho-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/hoary.yml
556
+ [🚎8-ho-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/hoary.yml/badge.svg
557
+ [🚎9-t-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/truffle.yml
558
+ [🚎9-t-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/truffle.yml/badge.svg
559
+ [🚎10-j-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby.yml
560
+ [🚎10-j-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby.yml/badge.svg
561
+ [🚎11-c-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/current.yml
562
+ [🚎11-c-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/current.yml/badge.svg
563
+ [🚎12-crh-wf]: https://github.com/omniauth/omniauth-identity/actions/workflows/current-runtime-heads.yml
564
+ [🚎12-crh-wfi]: https://github.com/omniauth/omniauth-identity/actions/workflows/current-runtime-heads.yml/badge.svg
565
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
566
+ [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
567
+ [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
568
+ [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
569
+ [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
570
+ [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
571
+ [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
572
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
573
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
574
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
575
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
576
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
577
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
578
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
579
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
580
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
581
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
582
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
583
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
584
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
585
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
586
+ [🤝gh-issues]: https://github.com/omniauth/omniauth-identity/issues
587
+ [🤝gh-pulls]: https://github.com/omniauth/omniauth-identity/pulls
588
+ [🤝contributing]: CONTRIBUTING.md
589
+ [🔑codecov-g♻️]: https://codecov.io/gh/omniauth/omniauth-identity/graphs/tree.svg?token=cc6UdZCpAL
590
+ [🖐contrib-rocks]: https://contrib.rocks
591
+ [🖐contributors]: https://github.com/omniauth/omniauth-identity/graphs/contributors
592
+ [🖐contributors-img]: https://contrib.rocks/image?repo=omniauth/omniauth-identity
593
+ [🚎contributors-gl]: https://gitlab.com/omniauth/omniauth-identity/-/graphs/main
594
+ [🪇conduct]: CODE_OF_CONDUCT.md
595
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
596
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
597
+ [📌semver]: https://semver.org/spec/v2.0.0.html
598
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
599
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
600
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
601
+ [📌changelog]: CHANGELOG.md
602
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
603
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
604
+ [📌gitmoji]:https://gitmoji.dev
605
+ [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
606
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
607
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.378-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
608
+ [🔐security]: SECURITY.md
609
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
610
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
611
+ [📄license]: LICENSE.txt
612
+ [📄license-ref]: https://opensource.org/licenses/MIT
613
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
614
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
615
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
616
+ [🚎yard-current]: http://rubydoc.info/gems/omniauth-identity
617
+ [🚎yard-head]: https://omniauth-identity.galtzo.com
618
+ [💎stone_checksums]: https://github.com/pboling/stone_checksums
619
+ [💎SHA_checksums]: https://github.com/omniauth/omniauth-identity/tree/main/checksums
620
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
621
+ [💎rlts-img]: https://img.shields.io/badge/code_style_%26_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
622
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
623
+ [✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
624
+
625
+ <details>
626
+ <summary>
627
+ Disabled Badges
628
+ </summary>
629
+
630
+ Badges for failing services.
631
+ Bug reports filed.
632
+ Once fixed, these should look much nicer.
633
+
634
+ [![QLTY Maintainability][🔑qlty-mnti♻️]][🔑qlty-mnt]
635
+ [![CodeCov Test Coverage][🔑codecovi♻️]][🔑codecov]
636
+ [![Coverage Graph][🔑codecov-g♻️]][🔑codecov]
637
+
638
+ </details>