Bump coverlet.collector from 8.0.1 to 10.0.0#614
Open
dependabot[bot] wants to merge 2 commits intomainfrom
Open
Bump coverlet.collector from 8.0.1 to 10.0.0#614dependabot[bot] wants to merge 2 commits intomainfrom
dependabot[bot] wants to merge 2 commits intomainfrom
Conversation
--- updated-dependencies: - dependency-name: coverlet.collector dependency-version: 10.0.0 dependency-type: direct:production update-type: version-update:semver-major - dependency-name: coverlet.collector dependency-version: 10.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
barach6662001-bit
added a commit
that referenced
this pull request
Apr 25, 2026
…640) * docs(roadmap): correct currency conversion v2 PR number (#632 → #634) and note switcher is re-enabled * chore(roadmap): split PR #614 into core + #614a (system) + #614b (catalogs) + #614c (broadcast) PR #614 scope as a single ticket was too broad (3 admin pages + impersonation engine + audit log + global users + 4 sub-features each non-trivial). Split into a sequenced set so each is reviewable: - #614 (in progress): impersonation engine + /admin/users + /admin/audit-log + 6 integration tests + red banner + rate limit + forbidden-action filter - #614a: /admin/system read-only health dashboard + audit-log CSV export - #614b: /admin/catalogs (global reference data CRUD) - #614c: /admin/broadcast (depends on PR #617 notifications fixes) TZ.md status marker updated to reflect the split. * feat(impersonation): backend engine, JWT extension, forbidden-action filter, /admin/users + audit-log filters - ICurrentUserService gains IsImpersonating + ImpersonatedByUserId - JwtTokenService.GenerateImpersonationToken issues a 60min token with claims is_super_admin=false, impersonated_by_user_id, original_tenant_id, impersonation_reason - IImpersonationService + ImpersonationService: * StartAsync: validates target (not self, not super-admin, active), enforces 3/24h rate limit by querying SuperAdminAuditLog, audits 'impersonate.start', inserts in-app Notification (severity warning, body in Ukrainian with Kyiv timestamp + reason), best-effort email * EndAsync: requires impersonated_by_user_id claim, audits 'impersonate.end', re-issues a fresh super-admin token for the original admin * LogForbiddenAttemptAsync: writes 'impersonate.forbidden_attempt' audit row - ForbiddenDuringImpersonationAttribute (filter): on 403 also writes the forbidden-attempt audit row with the attempted route. Applied to: AuthController.ChangePassword, ApiKeysController create + revoke, UsersController.UpdateUserRole + ResetUserPassword - ImpersonationController: POST /api/admin/impersonate (super-admin only), POST /api/admin/impersonate/end (callable from impersonation token) - AdminController: GET /api/admin/users (global search across tenants with tenant name), GET /api/admin/audit-log gains action / adminUserId / fromUtc / toUtc / tenantId filters * feat(impersonation): add partial composite index for rate-limit query CREATE INDEX ix_superadminauditlogs_impersonation_ratelimit ON SuperAdminAuditLogs (AdminUserId, TargetId, OccurredAt DESC) WHERE Action = 'impersonate.start' Backs the 3/24h-per-(admin,target) rate-limit lookup in ImpersonationService.StartAsync. Partial filter keeps the index small as the audit log grows across all super-admin actions. * test(impersonation): 6 integration scenarios + extend TestAuthHandler with X-Test-ImpersonatedBy - (1) non-super-admin caller -> 403 - (2) super-admin without MFA -> 403 + X-Mfa-Required - (3) happy path -> 200 + 60min token + audit row + Notification row (Ukrainian title 'Сесія імперсонації', warning severity, body contains the reason) - (4) reason < 10 chars -> 400 - (5) rate limit: 4th impersonation in 24h on same target -> 429 (3 prior 'impersonate.start' rows pre-seeded directly into SuperAdminAuditLogs to keep the test deterministic and fast) - (6) forbidden action under impersonation token (POST /api/auth/change-password) -> 403 AND writes a separate 'impersonate.forbidden_attempt' audit row TestAuthHandler now also accepts X-Test-ImpersonatedBy for forbidden-action coverage, matching the JWT contract (impersonation tokens always carry is_super_admin=false). All 441 tests pass (315 unit + 126 integration). * feat(frontend): super-admin impersonation banner + /admin/users + /admin/audit-log - authStore: add impersonation slice (target + original snapshots, expires) - api/admin: startImpersonation / endImpersonation / listAdminUsers / listAdminAuditLog - ImpersonationBanner: red, non-closable, z-index 9999, full viewport, countdown, exit restores original token - /admin/users: global users table with reason modal (>=10 chars) + impersonate - /admin/audit-log: filtered audit log with expandable payload - i18n keys (uk + en) for users page, audit log, banner, modal * fix(impersonation): default-impl IsImpersonating/ImpersonatedByUserId on ICurrentUserService Avoids breaking 5 unit-test stubs (FakeCurrentUserService + per-test TestCurrentUserService) without forcing them to update.
barach6662001-bit
added a commit
that referenced
this pull request
Apr 27, 2026
…a/b/c (#641) - Move PR #614 core (impersonation + /admin/users + /admin/audit-log) to Completed - Promote PR #615 (Warehouse: grain receipt + inventory) to In progress - Create new 'Deferred (post-core, before Phase B)' section for #614a/b/c - Move #614a (/admin/system), #614b (/admin/catalogs), #614c (/admin/broadcast) to Deferred - Reorder Upcoming to start with PR #616 (Notifications center) - Update TZ.md: mark ПУНКТ 9 + 10 as [IN PROGRESS in PR #615]
…ionTests/multi-1634f3bb90
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated coverlet.collector from 8.0.1 to 10.0.0.
Release notes
Sourced from coverlet.collector's releases.
10.0.0
Improvements
--coverlet-file-prefixoption for unique report files #1869Fixed
Maintenance
Diff between 8.0.1 and 10.0.0
Commits viewable in compare view.
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 rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill 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 versionwill 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 dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)