nordabiz/blueprints
Maciej Pienczyn dcbf8b5db6
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
feat(email): one-click unsubscribe w mailach powiadomień (RFC 8058)
Każdy e-mail powiadomieniowy ma teraz:
(1) link w stopce "Wyłącz ten typ powiadomień jednym kliknięciem"
(2) nagłówki List-Unsubscribe + List-Unsubscribe-Post dla klientów
    pocztowych (Gmail/Apple Mail pokażą natywny przycisk Unsubscribe)

Implementacja:
- utils/unsubscribe_tokens.py: signed token (itsdangerous, SECRET_KEY)
  niosący user_id + notification_type, bez wygasania
- blueprints/unsubscribe: GET /unsubscribe?t=TOKEN → strona potwierdzenia,
  POST /unsubscribe → faktyczne wyłączenie flagi notify_email_<type>
- email_service.send_email() dostał parametr notification_type. Jeśli
  przekazany razem z user_id, footer + headery są doklejane
- Aktualizowane wywołania: message_notification (messages),
  classified_question/answer (B2B Q&A), classified_expiry (skrypt cron)

Prefetch safety: GET pokazuje stronę z przyciskiem "Tak, wyłącz",
wyłączenie następuje po POST. RFC 8058 One-Click (POST bez formularza
z Content-Type application/x-www-form-urlencoded + body
"List-Unsubscribe=One-Click") obsługuje klientów pocztowych.

D.2/D.3 dorzucą kolejne notification_type (forum, broadcast, events).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 17:56:36 +02:00
..
admin feat: port fee analysis (parent/child brands, stawka) to admin fees view 2026-04-10 16:40:42 +02:00
api fix: auto-clear KRS people (zarząd/wspólnicy) when CEIDG data is fetched 2026-04-08 18:02:49 +02:00
audit feat: capture and display Google account email for OAuth connections 2026-03-11 07:32:43 +01:00
auth feat(email): per-typ preferencje powiadomień e-mail (D.1 dopełnienie) 2026-04-14 17:50:41 +02:00
benefits claude-mem plugin v10.3.3 2026-02-23 10:33:26 +01:00
board feat: fee analysis with parent/child brands on skladki page 2026-04-10 15:15:10 +02:00
chat fix: handle lazy loading error for company.category in chat routes 2026-03-28 05:54:49 +01:00
community feat(email): one-click unsubscribe w mailach powiadomień (RFC 8058) 2026-04-14 17:56:36 +02:00
education security(permissions): restrict guest access to members-only areas 2026-03-19 16:23:56 +01:00
forum fix: prevent duplicate forum topics from rapid double-submit 2026-04-13 13:29:40 +02:00
it_audit feat(security): Restrict audit access to single designated user 2026-02-09 12:31:10 +01:00
membership feat(membership): record workflow history for all status changes 2026-03-30 13:39:55 +02:00
messages feat(email): one-click unsubscribe w mailach powiadomień (RFC 8058) 2026-04-14 17:56:36 +02:00
public docs(releases): v1.67.0 — zabezpieczenie przed duplikatami ogłoszeń 2026-04-14 16:48:19 +02:00
push feat(push): Web Push (VAPID + pywebpush) dla prywatnych wiadomości 2026-04-14 16:56:49 +02:00
reports feat(reports): add membership structure breakdown to fees report 2026-03-31 11:48:57 +02:00
unsubscribe feat(email): one-click unsubscribe w mailach powiadomień (RFC 8058) 2026-04-14 17:56:36 +02:00
__init__.py feat(email): one-click unsubscribe w mailach powiadomień (RFC 8058) 2026-04-14 17:56:36 +02:00
CLAUDE.md chore: Clean up CLAUDE.md files and remove old downloaded files 2026-02-08 18:02:35 +01:00
pej_constants.py fix(pej): use SessionLocal instead of db_session 2026-03-16 18:30:24 +01:00