Commit graph

616 commits

Author SHA1 Message Date
Kailash Nadh
17998fbff5 Refactor user auth models and permission checks.
- Move user models from `/models` to `internal/auth`.
- Move and refactor various permission check functions into `User.()`
- Refactor awkward `get, manage bool` function args into `Get|Manage` bitflags.
2025-04-05 00:19:27 +05:30
Kailash Nadh
a271bf54d5 Introduce per-campaign filter permissions. Closes #2325.
This patch introduces new `campaigns:get_all` and `campaigns:manage_all`
permissions which alter the behaviour of the the old `campaigns:get` and
`campaigns:manage` permissions. This is a subtle breaking behavioural change.

Old:

- `campaigns:get` -> View all campaigns irrespective of a user's list
  permissions.
- `campaigns:manage` -> Manage all campaigns irrespective of a user's list
  permissions.

New:

- `campaigns:get_all` -> View all campaigns irrespective of a user's list
  permissions.
- `campaigns:manage_all` -> Manage all campaigns irrespective of a user's list
  permissions.
- `campaigns:get` -> View only the campaigns that have at least one list to
  which which a user has get or manage access.
- `campaigns:manage` -> Manage only the campaigns that have at list one list
  to which a user has get or manage access.

In addition, this patch refactors and cleans up certain permission related
logic and functions.
2025-03-31 16:39:42 +05:30
Kailash Nadh
a5f8b28cb1 Fix inconsistent behaviour in campaign scheduling on the UI.
- Fix status/button state management issues when `Send at` was toggled
  under various scenarios.
