diff --git a/backlog/tasks/task-105 - Listmonk-newsletter-integration-with-EncryptID-auth.md b/backlog/tasks/task-105 - Listmonk-newsletter-integration-with-EncryptID-auth.md new file mode 100644 index 0000000..3db1891 --- /dev/null +++ b/backlog/tasks/task-105 - Listmonk-newsletter-integration-with-EncryptID-auth.md @@ -0,0 +1,43 @@ +--- +id: TASK-105 +title: Listmonk newsletter integration with EncryptID auth +status: Done +assignee: [] +created_date: '2026-03-10 19:26' +labels: + - rsocials + - listmonk + - auth + - integration +dependencies: [] +references: + - modules/rsocials/mod.ts + - modules/rsocials/lib/listmonk-proxy.ts + - modules/rsocials/components/folk-newsletter-manager.ts +priority: medium +--- + +## Description + + +Replace the raw Listmonk iframe on the rSocials newsletter-list page with a custom newsletter manager UI backed by API proxy routes. Per-space Listmonk credentials are stored in module settings and injected server-side via Basic Auth. All API routes are gated by EncryptID auth + space role checks (moderator+ for reads, admin for campaign creation). + + +## Acceptance Criteria + +- [ ] #1 Password setting type added to module settings framework +- [ ] #2 Listmonk URL/user/password configurable per-space in rSocials settings +- [ ] #3 API proxy routes forward requests to Listmonk with Basic Auth +- [ ] #4 Newsletter status/lists/subscribers/campaigns endpoints gated by EncryptID + role +- [ ] #5 Campaign creation restricted to admin role +- [ ] #6 folk-newsletter-manager web component with Lists/Subscribers/Campaigns tabs +- [ ] #7 Not-configured state shows setup instructions +- [ ] #8 Vite build entry produces folk-newsletter-manager.js bundle +- [ ] #9 Iframe route replaced with native component route + + +## Final Summary + + +## Changes\n\n### Modified files\n- `shared/module.ts` — Added `'password'` to `ModuleSettingType` union\n- `shared/components/rstack-space-switcher.ts` — Added password input branch in settings renderer\n- `modules/rsocials/mod.ts` — Added Listmonk settings schema, auth helper, 6 newsletter API proxy routes, replaced iframe route with component\n- `vite.config.ts` — Added build entry for folk-newsletter-manager.js + CSS copy\n\n### New files\n- `modules/rsocials/lib/listmonk-proxy.ts` — getListmonkConfig() + listmonkFetch() helpers\n- `modules/rsocials/components/folk-newsletter-manager.ts` — Web component with 3 tabs, auth-gated UI\n- `modules/rsocials/components/newsletter.css` — Component styles\n\nCommit: c92ca0f +