@7365admin1/core 3.139.1 → 3.140.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @iservice365/core
2
2
 
3
+ ## 3.140.0
4
+
5
+ ### Minor Changes
6
+
7
+ - ff48585: A person's memberships list (`GET /members/users/:id`) leaves out taken-away (inactive / deleted) memberships by default; `?include=removed` returns the history. One shared entitlement test (`isEntitledMembership`, `entitledMemberships`) now also drives the site/org membership lookup, notification categories and role permissions.
8
+
3
9
  ## 3.139.1
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1095,7 +1095,9 @@ declare function useMemberService(): {
1095
1095
  updateSiteById: (id: string, siteId: string, siteName: string) => Promise<{
1096
1096
  message: string;
1097
1097
  }>;
1098
- getAllByUser: (user: string) => Promise<{
1098
+ getAllByUser: (user: string, { includeRemoved }?: {
1099
+ includeRemoved?: boolean | undefined;
1100
+ }) => Promise<{
1099
1101
  items: TMember[];
1100
1102
  total: number;
1101
1103
  }>;
package/dist/index.js CHANGED
@@ -4374,7 +4374,10 @@ function sameAppType(a, b) {
4374
4374
  // src/utils/member-lookup.util.ts
4375
4375
  var idOf = (v) => v == null ? "" : String(v?._id ?? v).toLowerCase();
4376
4376
  function isLiveMembership(m) {
4377
- return m.status !== "deleted" && !m.deletedAt;
4377
+ return !TAKEN_AWAY_MEMBER_STATUSES.includes(String(m?.status ?? "")) && !m?.deletedAt;
4378
+ }
4379
+ function entitledMemberships(rows) {
4380
+ return (Array.isArray(rows) ? rows : []).filter(isLiveMembership);
4378
4381
  }
4379
4382
  function pickSiteMembership(rows, type, site, org = "") {
4380
4383
  site = site.toLowerCase();
@@ -23154,7 +23157,8 @@ async function getUserPermissions(params) {
23154
23157
  if (!roleId || !import_mongodb51.ObjectId.isValid(roleId)) {
23155
23158
  const memberQuery = {
23156
23159
  user: new import_mongodb51.ObjectId(user),
23157
- status: { $ne: "deleted" }
23160
+ // A taken-away (inactive) row grants no permissions either.
23161
+ status: { $nin: TAKEN_AWAY_MEMBER_STATUSES }
23158
23162
  };
23159
23163
  if (org && import_mongodb51.ObjectId.isValid(org)) {
23160
23164
  memberQuery.org = new import_mongodb51.ObjectId(org);
@@ -29442,9 +29446,10 @@ function useMemberService() {
29442
29446
  throw error;
29443
29447
  }
29444
29448
  }
29445
- async function getAllByUser(user) {
29449
+ async function getAllByUser(user, { includeRemoved = false } = {}) {
29446
29450
  try {
29447
- const members = await _getAllByUserId(user);
29451
+ const all = await _getAllByUserId(user);
29452
+ const members = includeRemoved ? all : entitledMemberships(all);
29448
29453
  return {
29449
29454
  items: members,
29450
29455
  total: members.length
@@ -30005,7 +30010,9 @@ function useMemberController() {
30005
30010
  return;
30006
30011
  }
30007
30012
  try {
30008
- const data = await _getAllByUser(userId);
30013
+ const data = await _getAllByUser(userId, {
30014
+ includeRemoved: req.query.include === "removed"
30015
+ });
30009
30016
  const whole = await requireSelfOrPlatformStaff(req, userId, {
30010
30017
  resource: "members",
30011
30018
  action: "view-members"
@@ -30046,7 +30053,7 @@ function useMemberController() {
30046
30053
  org
30047
30054
  ) : null;
30048
30055
  const inOrg = org && !atSite ? await _getByUserIdTypeOrg(user, type, org).catch(() => null) : null;
30049
- const liveInOrg = inOrg && inOrg.status !== "deleted" && !inOrg.deletedAt ? inOrg : null;
30056
+ const liveInOrg = inOrg && isLiveMembership(inOrg) ? inOrg : null;
30050
30057
  const data = atSite ?? liveInOrg ?? await _getByUserIdType(user, type);
30051
30058
  res.json(data);
30052
30059
  return;
@@ -108075,7 +108082,7 @@ function useNotificationPreferenceService() {
108075
108082
  const db2 = import_node_server_utils330.useAtlas.getDb();
108076
108083
  if (!db2)
108077
108084
  return [];
108078
- const members = await db2.collection("members").find({ user: new import_mongodb200.ObjectId(userId), status: { $ne: "deleted" } }).toArray();
108085
+ const members = await db2.collection("members").find({ user: new import_mongodb200.ObjectId(userId), status: { $nin: TAKEN_AWAY_MEMBER_STATUSES } }).toArray();
108079
108086
  if (!members.length)
108080
108087
  return [];
108081
108088
  const isResident = members.some((m) => m.type === "resident");