61 lines
1.3 KiB
JavaScript
61 lines
1.3 KiB
JavaScript
const express = require("express");
|
|
const router = express.Router();
|
|
const controller = require("../controllers/households.controller");
|
|
const auth = require("../middleware/auth");
|
|
const {
|
|
householdAccess,
|
|
requireHouseholdAdmin,
|
|
} = require("../middleware/household");
|
|
|
|
// Public routes (authenticated only)
|
|
router.get("/", auth, controller.getUserHouseholds);
|
|
router.post("/", auth, controller.createHousehold);
|
|
router.post("/join/:inviteCode", auth, controller.joinHousehold);
|
|
|
|
// Household-scoped routes (member access required)
|
|
router.get("/:householdId", auth, householdAccess, controller.getHousehold);
|
|
router.patch(
|
|
"/:householdId",
|
|
auth,
|
|
householdAccess,
|
|
requireHouseholdAdmin,
|
|
controller.updateHousehold
|
|
);
|
|
router.delete(
|
|
"/:householdId",
|
|
auth,
|
|
householdAccess,
|
|
requireHouseholdAdmin,
|
|
controller.deleteHousehold
|
|
);
|
|
router.post(
|
|
"/:householdId/invite/refresh",
|
|
auth,
|
|
householdAccess,
|
|
requireHouseholdAdmin,
|
|
controller.refreshInviteCode
|
|
);
|
|
|
|
// Member management routes
|
|
router.get(
|
|
"/:householdId/members",
|
|
auth,
|
|
householdAccess,
|
|
controller.getMembers
|
|
);
|
|
router.patch(
|
|
"/:householdId/members/:userId/role",
|
|
auth,
|
|
householdAccess,
|
|
requireHouseholdAdmin,
|
|
controller.updateMemberRole
|
|
);
|
|
router.delete(
|
|
"/:householdId/members/:userId",
|
|
auth,
|
|
householdAccess,
|
|
controller.removeMember
|
|
);
|
|
|
|
module.exports = router;
|