Epic #705. The backend and service layer already ship GET /api/blog/posts/my ([Authorize], returns the caller's posts in all statuses, paginated) and BlogService.getMyPosts(page, size) — but no route or component uses it. Authors have no way to find their drafts, see why a post is pendingReview/rejected (rejection reason is in the DTO), or manage their content.
Shape: a /blog/mine authenticated route (or a "My posts" tab on /blog), grouped by status, with per-post actions (edit → the author-edit ticket; delete → already shipped in #420). This is where blog management should live — the public list stays a reading surface.
Free win: the status filter currently on the public list header (which mostly makes sense only for one's own posts) can move here.
Epic #705. The backend and service layer already ship `GET /api/blog/posts/my` (`[Authorize]`, returns the caller's posts in **all** statuses, paginated) and `BlogService.getMyPosts(page, size)` — but **no route or component uses it**. Authors have no way to find their drafts, see why a post is pendingReview/rejected (rejection reason is in the DTO), or manage their content.
**Shape:** a `/blog/mine` authenticated route (or a "My posts" tab on `/blog`), grouped by status, with per-post actions (edit → the author-edit ticket; delete → already shipped in #420). This is where blog management should live — the public list stays a reading surface.
Free win: the status filter currently on the public list header (which mostly makes sense only for one's own posts) can move here.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Epic #705. The backend and service layer already ship
GET /api/blog/posts/my([Authorize], returns the caller's posts in all statuses, paginated) andBlogService.getMyPosts(page, size)— but no route or component uses it. Authors have no way to find their drafts, see why a post is pendingReview/rejected (rejection reason is in the DTO), or manage their content.Shape: a
/blog/mineauthenticated route (or a "My posts" tab on/blog), grouped by status, with per-post actions (edit → the author-edit ticket; delete → already shipped in #420). This is where blog management should live — the public list stays a reading surface.Free win: the status filter currently on the public list header (which mostly makes sense only for one's own posts) can move here.