diff --git a/components/org.wso2.carbon.identity.scim2.common/pom.xml b/components/org.wso2.carbon.identity.scim2.common/pom.xml index 01d73f377..f2ab6b98b 100644 --- a/components/org.wso2.carbon.identity.scim2.common/pom.xml +++ b/components/org.wso2.carbon.identity.scim2.common/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.identity.inbound.provisioning.scim2 identity-inbound-provisioning-scim2 ../../pom.xml - 3.4.72-SNAPSHOT + 3.4.76-SNAPSHOT 4.0.0 diff --git a/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/impl/SCIMUserManager.java b/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/impl/SCIMUserManager.java index 7ed057238..aa818eb8c 100644 --- a/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/impl/SCIMUserManager.java +++ b/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/impl/SCIMUserManager.java @@ -58,7 +58,6 @@ import org.wso2.carbon.identity.scim2.common.utils.AttributeMapper; import org.wso2.carbon.identity.scim2.common.utils.SCIMCommonConstants; import org.wso2.carbon.identity.scim2.common.utils.SCIMCommonUtils; -import org.wso2.carbon.identity.scim2.common.utils.Scenarios; import org.wso2.carbon.user.api.ClaimMapping; import org.wso2.carbon.user.api.UserStoreException; import org.wso2.carbon.user.core.PaginatedUserStoreManager; @@ -6399,10 +6398,10 @@ private void publishEvent(User user, String eventName, boolean isAdminUpdate) properties.put(IdentityEventConstants.EventProperty.CREDENTIAL, user.getPassword()); if (isAdminUpdate) { properties.put(IdentityEventConstants.EventProperty.SCENARIO, - Scenarios.CREDENTIAL_UPDATE_BY_ADMIN_VIA_CONSOLE.name()); + IdentityEventConstants.EventProperty.Scenario.ScenarioTypes.POST_CREDENTIAL_UPDATE_BY_ADMIN); } else { properties.put(IdentityEventConstants.EventProperty.SCENARIO, - Scenarios.CREDENTIAL_UPDATE_BY_USER_VIA_MY_ACCOUNT.name()); + IdentityEventConstants.EventProperty.Scenario.ScenarioTypes.POST_CREDENTIAL_UPDATE_BY_USER); } Event identityMgtEvent = new Event(eventName, properties); diff --git a/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/utils/SCIMCommonUtils.java b/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/utils/SCIMCommonUtils.java index 615264411..12f89a309 100644 --- a/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/utils/SCIMCommonUtils.java +++ b/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/utils/SCIMCommonUtils.java @@ -936,6 +936,9 @@ public static void updateSystemRoleV2MetaData(int tenantId) { */ public static String getLoggedInUserID() throws CharonException { + if (PrivilegedCarbonContext.getThreadLocalCarbonContext().getUserId() != null) { + return PrivilegedCarbonContext.getThreadLocalCarbonContext().getUserId(); + } try { String loggedInUserName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername(); String loggedInUserTenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(); diff --git a/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/utils/Scenarios.java b/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/utils/Scenarios.java deleted file mode 100644 index 8ba5d2d52..000000000 --- a/components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/utils/Scenarios.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). - * - * WSO2 LLC. licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.identity.scim2.common.utils; - -import org.apache.commons.lang.StringUtils; -import org.wso2.carbon.identity.scim2.common.exceptions.IdentitySCIMException; - -/** - * Enum which contains the scenarios. - */ -public enum Scenarios { - - CREDENTIAL_UPDATE_BY_ADMIN_VIA_CONSOLE, - CREDENTIAL_UPDATE_BY_USER_VIA_MY_ACCOUNT; - - /** - * Get scenario which matches the given scenario name. - * - * @param scenarioName Name of the scenario - * @return Scenarios - * @throws IdentitySCIMException Invalid scenario - */ - public static Scenarios getScenario(String scenarioName) throws IdentitySCIMException { - - Scenarios[] scenarios = { - CREDENTIAL_UPDATE_BY_ADMIN_VIA_CONSOLE, CREDENTIAL_UPDATE_BY_USER_VIA_MY_ACCOUNT - }; - if (StringUtils.isNotEmpty(scenarioName)) { - for (Scenarios scenario : scenarios) { - if (scenarioName.equals(scenario.name())) { - return scenario; - } - } - } - throw new IdentitySCIMException("Invalid scenario: " + scenarioName); - } - -} diff --git a/components/org.wso2.carbon.identity.scim2.provider/pom.xml b/components/org.wso2.carbon.identity.scim2.provider/pom.xml index 823917739..52a5382d6 100644 --- a/components/org.wso2.carbon.identity.scim2.provider/pom.xml +++ b/components/org.wso2.carbon.identity.scim2.provider/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.identity.inbound.provisioning.scim2 identity-inbound-provisioning-scim2 ../../pom.xml - 3.4.72-SNAPSHOT + 3.4.76-SNAPSHOT 4.0.0 diff --git a/components/org.wso2.carbon.identity.scim2.provider/src/main/java/org/wso2/carbon/identity/scim2/provider/resources/UserResource.java b/components/org.wso2.carbon.identity.scim2.provider/src/main/java/org/wso2/carbon/identity/scim2/provider/resources/UserResource.java index fd1dcba01..817fc7278 100644 --- a/components/org.wso2.carbon.identity.scim2.provider/src/main/java/org/wso2/carbon/identity/scim2/provider/resources/UserResource.java +++ b/components/org.wso2.carbon.identity.scim2.provider/src/main/java/org/wso2/carbon/identity/scim2/provider/resources/UserResource.java @@ -197,6 +197,11 @@ public Response getUser(@HeaderParam(SCIMProviderConstants.ACCEPT_HEADER) String throw new FormatNotSupportedException(error); } + // Validates the count parameter if exists. + if (count != null && IdentityUtil.isSCIM2UserMaxItemsPerPageEnabled()) { + count = validateCountParameter(count); + } + // obtain the user store manager UserManager userManager = IdentitySCIMManager.getInstance().getUserManager(); @@ -392,4 +397,24 @@ private void removeAskPasswordConfirmationCodeThreadLocal() { IdentityUtil.threadLocalProperties.get() .remove(IdentityRecoveryConstants.AP_CONFIRMATION_CODE_THREAD_LOCAL_PROPERTY); } + + /** + * Validate the count query parameter. + * + * @param count Requested item count. + * @return Validated count parameter. + */ + private int validateCountParameter(Integer count) { + + int maximumItemsPerPage = IdentityUtil.getMaximumItemPerPage(); + if (count > maximumItemsPerPage) { + if (LOG.isDebugEnabled()) { + LOG.debug(String.format("Given limit exceeds the maximum limit. Therefore the limit is set to %s.", + maximumItemsPerPage)); + } + return maximumItemsPerPage; + } + + return count; + } } diff --git a/features/org.wso2.carbon.identity.scim2.common.feature/pom.xml b/features/org.wso2.carbon.identity.scim2.common.feature/pom.xml index 4796040ec..cb35cf5d8 100644 --- a/features/org.wso2.carbon.identity.scim2.common.feature/pom.xml +++ b/features/org.wso2.carbon.identity.scim2.common.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.identity.inbound.provisioning.scim2 identity-inbound-provisioning-scim2 ../../pom.xml - 3.4.72-SNAPSHOT + 3.4.76-SNAPSHOT 4.0.0 diff --git a/features/org.wso2.carbon.identity.scim2.provider.feature/pom.xml b/features/org.wso2.carbon.identity.scim2.provider.feature/pom.xml index 5ddedc699..1615c7c05 100644 --- a/features/org.wso2.carbon.identity.scim2.provider.feature/pom.xml +++ b/features/org.wso2.carbon.identity.scim2.provider.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.identity.inbound.provisioning.scim2 identity-inbound-provisioning-scim2 ../../pom.xml - 3.4.72-SNAPSHOT + 3.4.76-SNAPSHOT 4.0.0 diff --git a/features/org.wso2.carbon.identity.scim2.server.feature/pom.xml b/features/org.wso2.carbon.identity.scim2.server.feature/pom.xml index 34b8e3473..ee162c1db 100644 --- a/features/org.wso2.carbon.identity.scim2.server.feature/pom.xml +++ b/features/org.wso2.carbon.identity.scim2.server.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.identity.inbound.provisioning.scim2 identity-inbound-provisioning-scim2 ../../pom.xml - 3.4.72-SNAPSHOT + 3.4.76-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 5b75844c8..f99ade447 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ identity-inbound-provisioning-scim2 pom 4.0.0 - 3.4.72-SNAPSHOT + 3.4.76-SNAPSHOT WSO2 Carbon - SCIM Provisioning Module SCIM 2.0 Implementation for C4 @@ -285,11 +285,11 @@ 6.5.3 3.2.0.wso2v1 4.10.10 - 7.0.89 + 7.0.112 4.13.1 20030203.000129 1.8.12 - 4.0.17 + 4.0.18 1.0.76 1.8.13