@7365admin1/core 3.64.5 → 3.65.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,51 @@
1
1
  # @iservice365/core
2
2
 
3
+ ## 3.65.0
4
+
5
+ ### Minor Changes
6
+
7
+ - c4dc50b: Module gate, server step: the deny-list endpoint, the impact preview, and
8
+ acknowledge-before-save. Everything ships inert and fails open.
9
+
10
+ - `useMemberController().getModulesByUserIdType` (for
11
+ `GET /api/members/user/:id/app/:type/modules?org=&site=`) answers
12
+ `{ denied: string[] }` for the membership `getByUserIdType` answers with. It
13
+ is the same self-or-staff guard. It answers `[]` for no list, an empty list,
14
+ a resident, Seven365 staff, a site of another organisation, any lookup
15
+ error, and `MODULE_LIST_GATE=off`. `ALWAYS_ALLOWED` is never denied.
16
+ - A saved list is enforced only once it has been saved through the
17
+ acknowledged preview. The marker is the save's own append-only console-audit
18
+ row (`gateListHash`). A list saved earlier, or changed any other way, behaves
19
+ as absent. No field is added to any organisation or site.
20
+ - `useOrgController().previewOrgModules` and
21
+ `useSiteController().previewSiteModules` (for
22
+ `POST /api/organizations/:id/modules/preview` and
23
+ `POST /api/sites/:id/modules/preview`) return who would lose what. They are
24
+ read-only and never go through `GET /api/roles`.
25
+ - `updateModules` and `updateSiteModules` accept `acknowledgeImpact`. A save
26
+ that takes a module away from somebody is refused with 409 until it is
27
+ acknowledged. An empty list restores everything and never needs it. Site
28
+ saves are now recorded in the console audit (`site.modules-changed`).
29
+ - `filterByAccess` (Q7) runs at the top of the notification `send()`. It is
30
+ `NOTIFY_ACCESS_FILTER=log` by default: it logs who would be filtered and
31
+ still sends to everyone. It is exported so API-core's own sender can call it.
32
+ - `moduleDeniedForCaller` (Q3) is the server-refusal primitive. It is
33
+ `MODULE_GATE_MODE=log` by default and never refuses. `enforce` refuses only
34
+ the keys in `MODULE_GATE_ENFORCE_KEYS`. Work stamped (`at`) before the
35
+ acknowledged save is accepted.
36
+ - `MODULE_LIST_GATE` (code default `on`) switches all of the above off at
37
+ once.
38
+
39
+ ### Patch Changes
40
+
41
+ - c993ee4: POST /api/members/direct refuses (400) a role that belongs to a different organisation, unless the caller already holds that role in the organisation being joined.
42
+ - 74f228f: POST /api/members/direct: adding yourself now needs a role you may give yourself - Seven365 staff, the organisation's owner, a role you already hold there, or the role your own invitation offers. Enrolling somebody else is unchanged.
43
+ - ae42c1c: GET /api/organizations/id/:id returns the whole organisation record only to a caller with a relationship to it (member, invitee, owner, Seven365 staff, an active resident of one of its sites, or an engaged service provider). Everyone else gets the name-only record the anonymous lookup already returns. It never answers 401/403.
44
+ - 7363b8d: Site Settings saves are no longer refused because the client has one resident-app
45
+ switch turned off. A save is refused only when it would turn ON a resident-app
46
+ switch that the site has stored as off and the client has switched off.
47
+ - 9d1a0f0: PATCH /api/users/field/:id (and v2): on your own account you may change only name, contact, nric, dateOfBirth, profile and gender, and defaultOrg to an organisation you reach. status, email and plateNumber are staff-only.
48
+
3
49
  ## 3.64.5
4
50
 
5
51
  ### Patch Changes