Any campaign player can update/delete the campaign and manage its players #32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
High (authorization)
Mutation endpoints only check `isCampaignMember` (GM or any player) instead of requiring GM/owner:
```ts
const hasAccess = await isCampaignMember(user.userId, id, user.isGM); // true for plain players too
await campaignService.deleteCampaign(id);
```
Suggested fix
Add `isCampaignGM(userId, campaignId)` (campaigns.gm_id === userId OR global GM) and use it for update/delete/player-management on campaigns and for ship delete; keep member-check for reads.
✅ Fixed (commit pending deploy):
isCampaignGM(userId, campaignId, isGM)incampaignService.ts— true only for global GMs orcampaigns.gm_idownercampaignController: updateCampaign / deleteCampaign / addPlayer / removePlayer now use it; getCampaign keeps member-level accessshipController: addedcanModifyShip()(owner, global GM, or campaign GM) — updateShip/deleteShip switched to it; reads unchangedPlayers remain read-only members. Will close after build + verification.