diff --git a/components/org.wso2.carbon.identity.organization.user.invitation.management/src/main/java/org/wso2/carbon/identity/organization/user/invitation/management/InvitationCoreServiceImpl.java b/components/org.wso2.carbon.identity.organization.user.invitation.management/src/main/java/org/wso2/carbon/identity/organization/user/invitation/management/InvitationCoreServiceImpl.java index 17c221f4b..0d927ff75 100644 --- a/components/org.wso2.carbon.identity.organization.user.invitation.management/src/main/java/org/wso2/carbon/identity/organization/user/invitation/management/InvitationCoreServiceImpl.java +++ b/components/org.wso2.carbon.identity.organization.user.invitation.management/src/main/java/org/wso2/carbon/identity/organization/user/invitation/management/InvitationCoreServiceImpl.java @@ -103,6 +103,7 @@ import static org.wso2.carbon.identity.organization.user.invitation.management.constant.UserInvitationMgtConstants.ErrorMessage.ERROR_CODE_INVALID_GROUP; import static org.wso2.carbon.identity.organization.user.invitation.management.constant.UserInvitationMgtConstants.ErrorMessage.ERROR_CODE_INVALID_INVITATION_ID; import static org.wso2.carbon.identity.organization.user.invitation.management.constant.UserInvitationMgtConstants.ErrorMessage.ERROR_CODE_INVALID_ROLE; +import static org.wso2.carbon.identity.organization.user.invitation.management.constant.UserInvitationMgtConstants.ErrorMessage.ERROR_CODE_INVALID_USER_STORE_DOMAIN; import static org.wso2.carbon.identity.organization.user.invitation.management.constant.UserInvitationMgtConstants.ErrorMessage.ERROR_CODE_INVITATION_EXPIRED; import static org.wso2.carbon.identity.organization.user.invitation.management.constant.UserInvitationMgtConstants.ErrorMessage.ERROR_CODE_INVITED_USER_EMAIL_NOT_FOUND; import static org.wso2.carbon.identity.organization.user.invitation.management.constant.UserInvitationMgtConstants.ErrorMessage.ERROR_CODE_NO_INVITATION_FOR_USER; @@ -149,6 +150,7 @@ public List createInvitations(InvitationDO invitationDO) throw String parentTenantDomain = resolveTenantDomain(parentOrgId); int parentTenantId = IdentityTenantUtil.getTenantId(parentTenantDomain); AbstractUserStoreManager userStoreManager = getAbstractUserStoreManager(parentTenantId); + validateInvitedUserStoreDomain(userStoreManager, invitationDO.getUserDomain()); for (String username : invitationDO.getUsernamesList()) { if (LOG.isDebugEnabled()) { LOG.debug("Creating invitation for the user: " + username + " in the organization: " + @@ -732,6 +734,17 @@ private void validateGroupAssignments(InvitationDO invitation, String invitedTen } } + private void validateInvitedUserStoreDomain(AbstractUserStoreManager userStoreManager, String domain) + throws UserInvitationMgtException { + + LOG.debug("Validating the user store domain of the invitation."); + if (userStoreManager.getSecondaryUserStoreManager(domain) == null) { + throw new UserInvitationMgtClientException(ERROR_CODE_INVALID_USER_STORE_DOMAIN.getCode(), + ERROR_CODE_INVALID_USER_STORE_DOMAIN.getMessage(), + String.format(ERROR_CODE_INVALID_USER_STORE_DOMAIN.getDescription(), domain)); + } + } + private String resolveTenantDomain(String orgId) throws UserInvitationMgtServerException { try { diff --git a/components/org.wso2.carbon.identity.organization.user.invitation.management/src/main/java/org/wso2/carbon/identity/organization/user/invitation/management/constant/UserInvitationMgtConstants.java b/components/org.wso2.carbon.identity.organization.user.invitation.management/src/main/java/org/wso2/carbon/identity/organization/user/invitation/management/constant/UserInvitationMgtConstants.java index 029e62d56..32b15a59f 100644 --- a/components/org.wso2.carbon.identity.organization.user.invitation.management/src/main/java/org/wso2/carbon/identity/organization/user/invitation/management/constant/UserInvitationMgtConstants.java +++ b/components/org.wso2.carbon.identity.organization.user.invitation.management/src/main/java/org/wso2/carbon/identity/organization/user/invitation/management/constant/UserInvitationMgtConstants.java @@ -153,6 +153,9 @@ public enum ErrorMessage { ERROR_CODE_GROUP_EXISTENCE("10035", "Error while checking the group existence.", "Could not resolve the group existence from the given list."), + ERROR_CODE_INVALID_USER_STORE_DOMAIN("10036", + "Invalid user store domain specified in the invitation.", + "Could not find a user store domain with identifier %s."), // DAO layer errors ERROR_CODE_STORE_INVITATION("10501",