auth-sanitizer 0.2.3 → 0.2.4
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 +0 -0
- data/CHANGELOG.md +106 -1
- data/LICENSE.md +1 -1
- data/README.md +58 -54
- data/lib/auth/sanitizer/core.rb +7 -13
- data/lib/auth/sanitizer/filtered_attributes.rb +15 -10
- data/lib/auth/sanitizer/sanitized_logger.rb +59 -33
- data/lib/auth/sanitizer/thing_filter.rb +3 -3
- data/lib/auth/sanitizer/version.rb +4 -1
- data/lib/auth/sanitizer.rb +1 -1
- data/lib/auth_sanitizer/loader.rb +5 -0
- data/sig/auth/sanitizer.rbs +9 -0
- data.tar.gz.sig +2 -1
- metadata +50 -47
- metadata.gz.sig +0 -0
- data/CITATION.cff +0 -20
- data/CODE_OF_CONDUCT.md +0 -134
- data/CONTRIBUTING.md +0 -275
- data/FUNDING.md +0 -70
- data/MIT.md +0 -21
- data/RUBOCOP.md +0 -71
- data/SECURITY.md +0 -21
- data/certs/pboling.pem +0 -27
- data/sig/auth/sanitizer/version.rbs +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 133e8f52ab2988ce4f62b80654a92286a9bc7c9edb1092790cace4b4dbd581e6
|
|
4
|
+
data.tar.gz: e0ceaea5693cf3c9ba036acdd8162b4added1e5c441ac5e726e325c0ce4a23e6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 38242e0bed6885c8b2a4855e7c46ab177e1fc272aef04425d1cec5de9674bb1c9acc38ee6c7e6d637e9a7b0c8ed3ee93052f6fccd85c9267810c3a1e27e3402f
|
|
7
|
+
data.tar.gz: 756ddde554ae8d459b4b664ab1fda0f2436a296f6610ca6d076ad76e21a620d144ad248a85203f0f949624f484e10cd1373ae2dce95ecca2602f1701e6e6bf7e
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,109 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [0.2.4] - 2026-10-23
|
|
34
|
+
|
|
35
|
+
- TAG: [v0.2.4][0.2.4t]
|
|
36
|
+
- COVERAGE: 100.00% -- 172/172 lines in 7 files
|
|
37
|
+
- BRANCH COVERAGE: 100.00% -- 34/34 branches in 7 files
|
|
38
|
+
- 98.08% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- kettle-jem-template-20260720-005 - README Support & Community links now
|
|
43
|
+
include RubyForum.
|
|
44
|
+
- kettle-jem-template-20260726-001 - Projects now include YARD lint
|
|
45
|
+
configuration and documentation dependencies so documentation issues fail
|
|
46
|
+
before generated docs are refreshed.
|
|
47
|
+
- kettle-jem-template-20260727-001 - Spec harness documentation now lists the
|
|
48
|
+
RSpec helpers provided by `kettle-test`.
|
|
49
|
+
|
|
50
|
+
- kettle-jem-template-20260913-001 - Templating now also surfaces a review
|
|
51
|
+
entry in `dependency_conflicts.resolve` when a direct development
|
|
52
|
+
dependency doesn't support one or more of this project's declared
|
|
53
|
+
`engines:` and has no template-managed modular home (e.g. `sqlite3` on
|
|
54
|
+
`jruby`). Review each entry and pick a resolution per the project's own
|
|
55
|
+
engine support needs.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- kettle-jem-template-20260716-002 - Generated gemspec manifests now ship fewer
|
|
60
|
+
repository-only files by default to reduce downstream distro packaging churn.
|
|
61
|
+
|
|
62
|
+
- kettle-jem-template-20260720-002 - Development Gemfiles now use the released
|
|
63
|
+
`tree_sitter_language_pack` gem 1.13.3 or newer by default.
|
|
64
|
+
- kettle-jem-template-20260725-002 - Version specs now use `anonymous_loader` to
|
|
65
|
+
cover `version.rb` without redefining constants, or are removed when version
|
|
66
|
+
specs are not managed for the project.
|
|
67
|
+
- kettle-jem-template-20260728-001 - Generated Ruby workflows now use clearer
|
|
68
|
+
setup-ruby-flash planning and can prepare appraisal-only jobs without
|
|
69
|
+
installing the main Gemfile bundle.
|
|
70
|
+
|
|
71
|
+
- kettle-jem-template-20260801-001 - Generated README gem dashboard links now
|
|
72
|
+
use ClickGems instead of BestGems.
|
|
73
|
+
|
|
74
|
+
- [kc] kettle-jem/prepare: updated 17 project files:
|
|
75
|
+
- configuration (1)
|
|
76
|
+
- dependencies (16)
|
|
77
|
+
|
|
78
|
+
- [kc] kettle-jem/template: updated 52 project files:
|
|
79
|
+
- code and tests (4)
|
|
80
|
+
- configuration (1)
|
|
81
|
+
- dependencies (8)
|
|
82
|
+
- documentation (2)
|
|
83
|
+
- other (5)
|
|
84
|
+
- workflows (32)
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
|
|
88
|
+
- kettle-jem-template-20260720-003 - StructuredMerge Git diff driver config now
|
|
89
|
+
uses the installed `smorg-rb` driver command.
|
|
90
|
+
- kettle-jem-template-20260725-001 - Release pull request branches beginning
|
|
91
|
+
with `feature/release` now run JRuby and TruffleRuby workflows.
|
|
92
|
+
- kettle-jem-template-20260726-002 - Generated version files now document their
|
|
93
|
+
version namespace and constants, reducing warning-only YARD lint output.
|
|
94
|
+
- kettle-jem-template-20260726-003 - Coverage upload steps now treat Coveralls,
|
|
95
|
+
QLTY, and Codecov as optional, so provider outages do not fail CI when local
|
|
96
|
+
coverage thresholds still pass.
|
|
97
|
+
- kettle-jem-template-20260728-002 - Generated RuboCop configs now ignore the
|
|
98
|
+
same `gemfiles/vendor/bundle` tree as `.gitignore`, so vendored dependency
|
|
99
|
+
installs are not reported as project lint debt.
|
|
100
|
+
- kettle-jem-template-20260728-003 - Generated dep-heads workflows now run
|
|
101
|
+
TruffleRuby jobs with current RubyGems and Bundler, avoiding setup failures
|
|
102
|
+
before the test suite starts.
|
|
103
|
+
- kettle-jem-template-20260728-004 - Generated dep-heads workflows now use the
|
|
104
|
+
setup-ruby Bundler install path for direct appraisal Gemfiles, avoiding rv
|
|
105
|
+
lockfile parser failures on Git and path dependencies.
|
|
106
|
+
- kettle-jem-template-20260728-005 - VersionGem bootstrap now creates the
|
|
107
|
+
missing canonical version spec when a project only has shim namespace version
|
|
108
|
+
specs.
|
|
109
|
+
- kettle-jem-template-20260729-001 - Generated JRuby 9.4 workflows now use the
|
|
110
|
+
legacy manual bundle install path, avoiding setup-time Bundler full-index
|
|
111
|
+
failures against `gem.coop`.
|
|
112
|
+
- kettle-jem-template-20260730-001 - Gemspec package file enumeration now runs
|
|
113
|
+
relative to the gemspec directory, so release package contents stay correct
|
|
114
|
+
even when the gemspec is loaded from another working directory.
|
|
115
|
+
|
|
116
|
+
- kettle-jem-template-20260801-002 - Generated RSpec helpers now normalize
|
|
117
|
+
managed configuration block bindings structurally, preventing mixed block
|
|
118
|
+
parameter names from producing invalid configuration after a merge.
|
|
119
|
+
- kettle-jem-template-20260801-003 - Generated project metadata and
|
|
120
|
+
documentation now normalize configured underscore hostnames to valid
|
|
121
|
+
hyphenated hostnames.
|
|
122
|
+
- kettle-jem-template-20260801-004 - Generated organization README logos now
|
|
123
|
+
use GitHub's stable organization avatar endpoint instead of assuming a
|
|
124
|
+
matching Galtzo-hosted asset exists.
|
|
125
|
+
- kettle-jem-template-20260802-001 - Devcontainer JSON files now merge as JSONC,
|
|
126
|
+
preserving comments and trailing commas during template updates.
|
|
127
|
+
|
|
128
|
+
- Fix load-order `NameError: uninitialized constant Auth::Sanitizer::Version` by removing a duplicate `VersionGem::Basic` class_eval from `auth/sanitizer/core` (the version constant is loaded after `core` in `auth/sanitizer.rb`).
|
|
129
|
+
|
|
130
|
+
- Gemspec no longer defines a top-level `Auth` constant when evaluated on Ruby < 3.1 (e.g. by `bundler/setup`); the version file now loads into an anonymous module via `Module#module_eval` on all supported Rubies. This un-breaks the isolated-loading specs and the ruby-2.4 CI workflow.
|
|
131
|
+
|
|
132
|
+
### Security
|
|
133
|
+
|
|
134
|
+
- SanitizedLogger now redacts configured keys in Ruby `Hash#inspect` output (both Ruby 3.4+ `{"key" => "value"}` / `{key: "value"}` and pre-3.4 hash-rocket formats), fixes a mangling bug where the form-pair pattern partially matched `:key=>"value"` pairs, and no longer raises on invalid-encoded message bytes. This closes the OAUTH_DEBUG cleartext-logging bypass reported for oauth2 as GHSA-cmh8-5q25-68v6, where Faraday renders Hash request bodies with `pretty_inspect`. Reported by iamibi.
|
|
135
|
+
|
|
33
136
|
## [0.2.3] - 2026-07-14
|
|
34
137
|
|
|
35
138
|
- TAG: [v0.2.3][0.2.3t]
|
|
@@ -192,7 +295,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
192
295
|
|
|
193
296
|
- Initial release
|
|
194
297
|
|
|
195
|
-
[Unreleased]: https://github.com/ruby-oauth/auth-sanitizer/compare/v0.2.
|
|
298
|
+
[Unreleased]: https://github.com/ruby-oauth/auth-sanitizer/compare/v0.2.4...HEAD
|
|
299
|
+
[0.2.4]: https://github.com/ruby-oauth/auth-sanitizer/compare/v0.2.3...v0.2.4
|
|
300
|
+
[0.2.4t]: https://github.com/ruby-oauth/auth-sanitizer/releases/tag/v0.2.4
|
|
196
301
|
[0.2.3]: https://github.com/ruby-oauth/auth-sanitizer/compare/v0.2.2...v0.2.3
|
|
197
302
|
[0.2.3t]: https://github.com/ruby-oauth/auth-sanitizer/releases/tag/v0.2.3
|
|
198
303
|
[0.2.2]: https://github.com/ruby-oauth/auth-sanitizer/compare/v0.2.1...v0.2.2
|
data/LICENSE.md
CHANGED
data/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<a href="https://github.com/ruby-oauth"><img alt="ruby-oauth Logo by
|
|
1
|
+
<a href="https://github.com/ruby-oauth"><img alt="ruby-oauth Logo by GitHub" src="https://github.com/ruby-oauth.png?size=192" width="14%" align="right"/></a>
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# 🧼 Auth::Sanitizer
|
|
4
4
|
|
|
5
|
-
[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![
|
|
5
|
+
[![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Total downloads][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![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 Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
|
|
6
6
|
|
|
7
|
-
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the
|
|
7
|
+
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -81,12 +81,12 @@ This gem is used by the following libraries to ensure clean output:
|
|
|
81
81
|
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
|
82
82
|
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
83
83
|
| Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby 10.0 Compat][💎jruby-10.0i]][🚎jruby-10.0-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
|
|
84
|
-
| Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.
|
|
84
|
+
| Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf]|
|
|
85
85
|
| Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
|
|
86
86
|
| Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
|
|
87
87
|
| Works with MRI Ruby 2 | ![Ruby 2.2 Compat][💎ruby-2.2i] ![Ruby 2.3 Compat][💎ruby-2.3i] <br/> [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
|
|
88
|
-
| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor] |
|
|
89
|
-
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on
|
|
88
|
+
| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor] |
|
|
89
|
+
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on GitHub.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
|
|
90
90
|
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
|
|
91
91
|
| Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
|
|
92
92
|
| Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
|
|
@@ -95,7 +95,7 @@ This gem is used by the following libraries to ensure clean output:
|
|
|
95
95
|
|
|
96
96
|
### Compatibility
|
|
97
97
|
|
|
98
|
-
Compatible with MRI Ruby 2.2.0+,
|
|
98
|
+
Compatible with MRI Ruby 2.2.0+, JRuby, and TruffleRuby.
|
|
99
99
|
CI workflows and Appraisals are generated for MRI Ruby 2.4+.
|
|
100
100
|
This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
|
|
101
101
|
may be higher than the gem's runtime compatibility floor when legacy Rubies are
|
|
@@ -108,36 +108,52 @@ The _amazing_ test matrix is powered by the kettle-dev stack.
|
|
|
108
108
|
<details markdown="1">
|
|
109
109
|
<summary>How kettle-dev manages complexity in tests</summary>
|
|
110
110
|
|
|
111
|
-
| Gem | Source | Role |
|
|
111
|
+
| Gem | Source | Role | Total downloads |
|
|
112
112
|
|-----|--------|------|---------------------|
|
|
113
|
-
| [appraisal2](https://
|
|
114
|
-
| [appraisal2-rubocop](https://
|
|
115
|
-
| [kettle-dev](https://
|
|
116
|
-
| [kettle-jem](https://
|
|
117
|
-
| [kettle-soup-cover](https://
|
|
118
|
-
| [kettle-test](https://
|
|
119
|
-
| [rubocop-lts](https://
|
|
120
|
-
| [turbo_tests2](https://
|
|
113
|
+
| [appraisal2](https://clickgems.clickhouse.com/dashboard/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [](https://clickgems.clickhouse.com/dashboard/appraisal2) |
|
|
114
|
+
| [appraisal2-rubocop](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) |
|
|
115
|
+
| [kettle-dev](https://clickgems.clickhouse.com/dashboard/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [](https://clickgems.clickhouse.com/dashboard/kettle-dev) |
|
|
116
|
+
| [kettle-jem](https://clickgems.clickhouse.com/dashboard/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [](https://clickgems.clickhouse.com/dashboard/kettle-jem) |
|
|
117
|
+
| [kettle-soup-cover](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) |
|
|
118
|
+
| [kettle-test](https://clickgems.clickhouse.com/dashboard/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [](https://clickgems.clickhouse.com/dashboard/kettle-test) |
|
|
119
|
+
| [rubocop-lts](https://clickgems.clickhouse.com/dashboard/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [](https://clickgems.clickhouse.com/dashboard/rubocop-lts) |
|
|
120
|
+
| [turbo_tests2](https://clickgems.clickhouse.com/dashboard/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [](https://clickgems.clickhouse.com/dashboard/turbo_tests2) |
|
|
121
121
|
|
|
122
122
|
</details>
|
|
123
123
|
|
|
124
|
+
### Runtime and Platform Support
|
|
125
|
+
|
|
126
|
+
Support tiers describe what this project's CI actually exercises, not what may
|
|
127
|
+
work in an untested environment:
|
|
128
|
+
|
|
129
|
+
- **Parallel support**: CI runs the test suite with multiple workers available.
|
|
130
|
+
- **Unsupported**: the engine/platform combination is not covered by CI and is
|
|
131
|
+
not a project compatibility claim.
|
|
132
|
+
|
|
133
|
+
| Ruby engine/version | Linux | macOS | Windows | Notes |
|
|
134
|
+
|---------------------|-------|-------|---------|-------|
|
|
135
|
+
| MRI 3.1-3.4 | Parallel support | Unsupported | Unsupported | Versioned Ruby workflows run on Linux. |
|
|
136
|
+
| MRI current | Parallel support | Parallel support | Unsupported | Current Ruby workflow covers the declared OS platforms. |
|
|
137
|
+
| MRI head | Parallel support | Unsupported | Unsupported | CI is allowed to fail while Ruby is in development. |
|
|
138
|
+
| JRuby (all CI lanes) | Parallel support | Unsupported | Unsupported | Engine workflows run on Linux; macOS and Windows are not exercised by CI. |
|
|
139
|
+
| TruffleRuby (all CI lanes) | Parallel support | Unsupported | Unsupported | Never shipped a Windows build (zero Windows assets across 66 releases scanned 2026-10-10); setup-ruby hard-fails ([source](https://github.com/ruby/setup-ruby/blob/master/README.md)) |
|
|
140
|
+
|
|
124
141
|
### Federated DVCS
|
|
125
142
|
|
|
126
143
|
<details markdown="1">
|
|
127
144
|
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
128
145
|
|
|
129
|
-
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
|
|
130
|
-
|
|
131
|
-
| 🧪 [ruby-oauth/auth-sanitizer on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
|
|
132
|
-
| 🧊 [ruby-oauth/auth-sanitizer on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
|
|
133
|
-
| 🐙 [ruby-oauth/auth-sanitizer on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
|
|
134
|
-
| 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
|
|
146
|
+
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
|
|
147
|
+
|-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
|
|
148
|
+
| 🧪 [ruby-oauth/auth-sanitizer on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
|
|
149
|
+
| 🧊 [ruby-oauth/auth-sanitizer on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
|
|
150
|
+
| 🐙 [ruby-oauth/auth-sanitizer on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
|
|
135
151
|
|
|
136
152
|
</details>
|
|
137
153
|
|
|
138
|
-
|
|
154
|
+
### Enterprise Support
|
|
139
155
|
|
|
140
|
-
|
|
156
|
+
[](https://tidelift.com/subscription/pkg/rubygems-auth-sanitizer?utm_source=rubygems-auth-sanitizer&utm_medium=referral&utm_campaign=readme)
|
|
141
157
|
|
|
142
158
|
Available as part of the Tidelift Subscription.
|
|
143
159
|
|
|
@@ -154,6 +170,7 @@ The maintainers of this and thousands of other packages are working with Tidelif
|
|
|
154
170
|
|
|
155
171
|
Alternatively:
|
|
156
172
|
|
|
173
|
+
- [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
|
|
157
174
|
- [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
158
175
|
- [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork]
|
|
159
176
|
- [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor]
|
|
@@ -614,8 +631,7 @@ See [SECURITY.md][🔐security].
|
|
|
614
631
|
## 🤝 Contributing
|
|
615
632
|
|
|
616
633
|
If you need some ideas of where to help, you could work on adding more code coverage,
|
|
617
|
-
|
|
618
|
-
or use the gem and think about how it could be better.
|
|
634
|
+
check [issues][🤝gh-issues] or [PRs][🤝gh-pulls], or use the gem and think about how it could be better.
|
|
619
635
|
|
|
620
636
|
We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
|
|
621
637
|
|
|
@@ -651,19 +667,6 @@ Made with [contributors-img][🖐contrib-rocks].
|
|
|
651
667
|
|
|
652
668
|
Also see GitLab Contributors: [https://gitlab.com/ruby-oauth/auth-sanitizer/-/graphs/main][🚎contributors-gl]
|
|
653
669
|
|
|
654
|
-
<details markdown="1">
|
|
655
|
-
<summary>⭐️ Star History</summary>
|
|
656
|
-
|
|
657
|
-
<a href="https://star-history.com/ruby-oauth/auth-sanitizer&Date">
|
|
658
|
-
<picture>
|
|
659
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date&theme=dark" />
|
|
660
|
-
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date" />
|
|
661
|
-
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date" />
|
|
662
|
-
</picture>
|
|
663
|
-
</a>
|
|
664
|
-
|
|
665
|
-
</details>
|
|
666
|
-
|
|
667
670
|
## 📌 Versioning
|
|
668
671
|
|
|
669
672
|
This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
|
|
@@ -693,7 +696,7 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
|
|
|
693
696
|
## 📄 License
|
|
694
697
|
|
|
695
698
|
The gem is available as open source under the terms of
|
|
696
|
-
the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
|
|
699
|
+
the [MIT](https://github.com/ruby-oauth/auth-sanitizer/blob/main/MIT.md) [![License: MIT][📄license-img]][📄license-ref].
|
|
697
700
|
|
|
698
701
|
### © Copyright
|
|
699
702
|
|
|
@@ -715,11 +718,12 @@ I'm hoping to be able to pay for my kids' health insurance this month,
|
|
|
715
718
|
so if you value the work I am doing, I need your support.
|
|
716
719
|
Please consider sponsoring me or the project.
|
|
717
720
|
|
|
718
|
-
To join the community or get help
|
|
721
|
+
To join the community or get help, use the RubyForum or Discord.
|
|
719
722
|
|
|
723
|
+
[![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
|
|
720
724
|
[![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
721
725
|
|
|
722
|
-
To say "thanks!" ☝️ Join the
|
|
726
|
+
To say "thanks!" ☝️ Join the community or 👇️ send money.
|
|
723
727
|
|
|
724
728
|
[![Sponsor ruby-oauth/auth-sanitizer on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
725
729
|
|
|
@@ -760,11 +764,14 @@ Thanks for RTFM. ☺️
|
|
|
760
764
|
[✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
|
|
761
765
|
[✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white
|
|
762
766
|
[✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
|
|
767
|
+
[✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
|
|
768
|
+
[✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
|
|
769
|
+
[✉️ruby-forum]: https://www.rubyforum.org/tag/ruby-oauth
|
|
763
770
|
|
|
764
771
|
[✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
|
|
765
772
|
[⛳️gem-namespace]: https://github.com/ruby-oauth/auth-sanitizer
|
|
766
773
|
[⛳️namespace-img]: https://img.shields.io/badge/namespace-Auth::Sanitizer-3C2D2D.svg?style=square&logo=ruby&logoColor=white
|
|
767
|
-
[⛳️gem-name]: https://
|
|
774
|
+
[⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/auth-sanitizer
|
|
768
775
|
[⛳️name-img]: https://img.shields.io/badge/name-auth--sanitizer-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
|
|
769
776
|
[⛳️tag-img]: https://img.shields.io/github/tag/ruby-oauth/auth-sanitizer.svg
|
|
770
777
|
[⛳️tag]: https://github.com/ruby-oauth/auth-sanitizer/releases
|
|
@@ -805,7 +812,7 @@ Thanks for RTFM. ☺️
|
|
|
805
812
|
[📜src-gl]: https://gitlab.com/ruby-oauth/auth-sanitizer
|
|
806
813
|
[📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
|
|
807
814
|
[📜src-cb]: https://codeberg.org/ruby-oauth/auth-sanitizer
|
|
808
|
-
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=
|
|
815
|
+
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
|
|
809
816
|
[📜src-gh]: https://github.com/ruby-oauth/auth-sanitizer
|
|
810
817
|
[📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
811
818
|
[📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
@@ -813,9 +820,9 @@ Thanks for RTFM. ☺️
|
|
|
813
820
|
[📜gh-wiki]: https://github.com/ruby-oauth/auth-sanitizer/wiki
|
|
814
821
|
[📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
|
|
815
822
|
[📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
|
|
816
|
-
[👽dl-rank]: https://
|
|
817
|
-
[👽dl-ranki]: https://img.shields.io/gem/
|
|
818
|
-
[👽version]: https://
|
|
823
|
+
[👽dl-rank]: https://clickgems.clickhouse.com/dashboard/auth-sanitizer
|
|
824
|
+
[👽dl-ranki]: https://img.shields.io/gem/dt/auth-sanitizer.svg
|
|
825
|
+
[👽version]: https://clickgems.clickhouse.com/dashboard/auth-sanitizer
|
|
819
826
|
[👽versioni]: https://img.shields.io/gem/v/auth-sanitizer.svg
|
|
820
827
|
[🏀qlty-mnt]: https://qlty.sh/gh/ruby-oauth/projects/auth-sanitizer
|
|
821
828
|
[🏀qlty-mnti]: https://qlty.sh/gh/ruby-oauth/projects/auth-sanitizer/maintainability.svg
|
|
@@ -839,7 +846,6 @@ Thanks for RTFM. ☺️
|
|
|
839
846
|
[🚎jruby-9.4-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/jruby-9.4.yml
|
|
840
847
|
[🚎jruby-10.0-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/jruby-10.0.yml
|
|
841
848
|
[🚎truby-22.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/truffleruby-22.3.yml
|
|
842
|
-
[🚎truby-23.0-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/truffleruby-23.0.yml
|
|
843
849
|
[🚎truby-23.1-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/truffleruby-23.1.yml
|
|
844
850
|
[🚎truby-24.2-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/truffleruby-24.2.yml
|
|
845
851
|
[🚎truby-25.0-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/truffleruby-25.0.yml
|
|
@@ -878,13 +884,11 @@ Thanks for RTFM. ☺️
|
|
|
878
884
|
[💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
|
|
879
885
|
[💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
|
|
880
886
|
[💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
881
|
-
[💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
882
887
|
[💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
883
888
|
[💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
884
889
|
[💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
885
890
|
[💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
886
891
|
[💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
|
|
887
|
-
[💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
|
|
888
892
|
[💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
889
893
|
[💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
890
894
|
[💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
@@ -917,12 +921,12 @@ Thanks for RTFM. ☺️
|
|
|
917
921
|
[📌gitmoji]: https://gitmoji.dev
|
|
918
922
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
919
923
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
920
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
924
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.172-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
921
925
|
[🔐security]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/SECURITY.md
|
|
922
926
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
923
927
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
924
928
|
[📄license]: LICENSE.md
|
|
925
|
-
[📄license-ref]: MIT.md
|
|
929
|
+
[📄license-ref]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/MIT.md
|
|
926
930
|
[📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
|
|
927
931
|
[📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
|
|
928
932
|
[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
|
|
@@ -943,7 +947,7 @@ Thanks for RTFM. ☺️
|
|
|
943
947
|
| Field | Value |
|
|
944
948
|
|---|---|
|
|
945
949
|
| Package | auth-sanitizer |
|
|
946
|
-
| Description |
|
|
950
|
+
| Description | 🧼 Configurable KV output redaction. Sanitize/filter your secrets. |
|
|
947
951
|
| Homepage | https://github.com/ruby-oauth/auth-sanitizer |
|
|
948
952
|
| Source | https://github.com/ruby-oauth/auth-sanitizer |
|
|
949
953
|
| License | `MIT` |
|
data/lib/auth/sanitizer/core.rb
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Auth::Sanitizer::Version.class_eval do
|
|
6
|
-
extend VersionGem::Basic
|
|
7
|
-
end
|
|
8
|
-
|
|
3
|
+
# Top-level namespace for authentication-adjacent helpers.
|
|
9
4
|
module Auth
|
|
5
|
+
# Credential redaction for inspect output and debug logging.
|
|
10
6
|
module Sanitizer
|
|
7
|
+
# Error raised for auth-sanitizer failures.
|
|
11
8
|
class Error < StandardError; end
|
|
12
9
|
|
|
13
10
|
# Default keys filtered from debug log output.
|
|
@@ -42,16 +39,13 @@ module Auth
|
|
|
42
39
|
|
|
43
40
|
# Install a custom provider for the filtered label.
|
|
44
41
|
#
|
|
45
|
-
# The provider is
|
|
46
|
-
# {SanitizedLogger}-bearing object is initialized, allowing the label to
|
|
47
|
-
#
|
|
48
|
-
# object instance.
|
|
42
|
+
# The provider callable is invoked each time a new {FilteredAttributes}- or
|
|
43
|
+
# {SanitizedLogger}-bearing object is initialized, allowing the label to track a host gem's
|
|
44
|
+
# live configuration while still being snapshotted per object instance.
|
|
49
45
|
#
|
|
46
|
+
# @return [void]
|
|
50
47
|
# @example Delegate to a host gem's config
|
|
51
48
|
# Auth::Sanitizer.filtered_label_provider = -> { MyGem.config[:filtered_label] }
|
|
52
|
-
#
|
|
53
|
-
# @param [#call] provider A callable that returns the label string
|
|
54
|
-
# @return [void]
|
|
55
49
|
define_singleton_method(:filtered_label_provider=) do |provider|
|
|
56
50
|
filtered_label_provider_mutex.synchronize do
|
|
57
51
|
filtered_label_provider = provider
|
|
@@ -4,13 +4,11 @@ module Auth
|
|
|
4
4
|
module Sanitizer
|
|
5
5
|
# Mixin that redacts sensitive instance variables in `#inspect` output.
|
|
6
6
|
#
|
|
7
|
-
# Classes include this module and declare
|
|
8
|
-
#
|
|
9
|
-
# delegated to {ThingFilter}, which is initialized once per object.
|
|
7
|
+
# Classes include this module and declare attribute names to filter via {.filtered_attributes}.
|
|
8
|
+
# Matching and replacement behavior is delegated to {ThingFilter}, initialized once per object.
|
|
10
9
|
#
|
|
11
|
-
# This means existing objects keep the filter configuration that was present
|
|
12
|
-
#
|
|
13
|
-
# declarations change later.
|
|
10
|
+
# This means existing objects keep the filter configuration that was present when they were
|
|
11
|
+
# initialized, even if global config or class-level filter declarations change later.
|
|
14
12
|
#
|
|
15
13
|
# The label used for redaction is resolved from {Auth::Sanitizer.filtered_label}
|
|
16
14
|
# at object initialization time. Host gems may customize this by installing a
|
|
@@ -20,7 +18,7 @@ module Auth
|
|
|
20
18
|
# Hook invoked when the module is included. Extends the including class with
|
|
21
19
|
# class-level helpers and prepends the initializer hook.
|
|
22
20
|
#
|
|
23
|
-
# @param [Class]
|
|
21
|
+
# @param base [Class] The including class
|
|
24
22
|
# @return [void]
|
|
25
23
|
def included(base)
|
|
26
24
|
base.extend(ClassMethods)
|
|
@@ -47,7 +45,8 @@ module Auth
|
|
|
47
45
|
class << self
|
|
48
46
|
# Declare attributes that should be redacted in inspect output.
|
|
49
47
|
#
|
|
50
|
-
# @param [
|
|
48
|
+
# @param base [Class] The class the attributes are declared on
|
|
49
|
+
# @param attributes [Array<Symbol, String>] One or more attribute names
|
|
51
50
|
# @return [void]
|
|
52
51
|
def filtered_attributes(base, *attributes)
|
|
53
52
|
base.instance_variable_set(:@filtered_attribute_names, attributes.map(&:to_sym))
|
|
@@ -55,7 +54,7 @@ module Auth
|
|
|
55
54
|
|
|
56
55
|
# The configured attribute names to filter.
|
|
57
56
|
#
|
|
58
|
-
# @param [Class]
|
|
57
|
+
# @param base [Class] The class to get filtered attributes for
|
|
59
58
|
# @return [Array<Symbol>]
|
|
60
59
|
def filtered_attribute_names(base)
|
|
61
60
|
return [] unless base.instance_variable_defined?(:@filtered_attribute_names)
|
|
@@ -66,7 +65,7 @@ module Auth
|
|
|
66
65
|
|
|
67
66
|
# Declare attributes that should be redacted in inspect output.
|
|
68
67
|
#
|
|
69
|
-
# @param [Array<Symbol, String>]
|
|
68
|
+
# @param attributes [Array<Symbol, String>] One or more attribute names
|
|
70
69
|
# @return [void]
|
|
71
70
|
def filtered_attributes(*attributes)
|
|
72
71
|
ClassMethods.filtered_attributes(self, *attributes)
|
|
@@ -101,7 +100,9 @@ module Auth
|
|
|
101
100
|
|
|
102
101
|
private
|
|
103
102
|
|
|
103
|
+
# Matches a quoted string literal inside `#inspect` output.
|
|
104
104
|
INSPECTED_STRING_VALUE = /"(?:(?:\\.)|[^"\\])*"/
|
|
105
|
+
# Matches redactable key/value pairs inside `#inspect` output.
|
|
105
106
|
INSPECTED_REDACTABLE_VALUE = /
|
|
106
107
|
(?:
|
|
107
108
|
(@([A-Za-z_]\w*[!?=]?)=) |
|
|
@@ -113,6 +114,10 @@ module Auth
|
|
|
113
114
|
/x
|
|
114
115
|
private_constant :INSPECTED_STRING_VALUE, :INSPECTED_REDACTABLE_VALUE
|
|
115
116
|
|
|
117
|
+
# Redact filtered values from `#inspect` output text.
|
|
118
|
+
#
|
|
119
|
+
# @param inspected [String] The `#inspect` output to redact
|
|
120
|
+
# @return [String] The redacted inspect output
|
|
116
121
|
def redact_inspected_values(inspected)
|
|
117
122
|
inspected.gsub(INSPECTED_REDACTABLE_VALUE) do |match|
|
|
118
123
|
captures = Regexp.last_match.captures
|