Commit Graph

21 Commits

Author SHA1 Message Date
ee59efff48 case 4713 - customer contacts hold and act with customer roles only
Users who may edit contacts but not users (Service, Sales, Accounting) could
give a contact login any role, BizAdmin and OpsAdmin included, and roles are
what every check uses (security review F28). Now:
- saving a Customer or HeadOffice user with any role other than Customer or
  CustomerRestricted is refused (error on Roles);
- UserBiz.EffectiveRoles masks a contact's roles to the customer roles wherever
  they are applied: the token middleware, download-key routes, and the
  notification subscriber check, so contacts that already have staff roles
  stored act without them.

Checked: Service creating a contact with BizAdmin refused, with Customer works;
a contact with OpsAdmin stored in the database gets 403 downloading a log file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 15:59:35 -07:00
87fdc12dce case 4712 - notification subscriptions are the caller's own; object events only to subscribers who may read the record type
Step 6 of 4712 (security review F17). A subscription kept the UserId sent by
the client, and object events (created, modified, deleted, age) were matched by
record type only, so a user could get record names of types it may not read,
delivered to any address. Now a subscription is created for the caller and an
update cannot move it to another user, unless the caller administers users; and
object events skip subscribers without read rights on the record type.

Checked: Service's subscription asked for SuperUser is saved as its own; with
"customer created" subscriptions, Inventory (no read on customers) got 0 events,
Service 1. Full suite: 109 passed, 5 skipped, the same 2 known failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 14:39:40 -07:00
628364bcaa 2022-09-10 22:01:48 +00:00
66c059beeb 2022-03-09 15:13:37 +00:00
6b988f1732 2022-03-08 19:13:58 +00:00
b827ec1285 2021-08-16 23:18:37 +00:00
d631cd541e 2021-08-03 00:17:45 +00:00
5ecf1a2620 2021-08-02 18:53:30 +00:00
8821046b48 2021-08-02 17:40:26 +00:00
deebb5dc25 2021-06-09 19:53:24 +00:00
d9e1766210 2021-06-09 18:43:46 +00:00
b734548fdb 2021-06-07 22:18:22 +00:00
fd29edcf9e 2021-06-07 21:29:26 +00:00
f9ef637daa 2021-05-14 15:56:29 +00:00
c3f475aadf 2021-01-01 16:40:25 +00:00
3aa070e557 2020-12-29 23:21:27 +00:00
c5daf3340b 2020-12-29 23:20:39 +00:00
cbab5f21f4 2020-12-24 23:04:32 +00:00
135171d141 2020-12-22 22:23:40 +00:00
1e189ee74f 2020-12-22 21:02:07 +00:00
3c5585b2ec 2020-12-22 20:33:48 +00:00