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