From 3f0dc71d6c065f416d0f3eacd562d17c315f6705 Mon Sep 17 00:00:00 2001 From: ilkin-overleaf <100852799+ilkin-overleaf@users.noreply.github.com> Date: Fri, 5 Dec 2025 16:27:29 +0200 Subject: [PATCH] Merge pull request #29823 from overleaf/ii-domain-capture-member-limit-check [web] Domain capture member limit check GitOrigin-RevId: bce12fc67aee9cbcc40a10e91585b39def4dfdf6 --- .../web/app/src/Features/Errors/Errors.js | 3 +++ .../web/frontend/extracted-translations.json | 1 + services/web/locales/en.json | 1 + .../components/domain-capture.spec.tsx | 19 +++++++++++++++++++ 4 files changed, 24 insertions(+) diff --git a/services/web/app/src/Features/Errors/Errors.js b/services/web/app/src/Features/Errors/Errors.js index 7eb37d7a2b..4b06d50203 100644 --- a/services/web/app/src/Features/Errors/Errors.js +++ b/services/web/app/src/Features/Errors/Errors.js @@ -198,6 +198,8 @@ class SAMLRequestDeniedError extends SAMLAuthenticationError { class SAMLDomainCaptureManagedUserMissingEmailError extends OError {} +class SAMLGroupMemberLimitReachedError extends OError {} + class SAMLDomainCaptureManagedOptInUserMissingEmailError extends SAMLDomainCaptureError {} class SAMLSessionDataMissing extends BackwardCompatibleError { @@ -385,6 +387,7 @@ module.exports = { SAMLRequestDeniedError, SAMLDomainCaptureRegisterError, SAMLDomainCaptureManagedUserMissingEmailError, + SAMLGroupMemberLimitReachedError, SAMLDomainCaptureManagedOptInUserMissingEmailError, SLInV2Error, ThirdPartyIdentityExistsError, diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index 982097f7f6..d5c3036882 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -748,6 +748,7 @@ "good_news_you_are_already_receiving_this_add_on_via_writefull": "", "group_admin": "", "group_audit_logs": "", + "group_has_no_licenses_available_error": "", "group_invitations": "", "group_invite_has_been_sent_to_email": "", "group_libraries": "", diff --git a/services/web/locales/en.json b/services/web/locales/en.json index e4b2016ff5..5502ac64b8 100644 --- a/services/web/locales/en.json +++ b/services/web/locales/en.json @@ -963,6 +963,7 @@ "group_admin": "Group admin", "group_audit_logs": "Group audit logs", "group_full": "This group is already full", + "group_has_no_licenses_available_error": "Sorry, your group has no licenses available. Please contact your administrator to request a license.", "group_invitations": "Group invitations", "group_invite_has_been_sent_to_email": "Group invite has been sent to <0>__email__", "group_libraries": "Group Libraries", diff --git a/services/web/test/frontend/features/group-management/components/domain-capture.spec.tsx b/services/web/test/frontend/features/group-management/components/domain-capture.spec.tsx index 4f1235e0cc..7059ada075 100644 --- a/services/web/test/frontend/features/group-management/components/domain-capture.spec.tsx +++ b/services/web/test/frontend/features/group-management/components/domain-capture.spec.tsx @@ -117,6 +117,25 @@ describe('', function () { ) }) + it('renders group limit reached error message', function () { + const notificationsInstitution = [ + { templateKey: 'notification_group_member_limit_reached' }, + ] + cy.window().then(win => { + win.metaAttributesCache.set( + 'ol-notificationsInstitution', + notificationsInstitution + ) + }) + cy.mount() + + cy.findByRole('alert').should( + 'contain.text', + 'Sorry, your group has no licenses available. ' + + 'Please contact your administrator to request a license.' + ) + }) + it('renders institution error message', function () { const errorMsg = 'Error message' const notificationsInstitution = [