use of org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute in project carbon-identity-framework by wso2.
the class UserStoreConfigComponent method getModifiedAttributeMap.
/**
* To merge default attribute mappings and mappings changes of other user stores.
*
* @param defaultUserStoreAttrMapping Default userstore attribute mappings.
* @param changedUserStoreAttrMap Userstore attribute mapping changes.
* @return Map of user store type and their attribute mappings.
*/
private Map<String, UserStoreAttribute> getModifiedAttributeMap(Map<String, UserStoreAttribute> defaultUserStoreAttrMapping, Map<String, ChangedUserStoreAttribute> changedUserStoreAttrMap) {
if (defaultUserStoreAttrMapping == null) {
return null;
}
Gson gson = new Gson();
String serializedDefaultAttrMappings = gson.toJson(defaultUserStoreAttrMapping);
// To deserialize a hashmap using Gson, need a type object of the hashmap.
Type type = new TypeToken<HashMap<String, UserStoreAttribute>>() {
}.getType();
Map<String, UserStoreAttribute> clonedAttrMap = gson.fromJson(serializedDefaultAttrMappings, type);
for (Map.Entry<String, ChangedUserStoreAttribute> entry : changedUserStoreAttrMap.entrySet()) {
if (!clonedAttrMap.containsKey(entry.getKey())) {
continue;
}
if (entry.getValue().getOperation() == UserStoreConfigurationConstant.UserStoreOperation.UPDATE) {
UserStoreAttribute defaultUserStoreAttribute = clonedAttrMap.get(entry.getKey());
UserStoreAttribute newUserStoreAttribute = entry.getValue().getUsAttribute();
if (org.apache.commons.lang3.StringUtils.isNotBlank(newUserStoreAttribute.getMappedAttribute())) {
defaultUserStoreAttribute.setMappedAttribute(newUserStoreAttribute.getMappedAttribute());
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(newUserStoreAttribute.getDisplayName())) {
defaultUserStoreAttribute.setDisplayName(newUserStoreAttribute.getDisplayName());
}
clonedAttrMap.put(entry.getKey(), defaultUserStoreAttribute);
} else if (entry.getValue().getOperation() == UserStoreConfigurationConstant.UserStoreOperation.DELETE) {
clonedAttrMap.remove(entry.getKey());
}
}
return clonedAttrMap;
}
use of org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute in project identity-api-server by wso2.
the class ServerUserStoreService method getUserStoreAttributeMappings.
/**
* Get user store attributes mappings for a given user store type id.
*
* @param typeId String user store type id.
* @param includeIdentityClaimMappings Whether to include claim mapping for identity claims with other userstore.
* attributes.
* @return UserStoreAttributeMapping user store attribute mappings.
*/
public UserStoreAttributeMappingResponse getUserStoreAttributeMappings(String typeId, boolean includeIdentityClaimMappings) {
Set<String> classNames;
String userStoreName = getUserStoreType(base64URLDecodeId(typeId));
if (StringUtils.isBlank(userStoreName)) {
throw handleException(Response.Status.BAD_REQUEST, UserStoreConstants.ErrorMessage.ERROR_CODE_INVALID_INPUT);
}
try {
UserStoreConfigService userStoreConfigService = UserStoreConfigServiceHolder.getInstance().getUserStoreConfigService();
classNames = userStoreConfigService.getAvailableUserStoreClasses();
if (CollectionUtils.isEmpty(classNames) || !classNames.contains(userStoreName)) {
throw handleException(Response.Status.NOT_FOUND, UserStoreConstants.ErrorMessage.ERROR_CODE_NOT_FOUND);
}
} catch (IdentityUserStoreMgtException e) {
UserStoreConstants.ErrorMessage errorEnum = UserStoreConstants.ErrorMessage.ERROR_CODE_ERROR_RETRIEVING_USER_STORE;
throw handleIdentityUserStoreMgtException(e, errorEnum);
}
UserStoreAttributeMappingResponse userStoreAttributeMappingResponse = new UserStoreAttributeMappingResponse();
List<UserStoreAttribute> attributeMappings = getAttributeMappings(userStoreName, includeIdentityClaimMappings);
userStoreAttributeMappingResponse = userStoreAttributeMappingResponse.attributeMappings(new AttributeMappingsToApiModel().apply(attributeMappings)).typeId(typeId).typeName(userStoreName);
try {
boolean isLocal = UserStoreManagerRegistry.isLocalUserStore(userStoreName);
userStoreAttributeMappingResponse.setIsLocal(isLocal);
} catch (UserStoreException e) {
LOG.error(String.format("Userstore type is not found for %s", userStoreName), e);
}
return userStoreAttributeMappingResponse;
}
use of org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute in project identity-api-server by wso2.
the class AttributeMappingsToApiModel method apply.
@Override
public List<UserStoreAttributeResponse> apply(List<UserStoreAttribute> userStoreAttributeDOs) {
if (CollectionUtils.isNotEmpty(userStoreAttributeDOs)) {
List<UserStoreAttributeResponse> userStoreAttributes = new ArrayList<>();
userStoreAttributeDOs.stream().forEach(userStoreAttribute -> {
UserStoreAttributeResponse userStoreAttributeResponse = new UserStoreAttributeResponse();
userStoreAttributeResponse.mappedAttribute(userStoreAttribute.getMappedAttribute());
userStoreAttributeResponse.claimId(userStoreAttribute.getClaimId());
userStoreAttributeResponse.claimURI(userStoreAttribute.getClaimUri());
userStoreAttributeResponse.displayName(userStoreAttribute.getDisplayName());
userStoreAttributes.add(userStoreAttributeResponse);
});
return userStoreAttributes;
}
return Collections.emptyList();
}
use of org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute in project carbon-identity-framework by wso2.
the class UserStoreAttributeMappingChangesLoader method buildAttributeMappings.
private void buildAttributeMappings(InputStream inStream, Map<String, Map<String, ChangedUserStoreAttribute>> userStoreAttributeChanges) throws XMLStreamException, OMException, IdentityUserStoreServerException {
StAXOMBuilder builder = new StAXOMBuilder(inStream);
Iterator iterator = builder.getDocumentElement().getChildElements();
String userStoreType = builder.getDocumentElement().getAttributeValue(new QName(USERSTORE_TYPE));
Map<String, ChangedUserStoreAttribute> attributeChangeMap = new HashMap<>();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
OMElement attributeElement = (OMElement) iterator.next();
Iterator attributeIterator = attributeElement.getChildElements();
ChangedUserStoreAttribute changedUserStoreAttribute = new ChangedUserStoreAttribute();
UserStoreAttribute userStoreAttribute = new UserStoreAttribute();
if (attributeIterator == null) {
continue;
}
while (attributeIterator.hasNext()) {
OMElement attributes = (OMElement) attributeIterator.next();
String attributeQName = attributes.getQName().getLocalPart();
if (StringUtils.equalsIgnoreCase(OPERATION, attributeQName)) {
changedUserStoreAttribute.setOperation(getOperation(attributes.getText()));
} else if (StringUtils.equalsIgnoreCase(ATTRIBUTE_ID, attributeQName)) {
userStoreAttribute.setMappedAttribute(attributes.getText());
} else if (StringUtils.equalsIgnoreCase(CLAIM_URI, attributeQName)) {
userStoreAttribute.setClaimUri(attributes.getText());
userStoreAttribute.setClaimId(Base64.getUrlEncoder().withoutPadding().encodeToString(attributes.getText().getBytes(StandardCharsets.UTF_8)));
} else if (StringUtils.equalsIgnoreCase(DISPLAY_NAME, attributeQName)) {
userStoreAttribute.setDisplayName(attributes.getText());
}
}
changedUserStoreAttribute.setUsAttribute(userStoreAttribute);
attributeChangeMap.put(userStoreAttribute.getClaimId(), changedUserStoreAttribute);
}
userStoreAttributeChanges.put(userStoreType, attributeChangeMap);
}
use of org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute in project carbon-identity-framework by wso2.
the class DefaultUserStoreAttributeConfigLoader method getDefaultAttributeMappings.
private Map<String, UserStoreAttribute> getDefaultAttributeMappings(Iterator claimIterator) {
Map<String, UserStoreAttribute> defaultAttributeMappings = new HashMap<>();
while (claimIterator.hasNext()) {
OMElement claimElement = (OMElement) claimIterator.next();
Iterator attributeIterator = claimElement.getChildElements();
UserStoreAttribute userStoreAttribute = new UserStoreAttribute();
while (attributeIterator.hasNext()) {
OMElement attributes = (OMElement) attributeIterator.next();
String attributeQName = attributes.getQName().getLocalPart();
if (StringUtils.equalsIgnoreCase(DISPLAY_NAME, attributeQName)) {
userStoreAttribute.setDisplayName(attributes.getText());
} else if (StringUtils.equalsIgnoreCase(ATTRIBUTE_ID, attributeQName)) {
userStoreAttribute.setMappedAttribute(attributes.getText());
} else if (StringUtils.equalsIgnoreCase(CLAIM_URI, attributeQName)) {
userStoreAttribute.setClaimUri(attributes.getText());
userStoreAttribute.setClaimId(Base64.getUrlEncoder().withoutPadding().encodeToString(attributes.getText().getBytes(StandardCharsets.UTF_8)));
}
}
defaultAttributeMappings.put(userStoreAttribute.getClaimId(), userStoreAttribute);
}
return defaultAttributeMappings;
}
Aggregations