ghostguild-org/server
Jennie Robinson Faber 0981596ea2 feat(admin): PATCH /api/admin/members/:id/slack-status
Endpoint that flips a member's slackInvited flag manually after the
admin has actually sent the Slack invitation through Slack's UI. No
Slack API call is made from this app.

- Body validated via Zod literal-true schema (no undo path for the
  pilot — admins correct mistakes in the database if needed).
- Idempotent: re-marking an already-invited member is a no-op,
  preserving the original slackInvitedAt and not duplicating the
  activity log entry.
- Activity log: slack_invited_manually, actor = admin from
  requireAdmin, subject = the target member.
2026-04-29 12:23:07 +01:00
..
api feat(admin): PATCH /api/admin/members/:id/slack-status 2026-04-29 12:23:07 +01:00
config feat(contributions): rewrite server config as preset-based helpers 2026-04-19 18:12:44 +01:00
emails feat(payments): add upsertPaymentFromHelcim helper with idempotent insert 2026-04-20 13:15:38 +01:00
middleware refactor(rate-limit): delegate auth limiting to handlers, add dev bypass 2026-04-27 19:18:34 +01:00
migrations refactor(community): rename Community Connections → Community Ecology 2026-04-09 09:07:15 +01:00
models refactor(member): replace slackInviteStatus with slackInvitedAt 2026-04-29 12:11:25 +01:00
plugins refactor(env): unify required-env validation through useRuntimeConfig 2026-04-26 14:47:02 +01:00
routes refactor(env): unify required-env validation through useRuntimeConfig 2026-04-26 14:47:02 +01:00
utils feat(admin): PATCH /api/admin/members/:id/slack-status 2026-04-29 12:23:07 +01:00