- Allow paused campaigns to be edited and turned into scheduled campaigns.
- Add Cypress UI tests for unscheduling.
2025-03-31 13:00:51 +05:30
Kailash Nadh
fbc27ae4b2 Refactor UI time diff display function to prefix '-' on past dates. 2025-03-31 12:56:43 +05:30
Kailash Nadh
b18c7ad0fb Fix incorrect loading spinner on the Lists UI. Closes #1822. 2025-03-30 10:53:54 +05:30
dependabot[bot]
d1c964da4f
Bump vite from 5.4.12 to 5.4.15 in /frontend (#2379)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.12 to 5.4.15.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.15/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.15/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-30 00:18:23 +05:30
Kailash Nadh
b8f50eafa3 Add support for domain allowlists in addition to blocklists. Closes #2230.
This patch introduces a new `Domain allowlist` input in Settings -> Privacy UI
as a new tab alongside domain `Domain blocklist`. If any domains are entered
here, then only subscriptions/imports/additions of e-mails from those particular
domains are accepted. blocklist is mutually exclusive with allowlist when there
are values in the allowlist.
2025-03-29 23:31:34 +05:30
Kailash Nadh
0be7a79dac Fix broken log rendering on importer UI. 2025-03-29 13:10:46 +05:30
dependabot[bot]
bc5b817554
Bump axios from 1.7.9 to 1.8.2 in /frontend (#2347)
Bumps [axios](https://github.com/axios/axios) from 1.7.9 to 1.8.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.9...v1.8.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 22:24:32 +05:30
dependabot[bot]
8dc5bc295c
Bump prismjs from 1.29.0 to 1.30.0 in /frontend (#2345)
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.29.0 to 1.30.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.29.0...v1.30.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 10:53:59 +05:30
Kailash Nadh
2defef3857 Refactor SMTP name to always have email- prefix for consistency. 2025-02-14 18:38:47 +05:30
lcd1232
d055cc5311
Add support for selecting SMTP per campaign (#2290)
This patch adds a new optional `name` field to SMTP server config on the UI.
When a name is given to an SMTP server, it's initialized as a standalone messenger
which shows up as a sub-group item under the main "email" messenger
on the campaign page.

Co-authored-by: Kailash Nadh <kailash@nadh.in>
2025-02-11 22:41:45 +05:30
Sávio Ribeiro
2f5ab4c619
Display filename and milliseconds in timestamp on the logs admin UI (#2280) 2025-02-06 11:14:24 +05:30
dependabot[bot]
ad162c259a
Bump vite from 5.4.11 to 5.4.12 in /frontend (#2268)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.11 to 5.4.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.12/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 22:05:56 +05:30
Kunall Banerjee
d0321baf4f
fix: typo in callout under the settings page (#2283) 2025-02-04 09:21:08 +05:30
Kailash Nadh
ff19a34f30 Fix bounce meta JSON overflowing in the table on admin UI. Closes #1797. 2025-01-20 00:17:33 +05:30
Kailash Nadh
3d383cd537 Make paused campaigns editable. 2025-01-19 16:40:25 +05:30
Kailash Nadh
61c6b7e15a Add explicit Unschedule button on campaign UI. 2025-01-19 16:27:39 +05:30
Kailash Nadh
fd31ac6f58 Remove redundant send_later param in campaign POST/PUT. 2025-01-19 16:06:39 +05:30
Kailash Nadh
e2aa9c5350 Make media image background checkered to show transparency. Closes #2080. 2025-01-13 12:32:46 +05:30
Shaun Warman
a5e56c3446
fix: forwardemail bounce processing invalid signature issue (#2250) 2025-01-10 10:40:21 +05:30
Kailash Nadh
50b296da08 Remove GitHub from OIDC shortcuts as it doesn't support OIDC. Closes #2235. 2025-01-05 21:00:17 +05:30
Kailash Nadh
7bfbd6a856 Add all to subscriber deletion by query which broke with query validation. Ref: #2122. 2024-12-04 22:07:54 +05:30
Kailash Nadh
a1291114d9 Replace broken indent JS lib with js-beautify. Closes #2182. 2024-12-04 21:52:37 +05:30
Kailash Nadh
1c33d32b9e Remove redundant event from bounces UI. Closes #1850. 2024-12-04 21:16:48 +05:30
centja1
cb99d600aa
Fix loading of messengers from serverConfig on line 629 (#2187) 2024-12-03 13:40:31 +05:30
dependabot[bot]
882c49f1dd
Bump cross-spawn from 7.0.3 to 7.0.6 in /frontend (#2169)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 10:14:02 +05:30
Kailash Nadh
0a27de16c6 Replace type field in user creation UI with radio-button for better usability. 2024-11-13 00:03:40 +05:30
Shaun Warman
cb8b54fd00
Add ForwardEmail (provider) bounce integration (#2016)
* Add ForwardEmail one-click SMTP form option.
* Add bounce webhook integration.

---------

Co-authored-by: Kailash Nadh <kailash@nadh.in>
2024-11-10 21:45:07 +05:30
Bowrna
03925821fb
Add % on campaign analytics pie chart hover (#2124)
Co-authored-by: Kailash Nadh <kailash@nadh.in>
2024-11-05 21:32:36 +05:30
pbence
5abf004655
fix dummy detection for OIDC client secret (#2116) 2024-10-29 10:36:17 +05:30
Kailash Nadh
5b3d6e2be0 Add first-time Super Admin setup UI on fresh install.
- Don't setup username+password from config file during fresh install.
- If `LISTMONK_ADMIN_USER` and `LISTMONK_ADMIN_PASSWORD` env vars are
  set during `--install`, use them.
- Otherwise, render new username+password creation UI on `/admin/login`.
- Add Cypress tests.
2024-10-26 19:47:01 +05:30
Kailash Nadh
1e4b3a26f2 Separate get individual user and get all users queries. 2024-10-26 17:03:02 +05:30
Kailash Nadh
87db0d596b Fix Cypress admin form test to support <codeflask> rendered HTML. 2024-10-26 13:27:45 +05:30
Kailash Nadh
9760d19b4d Fix button focus/active styles on the UI. 2024-10-23 12:21:15 +05:30
Kailash Nadh
69de02ab6d Restyle and simplify subscriber form UI with tabs. 2024-10-23 00:06:53 +05:30
Kailash Nadh
b5382b81a1 Add user UI frontend tests. 2024-10-22 23:11:15 +05:30
Kailash Nadh
b2866b1f12 Apply minor style changes and improvements to modals. 2024-10-22 23:10:16 +05:30
Kailash Nadh
74e77bd6e0 Add names to user form fields for testing. 2024-10-22 22:50:09 +05:30
Kailash Nadh
3fdf6fe31e Add individual list permission checks on admin UI. 2024-10-22 21:37:19 +05:30
Kailash Nadh
13222b5eb9 Fix random timing related Cypress test failures (huh). 2024-10-20 23:50:06 +05:30
Kailash Nadh
29aa977e6a Expand search input width on subscribers UI for smaller screens. 2024-10-20 23:50:06 +05:30
Kailash Nadh
6258fd5cee Increase settings UI poll interval to reduce broken requests. 2024-10-20 23:50:06 +05:30
Kailash Nadh
0f785b7173 Fix Cypress tests to work with new auth and other UI changes. 2024-10-20 23:50:06 +05:30
Kailash Nadh
71f9e861e4 Show OIDC URL warning only when enabled on the UI. 2024-10-20 23:50:06 +05:30
Kailash Nadh
03744e0dde Fix broken settings references on forms page 2024-10-20 23:50:06 +05:30
Kailash Nadh
cc71899e86 Add non-prod ODIC URL warning on admin settings UI. 2024-10-13 18:53:39 +05:30
Kailash Nadh
af06d2e462 Upgrade prismjs. 2024-10-13 18:16:43 +05:30
Kailash Nadh
3671a5254e Update profile UI with new user data structures. 2024-10-13 17:03:58 +05:30
Kailash Nadh
ae2a386193 Add support for "list roles".
This commit splits roles into two, user roles and list roles, both of which
are attached separately to a user.

List roles are collection of lists each with read|write permissions, while
user roles now have all permissions except for per-list ones.

This allows for easier management of roles, eliminating the need to clone and
create new roles just to adjust specific list permissions.
2024-10-13 17:03:58 +05:30