Skip to content

chore(actions)(deps): bump actions/upload-artifact from 4 to 7 - #260

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/upload-artifact-7
Open

chore(actions)(deps): bump actions/upload-artifact from 4 to 7#260
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/upload-artifact-7

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 5, 2026

Copy link
Copy Markdown

Bumps actions/upload-artifact from 4 to 7.

Release notes

Sourced from actions/upload-artifact's releases.

v7.0.0

v7 What's new

Direct Uploads

Adds support for uploading single files directly (unzipped). Callers can set the new archive parameter to false to skip zipping the file during upload. Right now, we only support single files. The action will fail if the glob passed resolves to multiple files. The name parameter is also ignored with this setting. Instead, the name of the artifact will be the name of the uploaded file.

ESM

To support new versions of the @actions/* packages, we've upgraded the package to ESM.

What's Changed

New Contributors

Full Changelog: actions/upload-artifact@v6...v7.0.0

v6.0.0

v6 - What's new

[!IMPORTANT] actions/upload-artifact@v6 now runs on Node.js 24 (runs.using: node24) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.

Node.js 24

This release updates the runtime to Node.js 24. v5 had preliminary support for Node.js 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.

What's Changed

Full Changelog: actions/upload-artifact@v5.0.0...v6.0.0

v5.0.0

What's Changed

BREAKING CHANGE: this update supports Node v24.x. This is not a breaking change per-se but we're treating it as such.

... (truncated)

Commits
  • 043fb46 Merge pull request #797 from actions/yacaovsnc/update-dependency
  • 634250c Include changes in typespec/ts-http-runtime 0.3.5
  • e454baa Readme: bump all the example versions to v7 (#796)
  • 74fad66 Update the readme with direct upload details (#795)
  • bbbca2d Support direct file uploads (#764)
  • 589182c Upgrade the module to ESM and bump dependencies (#762)
  • 47309c9 Merge pull request #754 from actions/Link-/add-proxy-integration-tests
  • 02a8460 Add proxy integration test
  • b7c566a Merge pull request #745 from actions/upload-artifact-v6-release
  • e516bc8 docs: correct description of Node.js 24 support in README
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v4...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Aug 5, 2026

Copy link
Copy Markdown
Author

Labels

The following labels could not be found: automated, dependencies, github-actions. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

Dev1822 pushed a commit that referenced this pull request Aug 16, 2026
…tion PIN (closes #1010)

Several controllers fetched a tenant-owned document by the raw `_id` from the
URL or request body and acted on it without checking that it belongs to the
caller's company. Where that happened, the ObjectId was the only thing
separating one customer's data from another's.

    grievance.controller.js:97      Grievance.findById(req.params.id)
    appraisal.controller.js:73,100  AppraisalReview.findById(req.params.id)
    appraisal.controller.js:81,109  AppraisalGoal.findByIdAndUpdate(rating.goalId)
    shiftRoster.controller.js:155   ShiftSwapRequest.findById(req.params.id)
    shiftRoster.controller.js:161   ShiftRoster.findById(request.originalRosterId)
    flashcard.controller.js:187     FlashcardDeck.findById(id)

All now go through `tenantFilter(req, { _id })`, which puts the tenant in the
query — so the row is unfetchable rather than fetched and then discarded — and
throws a 403 rather than degrading to `{}` when a request has no tenant.

The appraisal goal updates are the ones to look at first. Those ids come from
the request body, not from the review, so they were as untrusted as the `:id`
— and that path *writes*. Unscoped, a caller could rewrite the achievement
figures on any goal in the database, in any company, without ever touching a
review they were entitled to. They are now scoped to the tenant, the cycle and
the employee.

The checks that did exist were worse than absent
------------------------------------------------
`taxProof.verifyProof` and `employee.toggleActive` both had a tenant check:

    if (proof.tenantId.toString() !== req.tenantId)

`auth.middleware` sets `req.tenantId` from `user.tenantId`, a mongoose
ObjectId. A string primitive is never strictly equal to an object, so that
expression is *always true* and both endpoints answered 404/403 to everybody,
the owning tenant included. HR could not approve a tax proof, and nobody could
deactivate an employee — which is what removes them from payroll (#260).

They failed closed by luck. Written as `if (a.toString() === b) { allow }` the
identical mistake fails open, so `sameTenant()` is added to `tenantScope.js`
for the few places that genuinely cannot scope the query — a document reached
indirectly inside a transaction — and coerces both sides with String().

POSH decryption
---------------
`decryptCase` fetched `iccMember` and never read it, so a caller who was not on
the committee at all decrypted anyway; and `pin` was read from the body and
never compared to anything, the comparison living in a comment reading "in a
real app, compare against decryptionPinHash using bcrypt". The second factor
the endpoint advertises did not exist.

It is enforced now, with bcrypt against `decryptionPinHash`, and a refused
attempt emits `POSH_CASE_DECRYPT_DENIED` — an audit trail that records only
successes cannot show somebody guessing at PINs against one case.

`requireICC` on the route was already correct and is untouched. It proves the
caller is on their own tenant's committee; what it cannot do is constrain which
case id they then name.

Deliberately not included
-------------------------
The `createdBy` ownership checks in `updateEmployee`/`deleteEmployee` are left
as they are. They are not tenant checks and are arguably too strict for a
shared HR workspace, but relaxing them widens who may modify employee records
— a permission-model decision, not a security fix, and it should not ride
along in this PR. #1010 records the reasoning.

Also fixed while scoping `approveSwap`: `originalRoster` was dereferenced on
the next line without a null check, so a swap request pointing at a deleted
roster row crashed with a TypeError inside an open transaction.

Tests: 21 new cross-tenant cases asserting the tenant is in the query and that
a foreign id 404s without writing, plus 9 for `sameTenant`. Three existing
suites had mocks pinned to `findById`; those move to `findOne`. One test
simulated a cross-tenant employee by mutating the returned document, which only
worked because the old code compared after fetching — rewritten so the scoped
query returns nothing, which is what actually happens now.

A handful of unused imports (`mongoose`, `logger`, `CaseNote`, `deleteDeck`)
are removed from the touched files. lint-staged only lints staged files, so
they had never been reported; they block the commit hook now.

Full backend suite: no new failures.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants