Search in sources :

Example 1 with UserStoreAttribute

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;
}
Also used : Type(java.lang.reflect.Type) HashMap(java.util.HashMap) Gson(com.google.gson.Gson) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute) HashMap(java.util.HashMap) Map(java.util.Map) UserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute)

Example 2 with UserStoreAttribute

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;
}
Also used : IdentityUserStoreMgtException(org.wso2.carbon.identity.user.store.configuration.utils.IdentityUserStoreMgtException) UserStoreAttributeMappingResponse(org.wso2.carbon.identity.api.server.userstore.v1.model.UserStoreAttributeMappingResponse) UserStoreException(org.wso2.carbon.user.api.UserStoreException) UserStoreConfigService(org.wso2.carbon.identity.user.store.configuration.UserStoreConfigService) UserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute) AttributeMappingsToApiModel(org.wso2.carbon.identity.api.server.userstore.v1.core.functions.userstore.AttributeMappingsToApiModel)

Example 3 with UserStoreAttribute

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();
}
Also used : ArrayList(java.util.ArrayList) UserStoreAttributeResponse(org.wso2.carbon.identity.api.server.userstore.v1.model.UserStoreAttributeResponse)

Example 4 with UserStoreAttribute

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);
}
Also used : HashMap(java.util.HashMap) QName(javax.xml.namespace.QName) Iterator(java.util.Iterator) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute) StAXOMBuilder(org.apache.axiom.om.impl.builder.StAXOMBuilder) OMElement(org.apache.axiom.om.OMElement) UserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute)

Example 5 with UserStoreAttribute

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;
}
Also used : HashMap(java.util.HashMap) Iterator(java.util.Iterator) OMElement(org.apache.axiom.om.OMElement) UserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute)

Aggregations

UserStoreAttribute (org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute)6 HashMap (java.util.HashMap)5 Map (java.util.Map)3 ChangedUserStoreAttribute (org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute)3 ArrayList (java.util.ArrayList)2 Iterator (java.util.Iterator)2 OMElement (org.apache.axiom.om.OMElement)2 UserStoreConfigService (org.wso2.carbon.identity.user.store.configuration.UserStoreConfigService)2 UserStoreAttributeMappings (org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttributeMappings)2 IdentityUserStoreMgtException (org.wso2.carbon.identity.user.store.configuration.utils.IdentityUserStoreMgtException)2 Gson (com.google.gson.Gson)1 Type (java.lang.reflect.Type)1 QName (javax.xml.namespace.QName)1 StAXOMBuilder (org.apache.axiom.om.impl.builder.StAXOMBuilder)1 AttributeMappingsToApiModel (org.wso2.carbon.identity.api.server.userstore.v1.core.functions.userstore.AttributeMappingsToApiModel)1 UserStoreAttributeMappingResponse (org.wso2.carbon.identity.api.server.userstore.v1.model.UserStoreAttributeMappingResponse)1 UserStoreAttributeResponse (org.wso2.carbon.identity.api.server.userstore.v1.model.UserStoreAttributeResponse)1 DefaultUserStoreAttributeConfigLoader (org.wso2.carbon.identity.user.store.configuration.utils.DefaultUserStoreAttributeConfigLoader)1 IdentityUserStoreServerException (org.wso2.carbon.identity.user.store.configuration.utils.IdentityUserStoreServerException)1 UserStoreAttributeMappingChangesLoader (org.wso2.carbon.identity.user.store.configuration.utils.UserStoreAttributeMappingChangesLoader)1