• Joined on 2026-06-16
hermes created repository hermes/jobhunt-platform 2026-07-30 17:54:20 +00:00
hermes pushed to master at jocke/bilhej 2026-07-18 17:54:16 +00:00
f1fa539495 SEO: comprehensive search engine optimization for bilhej.se
hermes commented on pull request jocke/bilhej#30 2026-07-18 11:53:30 +00:00
fix(security): gate guest self-confirmed orders behind PENDING_REVIEW (#18)

💡 Test gap + readability nit. This branch is the load-bearing fix for #18 (re-fires the 'Behandlas' notification only when an admin vouches for the order), and it is not covered by AdminOrderWorkflowServiceTest — the notifyOrderFailed branch above is tested, this one isn't. Consider adding shouldNotifyProcessingWhenAdminAdvancesFromPendingReview.

hermes commented on pull request jocke/bilhej#30 2026-07-18 11:53:30 +00:00
fix(security): gate guest self-confirmed orders behind PENDING_REVIEW (#18)

💡 Frontend test gap. GuestOrderPage.spec.ts asserts labels for paid/sent/delivered/failed/cancelled but not for the new pending_review case (renders 'Betalning mottagen, under granskning'). The switch default keeps existing tests green, but this new label is uncovered — worth adding it('shows "Betalning mottagen, under granskning" for pending_review status').

hermes commented on pull request jocke/bilhej#30 2026-07-18 11:53:30 +00:00
fix(security): gate guest self-confirmed orders behind PENDING_REVIEW (#18)

Verdict: Approve with minor test-coverage suggestions.

hermes created pull request jocke/bilhej#30 2026-07-18 11:49:55 +00:00
fix(security): gate guest self-confirmed orders behind PENDING_REVIEW (#18)
hermes created branch fix/guest-payment-pending-review in jocke/bilhej 2026-07-18 11:49:39 +00:00
hermes pushed to fix/guest-payment-pending-review at jocke/bilhej 2026-07-18 11:49:39 +00:00
5825723420 fix(security): gate guest self-confirmed orders behind PENDING_REVIEW
hermes commented on pull request jocke/bilhej#29 2026-07-18 11:47:11 +00:00
feat(security): add per-IP rate limiting on guest-order endpoints (#19)

💡 The rate limiter is wired in but never actually tested. No test fires createLimit + 1 requests to verify a 429 is returned. For a security control, consider a dedicated GuestOrderRateLimitFilterTest with low limits that exercises the actual rejection path.

hermes commented on pull request jocke/bilhej#29 2026-07-18 11:47:11 +00:00
feat(security): add per-IP rate limiting on guest-order endpoints (#19)

🟡 Unbounded map growth. Stale IP keys (pruned deques) are never removed from the map. With X-Forwarded-For spoofing, an attacker can cause unbounded memory growth by sending unique header values. Consider a scheduled cleanup task or a bounded cache (Caffeine maximumSize).

hermes commented on pull request jocke/bilhej#29 2026-07-18 11:47:11 +00:00
feat(security): add per-IP rate limiting on guest-order endpoints (#19)

💡 Add Retry-After header. response.setHeader("Retry-After", "60") is trivial and helps well-behaved clients back off. RFC 6585 recommends it for 429 responses.

hermes commented on pull request jocke/bilhej#29 2026-07-18 11:47:11 +00:00
feat(security): add per-IP rate limiting on guest-order endpoints (#19)

💡 Use the existing ErrorResponse DTO. The codebase has ErrorResponse(String message) and SecurityConfig uses objectMapper.writeValueAsString(new ErrorResponse(message)) for all error responses. Inject ObjectMapper and follow the same pattern to avoid hardcoded JSON and keep responses consistent.

hermes commented on pull request jocke/bilhej#29 2026-07-18 11:47:11 +00:00
feat(security): add per-IP rate limiting on guest-order endpoints (#19)

🟡 X-Forwarded-For is trusted unconditionally. If the app is directly reachable (no stripping reverse proxy), an attacker can rotate this header per request to bypass rate limiting entirely. Consider a config flag like app.rate-limit.trust-forwarded-headers (default false).

hermes commented on pull request jocke/bilhej#29 2026-07-18 11:47:11 +00:00
feat(security): add per-IP rate limiting on guest-order endpoints (#19)

Advisory review: ship with follow-up tracked for Phase 0 hardening.

hermes created pull request jocke/bilhej#29 2026-07-18 11:45:28 +00:00
feat(security): add per-IP rate limiting on guest-order endpoints (#19)
hermes created branch fix/guest-order-rate-limiting in jocke/bilhej 2026-07-18 11:45:18 +00:00
hermes pushed to fix/guest-order-rate-limiting at jocke/bilhej 2026-07-18 11:45:18 +00:00
68cb20edba feat(security): add per-IP rate limiting on guest-order endpoints
hermes commented on pull request jocke/bilhej#28 2026-07-18 11:43:34 +00:00
fix(guest): move guest token from URL query to sessionStorage (#21)

💡 Suggestion: The backward-compat fallback (`sessionStorage.getItem('guestToken')

hermes commented on pull request jocke/bilhej#28 2026-07-18 11:43:34 +00:00
fix(guest): move guest token from URL query to sessionStorage (#21)

💡 Suggestion: <a href="#" @click.prevent> degrades screen-reader semantics (a link to # / nowhere). A <button> styled to match, or keeping <RouterLink> with a custom navigation guard, would preserve accessibility without changing the visual result.

hermes commented on pull request jocke/bilhej#28 2026-07-18 11:43:34 +00:00
fix(guest): move guest token from URL query to sessionStorage (#21)

💡 Suggestion: Consider sessionStorage.removeItem('guestToken') right after payGuestOrder(token) resolves, before the router.push. The token has been consumed at this point and lingering in sessionStorage only extends the credential's lifetime unnecessarily.