Skip to content

Config refactoring#10

Merged
ddon merged 2 commits into
BeamLabEU:devfrom
construct-d:dev
Sep 3, 2025
Merged

Config refactoring#10
ddon merged 2 commits into
BeamLabEU:devfrom
construct-d:dev

Conversation

@construct-d
Copy link
Copy Markdown
Contributor

No description provided.

@ddon ddon merged commit 9b33b0f into BeamLabEU:dev Sep 3, 2025
ddon pushed a commit that referenced this pull request Nov 12, 2025
…ty-011CV2TD7xEtrKhPmWXNWKbY

Fix timing attack vulnerability in magic link authentication
mdon added a commit to mdon/phoenix_kit that referenced this pull request May 5, 2026
…follow-up)

Closes NITPICK BeamLabEU#10 from CLAUDE_REVIEW.md on PR BeamLabEU#511. The lenient `:ok`
return on the missing-state branch of verify_oauth_state/2 dated from
an older flow that didn't always save state before redirect; that flow
is gone (every connect_oauth event now calls save_oauth_state/2 first
at integration_form.ex:227). A missing state at callback time now
implies either someone bypassed connect_oauth or the row was mutated
between authorize and callback — both are CSRF-relevant. Returns
{:error, :state_mismatch} on that branch with an updated comment
explaining why.

No tests exercised the lenient branch (verified via grep). The
{:error, :state_mismatch} return shape is already handled by the
caller's existing mismatch case.

FOLLOW_UP.md updated to reflect the closure (moves from Skipped to
Fixed Batch 1; NITPICK BeamLabEU#6 stays Open pending Max's decision).
ddon pushed a commit that referenced this pull request May 12, 2026
Code (PR #537 review items addressed):

- #1 BUG-MEDIUM: wrap `Annotations.delete/1` in `Repo.transaction/1` so
  comment-cascade + annotation-delete are atomic. Extracted into
  `delete_in_transaction/1` to keep the body flat (credo depth).
- #2 BUG-MEDIUM: sweep stale `resource_type = "annotation"` claims
  across 3 moduledocs (annotation.ex, v115.ex, etcher_adapter.ex). The
  implementation anchors comments to the file with
  `metadata.annotation_uuid` — docs now match reality.
- #5 BUG-LOW: narrow `delete_linked_comments` rescue to expected
  exception classes ([DBConnection.OwnershipError, Postgrex.Error,
  ArgumentError]) so logic bugs surface instead of being swallowed.
- #11 IMPROVEMENT-LOW: drop `normalize/1` — `Ecto.Changeset.cast/3`
  handles both atom- and string-keyed maps natively; the helper added
  silent failure-mode risk on typo'd keys.
- #12 IMPROVEMENT-LOW: drop in-repo `Code.ensure_loaded?(PhoenixKit.Annotations)`
  guard in MediaBrowser — Annotations is a core module, can't be
  missing.
- #19 NITPICK: drop `PhoenixKit.Modules.Storage` from
  AnnotationComposer's `@compile no_warn_undefined` (it's core, not
  optional — rename should fail loudly).
- #20 NITPICK: simplify `AnnotationComposerPosition.destroyed` guard.
- #21 NITPICK: fix misleading "Etcher's bootstrap uses `||` to preserve
  pre-existing slots" comment — PhoenixKit's JS owns the slots.
- #8 IMPROVEMENT-MEDIUM: gettext-wrap ~17 user-facing strings in
  AnnotationComposer (flash messages + heex literals + ARIA labels).

Credo / dialyzer:
- Alias `PhoenixKit.Annotations`, `PhoenixKit.Modules.Storage`,
  `PhoenixKit.Modules.Storage.EtcherAdapter`, `Storage.File` so the
  six "nested modules could be aliased" findings clear.
- Convert `first_attachment_thumbnail/1`'s single-clause `with` to
  `case` (credo readability).
- Add PhoenixKitComments-targeted entries to .dialyzer_ignore.exs for
  the annotations context + composer (optional sibling package,
  guarded at runtime).
- mix.lock picks up `etcher 0.1.0` via deps.get.

mix precommit: compile → format → credo --strict → dialyzer all clean.
Deferred to original author (Alex): #3 (race), #4 (upload rollback),
#6 (authz), #7 (schema-as-source), #9 (geometry validation), #10
(configurable component id), #13/#14 (locale-aware date + traverse_errors),
plus cosmetics #15-18, #22, #23. Disposition table in CLAUDE_REVIEW.md
updated separately.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants