All checks were successful
Build & Deploy Costco Grocery List / build (push) Successful in 1m10s
Build & Deploy Costco Grocery List / verify-images (push) Successful in 3s
Build & Deploy Costco Grocery List / deploy (push) Successful in 11s
Build & Deploy Costco Grocery List / notify (push) Successful in 1s
73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
const router = require("express").Router();
|
|
const auth = require("../middleware/auth");
|
|
const optionalAuth = require("../middleware/optional-auth");
|
|
const { createRateLimit } = require("../middleware/rate-limit");
|
|
const controller = require("../controllers/group-invites.controller");
|
|
|
|
const inviteSummaryIpRateLimit = createRateLimit({
|
|
keyPrefix: "invite:summary:ip",
|
|
windowMs: 15 * 60 * 1000,
|
|
max: 120,
|
|
message: "Too many invite link summary requests. Please try again later.",
|
|
});
|
|
|
|
const inviteAcceptIpRateLimit = createRateLimit({
|
|
keyPrefix: "invite:accept:ip",
|
|
windowMs: 15 * 60 * 1000,
|
|
max: 60,
|
|
message: "Too many invite acceptance attempts. Please try again later.",
|
|
});
|
|
|
|
const inviteWriteUserRateLimit = createRateLimit({
|
|
keyPrefix: "invite:write:user",
|
|
windowMs: 15 * 60 * 1000,
|
|
max: 60,
|
|
message: "Too many write operations. Please try again later.",
|
|
keyFn: (req) => (req.user?.id ? `user:${req.user.id}` : "anon"),
|
|
});
|
|
|
|
router.get("/groups/invites", auth, controller.listInviteLinks);
|
|
router.post("/groups/invites", auth, inviteWriteUserRateLimit, controller.createInviteLink);
|
|
router.post(
|
|
"/groups/invites/revoke",
|
|
auth,
|
|
inviteWriteUserRateLimit,
|
|
controller.revokeInviteLink
|
|
);
|
|
router.post(
|
|
"/groups/invites/revive",
|
|
auth,
|
|
inviteWriteUserRateLimit,
|
|
controller.reviveInviteLink
|
|
);
|
|
router.post(
|
|
"/groups/invites/delete",
|
|
auth,
|
|
inviteWriteUserRateLimit,
|
|
controller.deleteInviteLink
|
|
);
|
|
|
|
router.get("/groups/join-policy", auth, controller.getJoinPolicy);
|
|
router.post(
|
|
"/groups/join-policy",
|
|
auth,
|
|
inviteWriteUserRateLimit,
|
|
controller.setJoinPolicy
|
|
);
|
|
|
|
router.get(
|
|
"/invite-links/:token",
|
|
inviteSummaryIpRateLimit,
|
|
optionalAuth,
|
|
controller.getInviteLinkSummary
|
|
);
|
|
router.post(
|
|
"/invite-links/:token",
|
|
auth,
|
|
inviteAcceptIpRateLimit,
|
|
inviteWriteUserRateLimit,
|
|
controller.acceptInviteLink
|
|
);
|
|
|
|
module.exports = router;
|