Commit graph

245 commits

Author SHA1 Message Date
Kailash Nadh 55bd98630a Remove admin user/password from sample config generation. 2024-09-16 23:00:59 +05:30
Kailash Nadh 316d574d80 Add support for setting admin user/password via env on --install. 2024-09-16 23:00:59 +05:30
Kailash Nadh e4a7d307b3 Fix update check looping on failed HTTP requests. 2024-09-16 23:00:59 +05:30
Kailash Nadh 862d4240c5 Add legacy TOML user+password to API auth on init with warning. 2024-09-16 23:00:59 +05:30
Kailash Nadh af63c1628e Add API user authentication to auth module with caching of creds on user CRUD. 2024-09-16 23:00:59 +05:30
Kailash Nadh 6236c42c12 User legacy (TOML) admin credentials as API creds for backwards compatibility. 2024-09-16 23:00:59 +05:30
Kailash Nadh a94d7cc8c4 Add OIDC auth hooks (init, callback, session) and finish OIDC support. 2024-09-16 23:00:59 +05:30
Kailash Nadh 874e12ed10 Refactor update check.
- Switch away from GitHub releases API to a statically hosted custom
  JSON message to include richer data.
- Instead of checking 24 hours post-boot, check 15 mins later post boot
  and then every 24 hours.
- Add provision for messages to display on the admin dashboard to
  communicate important / urgent announcements.
  (Fingers crossed, this never has to be used!)
