rodauth-tools 0.3.0
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 +7 -0
- data/.gitignore +93 -0
- data/.gitlint +9 -0
- data/.markdownlint-cli2.jsonc +26 -0
- data/.pre-commit-config.yaml +46 -0
- data/.rubocop.yml +18 -0
- data/.rubocop_todo.yml +243 -0
- data/CHANGELOG.md +81 -0
- data/CLAUDE.md +262 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/CONTRIBUTING.md +111 -0
- data/Gemfile +35 -0
- data/Gemfile.lock +356 -0
- data/LICENSE.txt +21 -0
- data/README.md +339 -0
- data/Rakefile +8 -0
- data/lib/rodauth/features/external_identity.rb +946 -0
- data/lib/rodauth/features/hmac_secret_guard.rb +119 -0
- data/lib/rodauth/features/jwt_secret_guard.rb +120 -0
- data/lib/rodauth/features/table_guard.rb +937 -0
- data/lib/rodauth/sequel_generator.rb +531 -0
- data/lib/rodauth/table_inspector.rb +124 -0
- data/lib/rodauth/template_inspector.rb +134 -0
- data/lib/rodauth/tools/console_helpers.rb +158 -0
- data/lib/rodauth/tools/migration/sequel/account_expiration.erb +9 -0
- data/lib/rodauth/tools/migration/sequel/active_sessions.erb +10 -0
- data/lib/rodauth/tools/migration/sequel/audit_logging.erb +12 -0
- data/lib/rodauth/tools/migration/sequel/base.erb +41 -0
- data/lib/rodauth/tools/migration/sequel/disallow_password_reuse.erb +8 -0
- data/lib/rodauth/tools/migration/sequel/email_auth.erb +17 -0
- data/lib/rodauth/tools/migration/sequel/jwt_refresh.erb +18 -0
- data/lib/rodauth/tools/migration/sequel/lockout.erb +21 -0
- data/lib/rodauth/tools/migration/sequel/otp.erb +9 -0
- data/lib/rodauth/tools/migration/sequel/otp_unlock.erb +8 -0
- data/lib/rodauth/tools/migration/sequel/password_expiration.erb +7 -0
- data/lib/rodauth/tools/migration/sequel/recovery_codes.erb +8 -0
- data/lib/rodauth/tools/migration/sequel/remember.erb +16 -0
- data/lib/rodauth/tools/migration/sequel/reset_password.erb +17 -0
- data/lib/rodauth/tools/migration/sequel/single_session.erb +7 -0
- data/lib/rodauth/tools/migration/sequel/sms_codes.erb +10 -0
- data/lib/rodauth/tools/migration/sequel/verify_account.erb +9 -0
- data/lib/rodauth/tools/migration/sequel/verify_login_change.erb +17 -0
- data/lib/rodauth/tools/migration/sequel/webauthn.erb +15 -0
- data/lib/rodauth/tools/migration.rb +188 -0
- data/lib/rodauth/tools/version.rb +9 -0
- data/lib/rodauth/tools.rb +29 -0
- data/package-lock.json +500 -0
- data/package.json +11 -0
- data/rodauth-tools.gemspec +40 -0
- metadata +136 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 49ed411752d1850001a89d8be7260feef6e8b4dae04547100d75bde5c80d1afd
|
|
4
|
+
data.tar.gz: ce7e4e431d01a64f4e6a8f1847795a1df7caa529895b0aa12568543668aaca71
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 76cec388e98fb42c5413d25ac99ee8db3351db79f6c68c57abee7049286738b7242b0afa0527bc3c1df2066d002c667687d6089fc54a20a1a3df5553d52ffee8
|
|
7
|
+
data.tar.gz: 3eface17b5e1d077bb93498c793af35d9554d9e42bf72511eb7c9569ad84fd5a2cfaf7eee84c9c91b9af5d9672ef111bee01e1bd5dbe65c4434b76df3e10c845
|
data/.gitignore
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/.bundle/
|
|
2
|
+
/.yardoc
|
|
3
|
+
/_yardoc/
|
|
4
|
+
/coverage/
|
|
5
|
+
/doc/
|
|
6
|
+
/pkg/
|
|
7
|
+
/spec/reports/
|
|
8
|
+
/tmp/
|
|
9
|
+
|
|
10
|
+
# rspec failure tracking
|
|
11
|
+
.rspec_status
|
|
12
|
+
|
|
13
|
+
# Globs
|
|
14
|
+
*.env
|
|
15
|
+
*.log
|
|
16
|
+
*.rdb
|
|
17
|
+
*.txt
|
|
18
|
+
*.rdoc
|
|
19
|
+
.*.json
|
|
20
|
+
.byebug*
|
|
21
|
+
.ruby-version
|
|
22
|
+
spoom_*
|
|
23
|
+
.commit_hash.txt
|
|
24
|
+
*.sublime-*
|
|
25
|
+
.yardoc
|
|
26
|
+
npm-debug.log*
|
|
27
|
+
yarn-debug.log*
|
|
28
|
+
yarn-error.log*
|
|
29
|
+
pnpm-debug.log*
|
|
30
|
+
|
|
31
|
+
# Directories
|
|
32
|
+
.certs/
|
|
33
|
+
.claude
|
|
34
|
+
.continue/
|
|
35
|
+
.devcontainer
|
|
36
|
+
.history
|
|
37
|
+
.pnpm/
|
|
38
|
+
.pnpm-store/
|
|
39
|
+
.prompts/
|
|
40
|
+
.prompts*
|
|
41
|
+
.pytest_cache/
|
|
42
|
+
.ruby-lsp/
|
|
43
|
+
.serena
|
|
44
|
+
.vscode/
|
|
45
|
+
.idea/
|
|
46
|
+
.cache/
|
|
47
|
+
.temp/
|
|
48
|
+
.zed/
|
|
49
|
+
.appendonlydir/
|
|
50
|
+
.bundle/
|
|
51
|
+
.rspec
|
|
52
|
+
.rspec_status
|
|
53
|
+
appendonlydir/
|
|
54
|
+
data/
|
|
55
|
+
doc/
|
|
56
|
+
node_modules/
|
|
57
|
+
vendor/
|
|
58
|
+
log/
|
|
59
|
+
tmp/
|
|
60
|
+
coverage/
|
|
61
|
+
dist/
|
|
62
|
+
public/web/dist/
|
|
63
|
+
public/doc
|
|
64
|
+
!tests/data
|
|
65
|
+
|
|
66
|
+
# Files
|
|
67
|
+
.DS_Store
|
|
68
|
+
!.pr_agent.toml
|
|
69
|
+
.github/*md
|
|
70
|
+
.eslintcache
|
|
71
|
+
.claude
|
|
72
|
+
.rspec*
|
|
73
|
+
.qodo
|
|
74
|
+
.continuerc.json
|
|
75
|
+
.mcp.json
|
|
76
|
+
bin/bundle
|
|
77
|
+
bin/rspec
|
|
78
|
+
bin/rubocop
|
|
79
|
+
!fly.toml
|
|
80
|
+
support/schemas/
|
|
81
|
+
tsconfig.tsbuildinfo
|
|
82
|
+
*.db
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# Environment files
|
|
86
|
+
.env*
|
|
87
|
+
!.env.example
|
|
88
|
+
|
|
89
|
+
# Playwright paths
|
|
90
|
+
test-results/
|
|
91
|
+
playwright-report/
|
|
92
|
+
blob-report/
|
|
93
|
+
playwright/.cache/
|
data/.gitlint
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Configuration for markdownlint-cli2
|
|
2
|
+
{
|
|
3
|
+
// Markdownlint rules configuration
|
|
4
|
+
"config": {
|
|
5
|
+
"default": true,
|
|
6
|
+
"MD003": { "style": "atx" },
|
|
7
|
+
"MD004": { "style": "dash" },
|
|
8
|
+
"MD007": { "indent": 2 },
|
|
9
|
+
"MD009": { "br_spaces": 2 },
|
|
10
|
+
"MD013": false,
|
|
11
|
+
"MD024": { "siblings_only": true },
|
|
12
|
+
"MD025": true,
|
|
13
|
+
"MD033": false,
|
|
14
|
+
"MD041": false,
|
|
15
|
+
"MD046": { "style": "fenced" },
|
|
16
|
+
"MD048": { "style": "backtick" },
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
// Automatically fix violations when possible
|
|
20
|
+
"fix": true,
|
|
21
|
+
|
|
22
|
+
// Files/directories to ignore
|
|
23
|
+
// Note: When run via pre-commit, only staged files are checked.
|
|
24
|
+
// The globs pattern is not needed as pre-commit passes filenames automatically.
|
|
25
|
+
"ignores": ["node_modules", ".serena"],
|
|
26
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# See https://pre-commit.com for more information
|
|
2
|
+
# See https://pre-commit.com/hooks.html for more hooks
|
|
3
|
+
repos:
|
|
4
|
+
# General file checks
|
|
5
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
6
|
+
rev: v5.0.0
|
|
7
|
+
hooks:
|
|
8
|
+
- id: trailing-whitespace
|
|
9
|
+
args: [--markdown-linebreak-ext=md]
|
|
10
|
+
- id: end-of-file-fixer
|
|
11
|
+
- id: check-yaml
|
|
12
|
+
- id: check-added-large-files
|
|
13
|
+
args: [--maxkb=500]
|
|
14
|
+
- id: check-merge-conflict
|
|
15
|
+
- id: check-case-conflict
|
|
16
|
+
- id: mixed-line-ending
|
|
17
|
+
args: [--fix=lf]
|
|
18
|
+
- id: detect-private-key
|
|
19
|
+
|
|
20
|
+
# Security checks
|
|
21
|
+
- repo: local
|
|
22
|
+
hooks:
|
|
23
|
+
- id: bundler-audit
|
|
24
|
+
name: bundler-audit
|
|
25
|
+
entry: bash -c 'eval "$(rbenv init - bash)" && bundle exec bundler-audit "$@"' --
|
|
26
|
+
language: system
|
|
27
|
+
args: [--update]
|
|
28
|
+
types: [ruby]
|
|
29
|
+
pass_filenames: false
|
|
30
|
+
|
|
31
|
+
# Markdown linting
|
|
32
|
+
- repo: https://github.com/DavidAnson/markdownlint-cli2
|
|
33
|
+
rev: v0.18.1
|
|
34
|
+
hooks:
|
|
35
|
+
- id: markdownlint-cli2
|
|
36
|
+
args: [--fix, --config, .markdownlint-cli2.jsonc]
|
|
37
|
+
|
|
38
|
+
# Commit message checks
|
|
39
|
+
#
|
|
40
|
+
# Prefix must be one of: feat, fix, docs, style, refactor, perf, test, build, ci, chore
|
|
41
|
+
#
|
|
42
|
+
- repo: https://github.com/jorisroovers/gitlint
|
|
43
|
+
rev: v0.19.1
|
|
44
|
+
hooks:
|
|
45
|
+
- id: gitlint
|
|
46
|
+
stages: [commit-msg]
|
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
|
2
|
+
|
|
3
|
+
# .rubocop.yml
|
|
4
|
+
|
|
5
|
+
plugins:
|
|
6
|
+
- rubocop-rake
|
|
7
|
+
- rubocop-rspec
|
|
8
|
+
|
|
9
|
+
AllCops:
|
|
10
|
+
TargetRubyVersion: 3.2
|
|
11
|
+
NewCops: enable
|
|
12
|
+
SuggestExtensions: false
|
|
13
|
+
|
|
14
|
+
Style/StringLiterals:
|
|
15
|
+
EnforcedStyle: single_quotes
|
|
16
|
+
|
|
17
|
+
Style/StringLiteralsInInterpolation:
|
|
18
|
+
EnforcedStyle: double_quotes
|
data/.rubocop_todo.yml
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# This configuration was generated by
|
|
2
|
+
# `rubocop --auto-gen-config`
|
|
3
|
+
# on 2025-11-25 21:51:07 UTC using RuboCop version 1.81.7.
|
|
4
|
+
# The point is for the user to remove these configuration records
|
|
5
|
+
# one by one as the offenses are removed from the code base.
|
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
|
8
|
+
|
|
9
|
+
# Offense count: 4
|
|
10
|
+
# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
|
|
11
|
+
Lint/DuplicateBranch:
|
|
12
|
+
Exclude:
|
|
13
|
+
- 'lib/rodauth/sequel_generator.rb'
|
|
14
|
+
|
|
15
|
+
# Offense count: 1
|
|
16
|
+
Lint/NoReturnInBeginEndBlocks:
|
|
17
|
+
Exclude:
|
|
18
|
+
- 'lib/rodauth/features/external_identity.rb'
|
|
19
|
+
|
|
20
|
+
# Offense count: 6
|
|
21
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
22
|
+
# Configuration parameters: AllowedMethods, InferNonNilReceiver, AdditionalNilMethods.
|
|
23
|
+
# AllowedMethods: instance_of?, kind_of?, is_a?, eql?, respond_to?, equal?
|
|
24
|
+
# AdditionalNilMethods: present?, blank?, try, try!
|
|
25
|
+
Lint/RedundantSafeNavigation:
|
|
26
|
+
Exclude:
|
|
27
|
+
- 'lib/rodauth/features/table_guard.rb'
|
|
28
|
+
|
|
29
|
+
# Offense count: 2
|
|
30
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
31
|
+
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
|
|
32
|
+
# NotImplementedExceptions: NotImplementedError
|
|
33
|
+
Lint/UnusedMethodArgument:
|
|
34
|
+
Exclude:
|
|
35
|
+
- 'lib/rodauth/sequel_generator.rb'
|
|
36
|
+
|
|
37
|
+
# Offense count: 1
|
|
38
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
39
|
+
Lint/UselessMethodDefinition:
|
|
40
|
+
Exclude:
|
|
41
|
+
- 'lib/rodauth/features/table_guard.rb'
|
|
42
|
+
|
|
43
|
+
# Offense count: 21
|
|
44
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
|
|
45
|
+
Metrics/AbcSize:
|
|
46
|
+
Max: 87
|
|
47
|
+
|
|
48
|
+
# Offense count: 5
|
|
49
|
+
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
|
|
50
|
+
# AllowedMethods: refine
|
|
51
|
+
Metrics/BlockLength:
|
|
52
|
+
Max: 509
|
|
53
|
+
|
|
54
|
+
# Offense count: 1
|
|
55
|
+
# Configuration parameters: CountComments, CountAsOne.
|
|
56
|
+
Metrics/ClassLength:
|
|
57
|
+
Max: 289
|
|
58
|
+
|
|
59
|
+
# Offense count: 10
|
|
60
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
|
61
|
+
Metrics/CyclomaticComplexity:
|
|
62
|
+
Max: 22
|
|
63
|
+
|
|
64
|
+
# Offense count: 41
|
|
65
|
+
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
|
|
66
|
+
Metrics/MethodLength:
|
|
67
|
+
Max: 64
|
|
68
|
+
|
|
69
|
+
# Offense count: 3
|
|
70
|
+
# Configuration parameters: CountComments, CountAsOne.
|
|
71
|
+
Metrics/ModuleLength:
|
|
72
|
+
Max: 511
|
|
73
|
+
|
|
74
|
+
# Offense count: 10
|
|
75
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
|
76
|
+
Metrics/PerceivedComplexity:
|
|
77
|
+
Max: 18
|
|
78
|
+
|
|
79
|
+
# Offense count: 2
|
|
80
|
+
Naming/AccessorMethodName:
|
|
81
|
+
Exclude:
|
|
82
|
+
- 'lib/rodauth/features/table_guard.rb'
|
|
83
|
+
- 'lib/rodauth/template_inspector.rb'
|
|
84
|
+
|
|
85
|
+
# Offense count: 2
|
|
86
|
+
# Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
|
|
87
|
+
# AllowedMethods: call
|
|
88
|
+
# WaywardPredicates: nonzero?
|
|
89
|
+
Naming/PredicateMethod:
|
|
90
|
+
Exclude:
|
|
91
|
+
- 'lib/rodauth/features/external_identity.rb'
|
|
92
|
+
|
|
93
|
+
# Offense count: 9
|
|
94
|
+
# Configuration parameters: Prefixes, AllowedPatterns.
|
|
95
|
+
# Prefixes: when, with, without
|
|
96
|
+
RSpec/ContextWording:
|
|
97
|
+
Exclude:
|
|
98
|
+
- 'spec/rodauth/features/external_identity/external_identity_spec.rb'
|
|
99
|
+
|
|
100
|
+
# Offense count: 5
|
|
101
|
+
# Configuration parameters: IgnoredMetadata.
|
|
102
|
+
RSpec/DescribeClass:
|
|
103
|
+
Exclude:
|
|
104
|
+
- '**/spec/features/**/*'
|
|
105
|
+
- '**/spec/requests/**/*'
|
|
106
|
+
- '**/spec/routing/**/*'
|
|
107
|
+
- '**/spec/system/**/*'
|
|
108
|
+
- '**/spec/views/**/*'
|
|
109
|
+
- 'spec/rodauth/features/external_identity/external_identity_spec.rb'
|
|
110
|
+
- 'spec/rodauth/features/external_identity_autocreate_integration_spec.rb'
|
|
111
|
+
- 'spec/rodauth/features/table_guard/table_guard_integration_spec.rb'
|
|
112
|
+
- 'spec/rodauth/features/table_guard/table_guard_simple_spec.rb'
|
|
113
|
+
- 'spec/rodauth/features/table_guard/table_guard_spec.rb'
|
|
114
|
+
|
|
115
|
+
# Offense count: 58
|
|
116
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
117
|
+
RSpec/EmptyExampleGroup:
|
|
118
|
+
Exclude:
|
|
119
|
+
- 'spec/rodauth/features/table_guard/table_guard_spec.rb'
|
|
120
|
+
- 'spec/rodauth/sequel_generator_spec.rb'
|
|
121
|
+
- 'spec/rodauth/table_inspector_spec.rb'
|
|
122
|
+
- 'spec/rodauth/tools/console_helpers_spec.rb'
|
|
123
|
+
|
|
124
|
+
# Offense count: 180
|
|
125
|
+
# Configuration parameters: CountAsOne.
|
|
126
|
+
RSpec/ExampleLength:
|
|
127
|
+
Max: 34
|
|
128
|
+
|
|
129
|
+
# Offense count: 72
|
|
130
|
+
RSpec/MultipleExpectations:
|
|
131
|
+
Max: 8
|
|
132
|
+
|
|
133
|
+
# Offense count: 1
|
|
134
|
+
# Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata, InflectorPath, EnforcedInflector.
|
|
135
|
+
# SupportedInflectors: default, active_support
|
|
136
|
+
RSpec/SpecFilePathFormat:
|
|
137
|
+
Exclude:
|
|
138
|
+
- '**/spec/routing/**/*'
|
|
139
|
+
- 'spec/rodauth/rack_spec.rb'
|
|
140
|
+
|
|
141
|
+
# Offense count: 1
|
|
142
|
+
Security/Eval:
|
|
143
|
+
Exclude:
|
|
144
|
+
- 'lib/rodauth/tools/migration.rb'
|
|
145
|
+
|
|
146
|
+
# Offense count: 1
|
|
147
|
+
Style/DocumentDynamicEvalDefinition:
|
|
148
|
+
Exclude:
|
|
149
|
+
- 'lib/rodauth/tools/migration.rb'
|
|
150
|
+
|
|
151
|
+
# Offense count: 4
|
|
152
|
+
# Configuration parameters: AllowedConstants.
|
|
153
|
+
Style/Documentation:
|
|
154
|
+
Exclude:
|
|
155
|
+
- 'spec/**/*'
|
|
156
|
+
- 'test/**/*'
|
|
157
|
+
- 'lib/rodauth/features/external_identity.rb'
|
|
158
|
+
- 'lib/rodauth/features/hmac_secret_guard.rb'
|
|
159
|
+
- 'lib/rodauth/features/jwt_secret_guard.rb'
|
|
160
|
+
- 'lib/rodauth/features/table_guard.rb'
|
|
161
|
+
|
|
162
|
+
# Offense count: 1
|
|
163
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
164
|
+
# Configuration parameters: AllowedReceivers.
|
|
165
|
+
# AllowedReceivers: Thread.current
|
|
166
|
+
Style/HashEachMethods:
|
|
167
|
+
Exclude:
|
|
168
|
+
- 'lib/rodauth/features/external_identity.rb'
|
|
169
|
+
|
|
170
|
+
# Offense count: 5
|
|
171
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
172
|
+
Style/IfUnlessModifier:
|
|
173
|
+
Exclude:
|
|
174
|
+
- 'lib/rodauth/features/external_identity.rb'
|
|
175
|
+
- 'lib/rodauth/features/table_guard.rb'
|
|
176
|
+
- 'lib/rodauth/sequel_generator.rb'
|
|
177
|
+
|
|
178
|
+
# Offense count: 8
|
|
179
|
+
Style/MultilineBlockChain:
|
|
180
|
+
Exclude:
|
|
181
|
+
- 'spec/rodauth/features/external_identity/external_identity_spec.rb'
|
|
182
|
+
- 'spec/rodauth/features/external_identity_autocreate_integration_spec.rb'
|
|
183
|
+
- 'spec/rodauth/features/hmac_secret_guard/hmac_secret_guard_spec.rb'
|
|
184
|
+
- 'spec/rodauth/features/jwt_secret_guard/jwt_secret_guard_spec.rb'
|
|
185
|
+
- 'spec/rodauth/features/table_guard/table_guard_integration_spec.rb'
|
|
186
|
+
- 'spec/rodauth/features/table_guard/table_guard_simple_spec.rb'
|
|
187
|
+
|
|
188
|
+
# Offense count: 3
|
|
189
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
190
|
+
# Configuration parameters: EnforcedStyle, AllowedMethods, AllowedPatterns.
|
|
191
|
+
# SupportedStyles: predicate, comparison
|
|
192
|
+
Style/NumericPredicate:
|
|
193
|
+
Exclude:
|
|
194
|
+
- 'spec/**/*'
|
|
195
|
+
- 'lib/rodauth/features/table_guard.rb'
|
|
196
|
+
|
|
197
|
+
# Offense count: 5
|
|
198
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
199
|
+
# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
|
|
200
|
+
# AllowedMethods: present?, blank?, presence, try, try!
|
|
201
|
+
Style/SafeNavigation:
|
|
202
|
+
Exclude:
|
|
203
|
+
- 'spec/rodauth/features/external_identity/external_identity_spec.rb'
|
|
204
|
+
- 'spec/rodauth/features/external_identity_autocreate_integration_spec.rb'
|
|
205
|
+
- 'spec/rodauth/features/hmac_secret_guard/hmac_secret_guard_spec.rb'
|
|
206
|
+
- 'spec/rodauth/features/jwt_secret_guard/jwt_secret_guard_spec.rb'
|
|
207
|
+
- 'spec/rodauth/features/table_guard/table_guard_simple_spec.rb'
|
|
208
|
+
|
|
209
|
+
# Offense count: 1
|
|
210
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
211
|
+
Style/SingleArgumentDig:
|
|
212
|
+
Exclude:
|
|
213
|
+
- 'lib/rodauth/features/external_identity.rb'
|
|
214
|
+
|
|
215
|
+
# Offense count: 5
|
|
216
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
217
|
+
# Configuration parameters: Mode.
|
|
218
|
+
Style/StringConcatenation:
|
|
219
|
+
Exclude:
|
|
220
|
+
- 'examples/sinatra-table-guard/app.rb'
|
|
221
|
+
- 'examples/sinatra-table-guard/console.rb'
|
|
222
|
+
- 'lib/rodauth/sequel_generator.rb'
|
|
223
|
+
|
|
224
|
+
# Offense count: 60
|
|
225
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
226
|
+
# Configuration parameters: AllowMethodsWithArguments, AllowedMethods, AllowedPatterns, AllowComments.
|
|
227
|
+
# AllowedMethods: define_method
|
|
228
|
+
Style/SymbolProc:
|
|
229
|
+
Exclude:
|
|
230
|
+
- 'spec/rodauth/features/external_identity/external_identity_spec.rb'
|
|
231
|
+
- 'spec/rodauth/features/external_identity_autocreate_integration_spec.rb'
|
|
232
|
+
- 'spec/rodauth/features/hmac_secret_guard/hmac_secret_guard_spec.rb'
|
|
233
|
+
- 'spec/rodauth/features/jwt_secret_guard/jwt_secret_guard_spec.rb'
|
|
234
|
+
- 'spec/rodauth/features/table_guard/table_guard_integration_spec.rb'
|
|
235
|
+
- 'spec/rodauth/features/table_guard/table_guard_simple_spec.rb'
|
|
236
|
+
- 'try/features/external_identity_try.rb'
|
|
237
|
+
|
|
238
|
+
# Offense count: 3
|
|
239
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
240
|
+
# Configuration parameters: AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
|
|
241
|
+
# URISchemes: http, https
|
|
242
|
+
Layout/LineLength:
|
|
243
|
+
Max: 170
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.3.0] - 2025-11-25
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **External Identity Layer 2 API** - Extended configuration options for external identity columns:
|
|
13
|
+
- `before_create_account` callback for auto-generating IDs during account creation
|
|
14
|
+
- `formatter` for normalizing values before storage
|
|
15
|
+
- `validator` for validating values before storage
|
|
16
|
+
- `verifier` for checking external service connectivity
|
|
17
|
+
- `handshake` for OAuth state verification flows
|
|
18
|
+
- **TemplateInspector module** - Extracts table names directly from ERB templates to solve the "hidden tables" problem where templates create tables without corresponding `*_table` methods
|
|
19
|
+
- **SequelGenerator** - Generates Sequel migration code for missing Rodauth tables with:
|
|
20
|
+
- ALTER TABLE support for adding missing columns
|
|
21
|
+
- Integration with TemplateInspector for complete table discovery
|
|
22
|
+
- Sequel column options support (types, constraints)
|
|
23
|
+
- **Table Guard column-level tracking** - Validates both tables AND columns exist for enabled features
|
|
24
|
+
- Comprehensive test coverage for new features
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- ERB templates now aligned with Rodauth README Sequel examples
|
|
29
|
+
- Removed hardcoded feature mappings from TableInspector in favor of dynamic discovery
|
|
30
|
+
- File headers standardized with path comments and `frozen_string_literal`
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- DROP statement generation now uses TemplateInspector for complete table list
|
|
35
|
+
- `account_select` override behavior corrected for external identity columns
|
|
36
|
+
- Column type mapping for Class constants in migrations
|
|
37
|
+
|
|
38
|
+
## [0.2.0] - 2025-10-28
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- Reordered features in README.md by common use case (table_guard first)
|
|
43
|
+
- Improved project status messaging and clarified this is a reference implementation
|
|
44
|
+
- Enhanced installation instructions with multiple options
|
|
45
|
+
- Updated documentation cross-references and fixed broken links
|
|
46
|
+
- Improved example documentation with expected output and learning outcomes
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
|
|
50
|
+
- Quick Start section to README.md showing immediate value
|
|
51
|
+
- CHANGELOG.md to track project changes
|
|
52
|
+
- Expected output examples in sinatra-table-guard documentation
|
|
53
|
+
- Detailed "What you'll learn" sections in examples
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- Broken link from `docs/integration.md` to `docs/rodauth-integration.md`
|
|
58
|
+
- Missing context about project purpose and use cases
|
|
59
|
+
|
|
60
|
+
## [0.1.0] - 2025-10-15
|
|
61
|
+
|
|
62
|
+
### Added
|
|
63
|
+
|
|
64
|
+
- Table Guard feature for database table validation
|
|
65
|
+
- External Identity feature for tracking external service IDs
|
|
66
|
+
- HMAC Secret Guard feature for automatic secret validation
|
|
67
|
+
- JWT Secret Guard feature for automatic JWT secret validation
|
|
68
|
+
- Sequel migration generator for 19 Rodauth features
|
|
69
|
+
- Interactive console with helper methods
|
|
70
|
+
- Comprehensive test suite with RSpec
|
|
71
|
+
- Documentation for all features
|
|
72
|
+
- Sinatra example application
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
|
|
76
|
+
- Namespace changed from `Rodauth::Rack::Generators::Migration` to `Rodauth::Tools::Migration`
|
|
77
|
+
- Evolution from Rack adapter to framework-agnostic utilities
|
|
78
|
+
|
|
79
|
+
[0.3.0]: https://github.com/delano/rodauth-tools/compare/v0.2.0...v0.3.0
|
|
80
|
+
[0.2.0]: https://github.com/delano/rodauth-tools/compare/v0.1.0...v0.2.0
|
|
81
|
+
[0.1.0]: https://github.com/delano/rodauth-tools/releases/tag/v0.1.0
|