fsylvain
70460e4170
feat: update button (download, verify, stage)
2026-10-01 18:13:45 +02:00
fsylvain
834493a4f5
feat: signed releases, release feed, notification (read-only)
2026-10-01 15:01:53 +02:00
fsylvain
ff0854f331
fix: deleted image wrongfully caching
2026-10-01 05:27:25 +02:00
fsylvain
b3793d5dbb
feat: media picker and image removal
2026-10-01 05:04:58 +02:00
fsylvain
0d99544579
feat(API): media library
2026-09-30 18:35:28 +02:00
fsylvain
153fd8719a
feat: invite management API: DELETE /v1/user/invite/:id (204, cancels a pending invite) and POST /v1/user/invite/:id/renew (200, new code, expires_at = now+3d, created_at = now, resends the invitation email, old link dead)
2026-09-30 01:36:43 +02:00
fsylvain
461e93e3b5
feat: add Role (owner|admin) to the user domain, persistence model and mapper
2026-09-30 00:58:58 +02:00
fsylvain
162fea4afb
feat: settings page, sidebar and drawer destination "Settings" (icon settings, after Integration), route /settings (verified), showing only the running build's Version
2026-09-30 00:19:29 +02:00
fsylvain
da36c78bc0
refac: hardening pass with multiple overhauls
2026-09-29 10:55:23 +02:00
fsylvain
55525c06d6
feat: invitation accept screen and api
2026-09-29 09:21:53 +02:00
fsylvain
acdef18b37
feat(API): user invitations and emails
2026-09-29 07:15:17 +02:00
fsylvain
7aae704d0a
feat(API): optional display name on users
2026-09-29 06:52:58 +02:00
fsylvain
b29d0ed045
feat: editor image removal QOLs
2026-09-29 02:44:31 +02:00
fsylvain
f6d0d01092
feat: articles list screen
2026-09-27 17:12:23 +02:00
fsylvain
30a4df47b1
feat: new emails design
2026-09-26 05:41:34 +02:00
fsylvain
4e41d60142
feat: register T1 (pending, verify)
2026-09-26 04:56:48 +02:00
fsylvain
2a64991916
refac: GET /v1/auth/registration
2026-09-25 15:54:42 +02:00
fsylvain
61828783a1
refac: GET /static/uploadedImages/{filename}
2026-09-25 15:40:21 +02:00
fsylvain
8d17a12e92
refac: GET /v1/auth/me
2026-09-25 15:17:39 +02:00
fsylvain
0e050c36ff
fix: rate limiting X-Real-IP from the real peer
2026-09-25 06:49:55 +02:00
fsylvain
9b47685002
refac: split the auth handler into registration and login, account verification, and password reset handlers, each with its own dependencies
2026-09-25 06:14:53 +02:00
fsylvain
3282b0580c
fix: remove the unused user use cases, fix the specs that no longer match the code, include api/middleware and api/pkg/claims in mutation testing, log failures that password reset requests currently ignore, and reject user_id claims that don't fit a user id
2026-09-25 05:58:37 +02:00
fsylvain
cbb403011a
fix: login and password reset requests are rate-limited per client (not in the README; there is currently no brute-force protection on the public auth routes)
2026-09-25 05:33:02 +02:00
fsylvain
f3ec3d2fa2
fix: resetting the password or cancelling a registration ends existing sessions: a token issued before the change is refused
2026-09-25 05:03:34 +02:00
fsylvain
81c4b62175
fix: reading a single article follows the same rule as the list: anyone can read an online article, a verified user can also read an offline one, and an unknown or hidden id returns 404
2026-09-24 16:32:40 +02:00
fsylvain
2ee28203ab
fix: API responses never include a user's password, verification code or reset code hashes, or their expiry dates; verifying an account returns only the public user fields
2026-09-24 15:39:50 +02:00
fsylvain
aa865af2e9
refac: reamaining auth surface rewrite, T0
2026-09-24 05:11:49 +02:00
fsylvain
6d510d2805
refac: register only open while no verified acc exists, enforced by a use case rather than handler & sends verification email whose link uses the conf pub URL whose code expires after 2h
2026-09-24 03:36:37 +02:00
fsylvain
6e9e108033
refac: several unverified users can exist at once: an empty reset or verification code is stored as no value so it doesn't break the unique constraint, and deleting a user removes the row so the same username and email can register again
2026-09-24 01:59:24 +02:00
fsylvain
0b4e614ec9
refac: runtime settings are read once at startup and passed in through the composition root; no handler, router or repository reads environment variables
2026-09-24 01:30:00 +02:00
fsylvain
e474f03d91
refac: authenticated user can upload an image to an existing article and receives its public location; an unknown article returns 404 and a disallowed type returns 400
2026-09-24 00:33:26 +02:00
fsylvain
5992c8598b
refac: allowed image types and the size limit are a domain rule checked by the use case, not by the persistence layer
2026-09-24 00:03:29 +02:00
fsylvain
8a8a24434a
refac: deleting an article also deletes its images, and deleting a missing article returns 404
2026-09-23 23:42:18 +02:00
fsylvain
c16fdbd26d
refac: authenticated user can edit an article's body; an unknown id returns 404
2026-09-23 23:24:03 +02:00
fsylvain
8822bdddd0
refac: authenticated user can publish and unpublish an article; an unknown id returns 404
2026-09-23 22:54:44 +02:00
fsylvain
790d4e6da6
refac: authenticated user can list all articles, including offline ones, while the public list only shows online ones
2026-09-23 22:36:41 +02:00
fsylvain
6a2ca07b66
refac: repository updates, image attachment and deletes report the domain not-found error for an unknown id, the same for articles, users and images, and the test fakes stop returning GORM errors
2026-09-23 22:09:06 +02:00
fsylvain
4278d96882
refac: article title rules are the same in the API request and the domain; an invalid title returns 400 instead of 500
2026-09-23 20:04:09 +02:00
fsylvain
ff8cd5f0ec
refac: password and code hashing & checking go through a domain hasher interface used by the use cases instead of bcrypt in the user repository and the auth handler
2026-09-23 19:29:20 +02:00
fsylvain
8460a078e3
refac: missing user or article is reported with a domain not-found error instead of a raw GORM error, and the API answers 404 for it
2026-09-23 18:55:05 +02:00
fsylvain
7c57173497
feat: characterized the existing use cases as a baseline; every repo fake behaves like the real ones and can be told to fail, every use case is covered; gremlins runs clean on useCases
2026-09-23 18:21:46 +02:00
Floriansylvain
9c80cb9885
feat: unit testing mocked repos / domain
2025-12-22 02:49:57 +01:00
Florian Sylvain
b470bfcc67
refac: renamed 'post' -> 'article'
2025-11-17 19:27:48 +01:00
Florian Sylvain
a77a5ad314
refac: fixed, better, smarter, correct dependency injection
2025-03-29 00:51:01 +01:00
Florian Sylvain
4d6054e22b
refac: separated api content into sub-packages & renamed usecases
2025-03-13 19:43:12 +01:00
Florian Sylvain
7d2795a9e0
feat: post deletion
2024-05-19 17:12:48 +02:00
Florian Sylvain
29fce9a241
brand: GohCMS -> GoCMS, project-wide
2024-05-15 19:34:38 +02:00
Florian Sylvain
00a4e464ff
clean: refactor auth & login page auth
2024-05-13 11:11:58 +02:00
Florian Sylvain
e113c79a6d
fix: all remaining "article" replaced by "post"
...
All instances of the term "article" were replaced with "post" in variable names, type names, function names, etc. This was primarily to ensure consistent naming and reduce confusion going forward. The term "post" was chosen as it's a more commonly used term for the involved operations in the context of content management and blogging platforms. All tests were also updated to reflect these changes.
2023-09-06 03:38:52 +02:00
Florian Sylvain
554fdc1989
clean: Article to Post in domain and related use cases
...
Renamed the 'Article' domain to 'Post' in order to better reflect the purpose and utility of the object. The change involved renaming all related use cases, classes, and other references from 'Article' to 'Post' and updating all functions and data types to work with Posts instead of Articles.
2023-09-06 01:56:27 +02:00