2024-09-16 23:00:59 +05:30
Kailash Nadh 01c64de7a8 Add warning on admin UI for legacy creds in the TOML file. 2024-09-16 23:00:59 +05:30
Kailash Nadh f632dfbce1 Add per-list permission management to roles. 2024-09-16 23:00:58 +05:30
Kailash Nadh 728877dbe6 Add new fields to /api/config to remove /settings dependency in camapign UI. 2024-09-16 23:00:58 +05:30
Kailash Nadh 217590ea0e Refactor 'super' user type to a pre-defined super admin role. 2024-09-16 23:00:58 +05:30
Kailash Nadh f57ac201ff Add granular permissions and role management to backend and admin UI. 2024-09-16 23:00:58 +05:30
Kailash Nadh 2bb4e19b74 Style and add OIDC logo to the login page. 2024-09-16 23:00:58 +05:30
Kailash Nadh 13ac249afb Upgrade simplesessions to v3. 2024-09-16 23:00:58 +05:30
Kailash Nadh 938a5c5077 Add user profile APIs and update UI. 2024-09-16 23:00:58 +05:30
Kailash Nadh 31c5358d0e Refactor handler groups and add mising auth features like logout. 2024-09-16 23:00:58 +05:30
Kailash Nadh a4e8c1daea Add public login page and auth middleware and handlers. 2024-09-16 23:00:58 +05:30
Kailash Nadh c2bd15a641 Add api type user. 2024-09-16 23:00:58 +05:30
Kailash Nadh 8b2f385708 Add API token authentication. 2024-09-16 23:00:58 +05:30
Kailash Nadh 5832ea5384 Add user/password login handler. 2024-09-16 23:00:58 +05:30
Kailash Nadh 98213ebf24 Add create/add/delete user management UI and database schema. 2024-09-16 23:00:58 +05:30
Kailash Nadh 06264ca13f Refactor OIDC middleware handler logic. 2024-09-16 23:00:57 +05:30
Kailash Nadh 011d89144d Add a settings UI for OIDC. 2024-09-16 23:00:57 +05:30
Marc Bärtschi 67a33b40eb Implement OIDC
This is a simple OIDC implementation. It's very basic and just logs the user in. Access control needs to be done on the IDP side.
2024-09-16 23:00:57 +05:30
Vinoth Kumar d7fe13c4b9
Fix typo and formatting (#2028) 2024-08-30 13:24:45 +05:30
Abhinav Raut 679457cb12
Ensure unique upload filenames by adding a suffix (#1963)
Fixes #1957.

Co-authored-by: Abhinav Raut <abhinav.raut@zerodha.com>
2024-08-08 15:42:29 +05:30
Bowrna 1e6e97e750
Add validation for filename with non-ASCII chars in media upload (#1973) 2024-08-05 20:08:33 +05:30
Keshav Gupta c334d2e6e1
fix #1950:Export of unsubscribed users exports all users (#1965)
Co-authored-by: keshav <keshav.gupta@jarvis.consulting>
2024-08-02 00:05:33 +05:30
Kailash Nadh c2e7c713ca Increase campaign subject char limit. Closes #1909. 2024-07-17 19:38:11 +05:30
largemouth c3f4379b17
chore: fix function name in comment (#1836)
Signed-off-by: largemouth <largemouth@aliyun.com>
2024-04-22 18:43:23 +05:30
Jonas Sulzer 1d32d4c368
👌 IMPROVE: make RootURL available in email templates (#1812)
Signed-off-by: Jonas Sulzer <jonas@violoncello.ch>
2024-04-04 22:57:52 +05:30
Kailash Nadh 124af1ee29 Make static e-mail template subjects scriptable. Closes #1727.
This commit introduces optional, custom `<title>` tags that can be
added to `static/email-templates/*.html` so as to make the subjectlines
fully scriptable for system e-mails and notifications.

The tag must look like this.

```
<title data-i18n>Stuff {{ .Subscriber.Name }} here!</title>
```
2024-03-25 15:49:40 +05:30
Muhammed Kadir Tan 2afac2469e
fix: check errors.Is instead of strings.Contains for http: Server closed error (#1779) 2024-03-12 11:06:35 +05:30
tgolang 860009b866
chore: remove repetitive words (#1778)
Signed-off-by: tgolang <seekseat@aliyun.com>
2024-03-11 13:33:50 +05:30
Shivam Mishra d7b55cd147
fix: trim config before use (#1756)
* feat: ensure hosts are trimmed before saving

* feat: trim host before saving bounces
2024-02-26 15:12:50 +05:30
Kailash Nadh d70236c379 Fix incorrect error message in tx template preview. 2024-01-28 11:04:47 +05:30
Kailash Nadh 6cb9982aac Add .IndividualTracking to public templates. Closes #1663. 2024-01-27 22:38:26 +05:30
Kailash Nadh f14df890a4 Update Go deps. 2024-01-27 20:55:50 +05:30
Kailash Nadh f0a3cbd563 Remove redundant SMTP test error toast on the admin UI. 2024-01-27 20:41:07 +05:30
Kailash Nadh 5a3664aee2 Add support for caching slow queries on large databases.
- Add materialized views for list -> subscriber counts, dashboard chart,
  and dashboard aggregate stats that slow down significantly on large
  databases (with millions or tens of millions of subscribers). These
  slow queries involve full table scan COUNTS().

- Add a toggle to enable caching slow results in Settings -> Performance.

- Add support for setting a cron string that crons and periodically
  refreshes aggregated stats in materialized views.

Closes #1019.
2024-01-27 15:51:12 +05:30
Kailash Nadh 2f487de9f7 Log subscriber id/uuid on failed opt-in message push. Closes #1333. 2024-01-10 22:10:27 +05:30
Kailash Nadh 86771512ce Merge branch 'slug' 2024-01-09 23:34:25 +05:30
Kailash Nadh 0d319ad9fd Add 'slug' (permalink) support for campaign archives. Closes #1394. 2024-01-09 23:34:08 +05:30
mpilnan 78caa35e42
fix: add copying campaign object before sending test message (#1659) 2024-01-09 23:22:01 +05:30
Kailash Nadh fa2c840ddb Rename v2.6.0 migration to v3.0.0, the next major release. 2024-01-06 11:56:08 +05:30
Kailash Nadh 772476c0df Add accurate sent count, last sent subscriber tracking on campaigns.
- Sent count is no longer the batch size fetched from the DB but is
  the actual count of messages sent.
- Pausing and resuming now accurately tracks the last subscriber that
  was processed and resumes from there.
- Fix multiple concurrent campaigns blocking.

Closes #1616. Closes #905. Closes #1496. Closes #1250. Closes #1010.
2024-01-02 14:57:04 +05:30
Kailash Nadh 414c5c0c99 Refactor the core concurrent campaign manager logic.
This commit fully refactors the core campaign manager logic.
It applies a whole new approach to campaign state and lifecycle management.

- Create a new "pipeline" abstraction on top of campaign
  for state management.
- Account for every message processed and end campaigns
  based on the actual count.
- Discard in-queue messages in the pipeline of a paused
  or cancelled campaign.
2024-01-02 14:57:04 +05:30
Kailash Nadh 0c9dc07479 Add a ?v=hash cache breaker (that changes on restart) to static assets. 2023-12-31 22:20:37 +05:30
Kailash Nadh 2feb1b0fb8 Make the name part in from e-mails optional. Closes #1602. 2023-12-30 21:48:12 +05:30