Skip to content

enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups#20266

Merged
rissson merged 1 commit intogoauthentik:mainfrom
atereshkin:lifecycle-duplicate-reviews-fix
Feb 13, 2026
Merged

enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups#20266
rissson merged 1 commit intogoauthentik:mainfrom
atereshkin:lifecycle-duplicate-reviews-fix

Conversation

@atereshkin
Copy link
Contributor

Details

This fixes the bug with multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups (which is one of the issues mentioned in #20265). That was due to a missing distinct when querying the DB.


Checklist

  • Local tests pass (ak test authentik/)
  • The code has been formatted (make lint-fix)

@atereshkin atereshkin requested a review from a team as a code owner February 12, 2026 19:55
@netlify
Copy link

netlify bot commented Feb 12, 2026

Deploy Preview for authentik-docs ready!

Name Link
🔨 Latest commit b0e65df
🔍 Latest deploy log https://app.netlify.com/projects/authentik-docs/deploys/698e30366e97a200070244f0
😎 Deploy Preview https://deploy-preview-20266--authentik-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@codecov
Copy link

codecov bot commented Feb 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.27%. Comparing base (20c2a33) to head (b0e65df).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #20266      +/-   ##
==========================================
- Coverage   93.31%   93.27%   -0.04%     
==========================================
  Files         981      981              
  Lines       55058    55058              
==========================================
- Hits        51378    51358      -20     
- Misses       3680     3700      +20     
Flag Coverage Δ
conformance 37.48% <ø> (+<0.01%) ⬆️
e2e 43.34% <ø> (+0.04%) ⬆️
integration 22.42% <ø> (-0.05%) ⬇️
unit 91.51% <ø> (+<0.01%) ⬆️
unit-migrate 91.55% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@rissson rissson changed the title enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups (#20265) enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups Feb 13, 2026
@rissson rissson merged commit 3348ab3 into goauthentik:main Feb 13, 2026
143 of 147 checks passed
@rissson rissson moved this to Done in authentik Core Feb 13, 2026
@rissson rissson added this to the Release 2026.2.0: Required milestone Feb 13, 2026
authentik-automation bot pushed a commit that referenced this pull request Feb 13, 2026
…en the user is a member of multiple reviewer groups (#20266)
@authentik-automation
Copy link
Contributor

🍒 Cherry-pick to version-2026.2 created: #20278

rissson pushed a commit that referenced this pull request Feb 13, 2026
…en the user is a member of multiple reviewer groups (cherry-pick #20266 to version-2026.2) (#20278)

Co-authored-by: Alexander Tereshkin <96586+atereshkin@users.noreply.github.com>
fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups (#20266)
kensternberg-authentik added a commit that referenced this pull request Feb 13, 2026
…p-v3

* main: (105 commits)
  website/docs: Custom CSS (#19991)
  core: bump goauthentik.io/api/v3 to 3.2026.5.0-rc1-1770992049 (#20285)
  stage/invitation: Send invite via email UI (#19823)
  root: remove unused `django-cte` (#20090)
  core: bump ruff from 0.15.0 to 0.15.1 (#20273)
  core, web: update translations (#20271)
  ci: bump docker/build-push-action from 6.19.1 to 6.19.2 (#20274)
  enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups (#20266)
  ci: fix binary outpost build on release (#20248)
  web: add pretty names for lifecycle review events in event logs (#20264)
  web: fix italic formatting in lifecycle rule help text (#20263)
  website/docs: 2025.8.6 release notes (#20243)
  website/docs: 2025.12.4 release notes (#20226)
  website/docs: 2025.10.4 release notes (#20242)
  security: CVE-2026-25748 (#20240)
  security: CVE-2026-25922 (#20241)
  security: CVE-2026-25227 (#20239)
  ci: fix release testing (#20207)
  core: Apply CSpell corrections. (#20191)
  core: bump goauthentik.io/api/v3 to 3.2026.5.0-rc1-1770842608 (#20213)
  ...
kensternberg-authentik added a commit that referenced this pull request Feb 13, 2026
…web/flow/tablize-token-component-relationship

* web/flow/tablize-token-component-relationship-v3: (75 commits)
  Removed the cache; it's extra code for no benefit whatsoever; the table is constructed ONCE at start-up, there's never going to be a cache hit.  The FlowExecutorStageFactory produces StageMappings (StageMapping[]), which is itself a warehouse of singular server-component -> client-component relationships, fetching the client from the bundle as needed.  The StageMapping only does the fetch once per instance, so (for example) a password failure will reinstantiate a PasswordStage, but it will not fetch it a second time.
  Tidy.
  website/docs: Custom CSS (#19991)
  core: bump goauthentik.io/api/v3 to 3.2026.5.0-rc1-1770992049 (#20285)
  stage/invitation: Send invite via email UI (#19823)
  root: remove unused `django-cte` (#20090)
  core: bump ruff from 0.15.0 to 0.15.1 (#20273)
  core, web: update translations (#20271)
  ci: bump docker/build-push-action from 6.19.1 to 6.19.2 (#20274)
  enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups (#20266)
  ci: fix binary outpost build on release (#20248)
  web: add pretty names for lifecycle review events in event logs (#20264)
  web: fix italic formatting in lifecycle rule help text (#20263)
  website/docs: 2025.8.6 release notes (#20243)
  website/docs: 2025.12.4 release notes (#20226)
  website/docs: 2025.10.4 release notes (#20242)
  security: CVE-2026-25748 (#20240)
  security: CVE-2026-25922 (#20241)
  security: CVE-2026-25227 (#20239)
  ci: fix release testing (#20207)
  ...
kensternberg-authentik added a commit that referenced this pull request Feb 13, 2026
…/flow/20030-one-true-api

* web/flow/tablize-token-component-relationship: (76 commits)
  Removed comments about the cache.  Added comments about where to find the FlowExecutor stage table. Moved the import of WebAuthnAuthenticticatorRegisterState from FlowExecutor.ts to FlowExecutorStages.ts; both files are bundled together, so this is a no-op functionally, but it's easier to confirm that StageEntries without import expressions (STageModuleCallbacks) have their stages bundled (pre-imported) if the import statement is in the same file.
  Removed the cache; it's extra code for no benefit whatsoever; the table is constructed ONCE at start-up, there's never going to be a cache hit.  The FlowExecutorStageFactory produces StageMappings (StageMapping[]), which is itself a warehouse of singular server-component -> client-component relationships, fetching the client from the bundle as needed.  The StageMapping only does the fetch once per instance, so (for example) a password failure will reinstantiate a PasswordStage, but it will not fetch it a second time.
  Tidy.
  website/docs: Custom CSS (#19991)
  core: bump goauthentik.io/api/v3 to 3.2026.5.0-rc1-1770992049 (#20285)
  stage/invitation: Send invite via email UI (#19823)
  root: remove unused `django-cte` (#20090)
  core: bump ruff from 0.15.0 to 0.15.1 (#20273)
  core, web: update translations (#20271)
  ci: bump docker/build-push-action from 6.19.1 to 6.19.2 (#20274)
  enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups (#20266)
  ci: fix binary outpost build on release (#20248)
  web: add pretty names for lifecycle review events in event logs (#20264)
  web: fix italic formatting in lifecycle rule help text (#20263)
  website/docs: 2025.8.6 release notes (#20243)
  website/docs: 2025.12.4 release notes (#20226)
  website/docs: 2025.10.4 release notes (#20242)
  security: CVE-2026-25748 (#20240)
  security: CVE-2026-25922 (#20241)
  security: CVE-2026-25227 (#20239)
  ...
kensternberg-authentik added a commit that referenced this pull request Feb 13, 2026
…t-flow-inspector

* web/flow/20030-one-true-api:
  Removed comments about the cache.  Added comments about where to find the FlowExecutor stage table. Moved the import of WebAuthnAuthenticticatorRegisterState from FlowExecutor.ts to FlowExecutorStages.ts; both files are bundled together, so this is a no-op functionally, but it's easier to confirm that StageEntries without import expressions (STageModuleCallbacks) have their stages bundled (pre-imported) if the import statement is in the same file.
  Removed the cache; it's extra code for no benefit whatsoever; the table is constructed ONCE at start-up, there's never going to be a cache hit.  The FlowExecutorStageFactory produces StageMappings (StageMapping[]), which is itself a warehouse of singular server-component -> client-component relationships, fetching the client from the bundle as needed.  The StageMapping only does the fetch once per instance, so (for example) a password failure will reinstantiate a PasswordStage, but it will not fetch it a second time.
  Tidy.
  website/docs: Custom CSS (#19991)
  core: bump goauthentik.io/api/v3 to 3.2026.5.0-rc1-1770992049 (#20285)
  stage/invitation: Send invite via email UI (#19823)
  root: remove unused `django-cte` (#20090)
  core: bump ruff from 0.15.0 to 0.15.1 (#20273)
  core, web: update translations (#20271)
  ci: bump docker/build-push-action from 6.19.1 to 6.19.2 (#20274)
  enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups (#20266)
  ci: fix binary outpost build on release (#20248)
  web: add pretty names for lifecycle review events in event logs (#20264)
  web: fix italic formatting in lifecycle rule help text (#20263)
  website/docs: 2025.8.6 release notes (#20243)
  web/flow: optimize table for type safety
  web: Flesh out module driven tag names.
kensternberg-authentik added a commit that referenced this pull request Feb 14, 2026
…261-tidy-identification-stage

* web/flow/20063-extract-flow-inspector:
  Move the inspector into its own folder.
  Since the check for `this.can(CapabilitiesEnum.CanDebug))` has been moved into the FlowInspectorButton, FlowExecutor no longer needs the capabilities check at all.
  Of COURSE prettier had opinions!
  Removed comments about the cache.  Added comments about where to find the FlowExecutor stage table. Moved the import of WebAuthnAuthenticticatorRegisterState from FlowExecutor.ts to FlowExecutorStages.ts; both files are bundled together, so this is a no-op functionally, but it's easier to confirm that StageEntries without import expressions (STageModuleCallbacks) have their stages bundled (pre-imported) if the import statement is in the same file.
  Removed the cache; it's extra code for no benefit whatsoever; the table is constructed ONCE at start-up, there's never going to be a cache hit.  The FlowExecutorStageFactory produces StageMappings (StageMapping[]), which is itself a warehouse of singular server-component -> client-component relationships, fetching the client from the bundle as needed.  The StageMapping only does the fetch once per instance, so (for example) a password failure will reinstantiate a PasswordStage, but it will not fetch it a second time.
  Tidy.
  website/docs: Custom CSS (#19991)
  core: bump goauthentik.io/api/v3 to 3.2026.5.0-rc1-1770992049 (#20285)
  stage/invitation: Send invite via email UI (#19823)
  root: remove unused `django-cte` (#20090)
  core: bump ruff from 0.15.0 to 0.15.1 (#20273)
  core, web: update translations (#20271)
  ci: bump docker/build-push-action from 6.19.1 to 6.19.2 (#20274)
  enterprise/lifecycle: fix multiple reviews showing up in "Reviews" when the user is a member of multiple reviewer groups (#20266)
  ci: fix binary outpost build on release (#20248)
  web: add pretty names for lifecycle review events in event logs (#20264)
  web: fix italic formatting in lifecycle rule help text (#20263)
  website/docs: 2025.8.6 release notes (#20243)
  web/flow: optimize table for type safety
  web: Flesh out module driven tag names.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:backend backport/version-2026.2 Add this label to PRs to backport changes to version-2026.2

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants