Search in sources :

Example 56 with Claim

use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.

the class UserProfileAdmin method getProfileFieldsForInternalStore.

public UserProfileDTO getProfileFieldsForInternalStore() throws UserProfileException {
    UserFieldDTO[] datas;
    UserProfileDTO profile = new UserProfileDTO();
    String[] availableProfileConfigurations = new String[0];
    try {
        UserRealm realm = getUserRealm();
        Claim[] claims = getClaimsToEnterData(realm);
        ProfileConfigurationManager profileAdmin = realm.getProfileConfigurationManager();
        if (profileAdmin != null) {
            availableProfileConfigurations = getAvailableProfileConfiguration(profileAdmin);
        }
        String[] claimUris = new String[claims.length];
        for (int i = 0; i < claims.length; i++) {
            claimUris[i] = claims[i].getClaimUri();
        }
        datas = new UserFieldDTO[claims.length];
        for (int j = 0; j < claims.length; j++) {
            UserFieldDTO data = new UserFieldDTO();
            Claim claim = claims[j];
            String claimUri = claim.getClaimUri();
            data.setClaimUri(claimUri);
            data.setDisplayName(claim.getDisplayTag());
            data.setRegEx(claim.getRegEx());
            data.setRequired(claim.isRequired());
            data.setDisplayOrder(claim.getDisplayOrder());
            data.setRegEx(claim.getRegEx());
            data.setCheckedAttribute(claim.isCheckedAttribute());
            data.setReadOnly(claim.isReadOnly());
            datas[j] = data;
        }
    } catch (Exception e) {
        // Not logging. Already logged.
        throw new UserProfileException(e.getMessage(), e);
    }
    profile.setFieldValues(datas);
    profile.setProfileConfigurations(availableProfileConfigurations);
    return profile;
}
Also used : ProfileConfigurationManager(org.wso2.carbon.user.core.profile.ProfileConfigurationManager) UserRealm(org.wso2.carbon.user.core.UserRealm) Claim(org.wso2.carbon.user.api.Claim) UserStoreException(org.wso2.carbon.user.api.UserStoreException) CarbonException(org.wso2.carbon.CarbonException) FederatedAssociationManagerException(org.wso2.carbon.identity.user.profile.mgt.association.federation.exception.FederatedAssociationManagerException) IdentityProviderManagementException(org.wso2.carbon.idp.mgt.IdentityProviderManagementException)

Example 57 with Claim

use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.

the class UserProfileAdmin method getUserClaim.

/**
 * Retrieve a claim of the authorized user.
 *
 * @param claimUri    Claim URI in wso2 dialect.
 * @param profileName User profile name.
 * @return Claim value.
 * @throws UserProfileException
 */
public String getUserClaim(String claimUri, String profileName) throws UserProfileException {
    if (StringUtils.isBlank(claimUri)) {
        throw new UserProfileException("Invalid input parameter. Claim URI cannot be null.");
    }
    if (StringUtils.isBlank(profileName)) {
        throw new UserProfileException("Invalid input parameter. Profile name cannot be null.");
    }
    String loggedInUsername = CarbonContext.getThreadLocalCarbonContext().getUsername();
    if (StringUtils.isBlank(loggedInUsername)) {
        throw new UserProfileException("Could not find a logged in user in the current carbon context.");
    }
    String claimValue = null;
    try {
        UserStoreManager userStoreManager = getUserRealm().getUserStoreManager();
        int index = loggedInUsername.indexOf(UserCoreConstants.DOMAIN_SEPARATOR);
        if (index < 0) {
            if (log.isDebugEnabled()) {
                log.debug("Logged in username : '" + loggedInUsername + "' does not contain domain name.");
            }
            /* if domain is not provided, this can be the scenario where user from a secondary user store
                logs in without domain name and tries to view his own profile. */
            MessageContext messageContext = MessageContext.getCurrentMessageContext();
            HttpServletRequest request = (HttpServletRequest) messageContext.getProperty(TRANSPORT_HTTP_SERVLET_REQUEST);
            String domainName = (String) request.getSession().getAttribute(LOGGED_IN_DOMAIN);
            if (StringUtils.isNotBlank(domainName)) {
                loggedInUsername = domainName + UserCoreConstants.DOMAIN_SEPARATOR + loggedInUsername;
            }
        }
        index = loggedInUsername.indexOf(UserCoreConstants.DOMAIN_SEPARATOR);
        UserStoreManager secUserStoreManager = null;
        // Check whether we have a secondary UserStoreManager setup.
        if (index > 0) {
            // Using the short-circuit. User name comes with the domain name.
            String domain = loggedInUsername.substring(0, index);
            if (log.isDebugEnabled()) {
                log.debug("Domain name found in the logged in username. Domain name: " + domain);
            }
            if (userStoreManager instanceof AbstractUserStoreManager) {
                secUserStoreManager = ((AbstractUserStoreManager) userStoreManager).getSecondaryUserStoreManager(domain);
            }
        }
        Map<String, String> claimValues;
        if (secUserStoreManager != null) {
            claimValues = secUserStoreManager.getUserClaimValues(loggedInUsername, new String[] { claimUri }, profileName);
        } else {
            claimValues = userStoreManager.getUserClaimValues(loggedInUsername, new String[] { claimUri }, profileName);
        }
        if (claimValues != null) {
            claimValue = claimValues.get(claimUri);
        }
    } catch (UserStoreException e) {
        String message = String.format("An error occurred while getting the user claim '%s' in '%s' profile of " + "the user '%s'", claimUri, profileName, loggedInUsername);
        log.error(message, e);
        throw new UserProfileException(message, e);
    }
    return claimValue;
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) UserStoreException(org.wso2.carbon.user.api.UserStoreException) AbstractUserStoreManager(org.wso2.carbon.user.core.common.AbstractUserStoreManager) AbstractUserStoreManager(org.wso2.carbon.user.core.common.AbstractUserStoreManager) UserStoreManager(org.wso2.carbon.user.api.UserStoreManager) MessageContext(org.apache.axis2.context.MessageContext)

Example 58 with Claim

use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.

the class UserProfileAdmin method getUserProfile.

public UserProfileDTO getUserProfile(String username, String profileName) throws UserProfileException {
    UserProfileDTO profile = new UserProfileDTO();
    String[] availableProfileConfigurations = new String[0];
    String profileConfig = null;
    try {
        if (username == null || profileName == null) {
            throw new UserProfileException("Invalid input parameters");
        }
        if (!this.isAuthorized(username, USER_PROFILE_VIEW_PERMISSION)) {
            throw new UserProfileException(authorizationFailureMessage);
        }
        // Any other attempt is unauthorized. So attempts will be logged and denied.
        if (isAdminProfileSpoof(username)) {
            log.warn("Unauthorized attempt. User " + CarbonContext.getThreadLocalCarbonContext().getUsername() + " is trying to view the profile of the admin user.");
            throw new UserProfileException(authorizationFailureMessage);
        }
        UserRealm realm = getUserRealm();
        UserStoreManager userStoreManager = realm.getUserStoreManager();
        boolean isReadOnly = userStoreManager.isReadOnly();
        int indexOne;
        indexOne = username.indexOf("/");
        if (indexOne < 0) {
            /*if domain is not provided, this can be the scenario where user from a secondary user store
                logs in without domain name and tries to view his own profile*/
            MessageContext messageContext = MessageContext.getCurrentMessageContext();
            HttpServletRequest request = (HttpServletRequest) messageContext.getProperty("transport.http.servletRequest");
            String domainName = (String) request.getSession().getAttribute("logged_in_domain");
            if (domainName != null) {
                username = domainName + "/" + username;
            }
        }
        int index;
        index = username.indexOf("/");
        UserStoreManager secUserStoreManager = null;
        // Check whether we have a secondary UserStoreManager setup.
        if (index > 0) {
            // Using the short-circuit. User name comes with the domain name.
            String domain = username.substring(0, index);
            if (userStoreManager instanceof AbstractUserStoreManager) {
                secUserStoreManager = ((AbstractUserStoreManager) userStoreManager).getSecondaryUserStoreManager(domain);
                if (secUserStoreManager != null) {
                    isReadOnly = secUserStoreManager.isReadOnly();
                }
            }
        }
        ProfileConfigurationManager profileAdmin = realm.getProfileConfigurationManager();
        String[] profileNames = null;
        if (secUserStoreManager != null) {
            profileNames = secUserStoreManager.getProfileNames(username);
        } else {
            profileNames = userStoreManager.getProfileNames(username);
        }
        boolean found = false;
        if (profileNames != null && profileNames.length > 0) {
            for (int i = 0; i < profileNames.length; i++) {
                if (profileName.equals(profileNames[i])) {
                    found = true;
                    break;
                }
            }
        }
        if (!found) {
            return null;
        }
        if (profileAdmin != null) {
            availableProfileConfigurations = getAvailableProfileConfiguration(profileAdmin);
        }
        Claim[] claims = getClaimsToEnterData(realm);
        String[] claimUris = new String[claims.length + 1];
        for (int i = 0; i < claims.length; i++) {
            claimUris[i] = claims[i].getClaimUri();
        }
        claimUris[claims.length] = UserCoreConstants.PROFILE_CONFIGURATION;
        Map<String, String> valueMap = userStoreManager.getUserClaimValues(username, claimUris, profileName);
        List<UserFieldDTO> userFields = new ArrayList<UserFieldDTO>();
        for (int j = 0; j < claims.length; j++) {
            UserFieldDTO data = new UserFieldDTO();
            Claim claim = claims[j];
            String claimUri = claim.getClaimUri();
            if (!UserCoreConstants.PROFILE_CONFIGURATION.equals(claimUri)) {
                data.setClaimUri(claimUri);
                data.setFieldValue(valueMap.get(claimUri));
                data.setDisplayName(claim.getDisplayTag());
                data.setRegEx(claim.getRegEx());
                data.setRequired(claim.isRequired());
                data.setDisplayOrder(claim.getDisplayOrder());
                data.setReadOnly(claim.isReadOnly());
                data.setCheckedAttribute(claim.isCheckedAttribute());
                userFields.add(data);
            }
        }
        profile.setProfileName(profileName);
        profile.setProfileConfigurations(availableProfileConfigurations);
        profileConfig = valueMap.get(UserCoreConstants.PROFILE_CONFIGURATION);
        if (profileConfig == null) {
            profileConfig = UserCoreConstants.DEFAULT_PROFILE_CONFIGURATION;
        }
        if (isReadOnly) {
            profileConfig = "readonly";
        }
        profile.setProfileConifuration(profileConfig);
        profile.setFieldValues(userFields.toArray(new UserFieldDTO[userFields.size()]));
    } catch (Exception e) {
        log.error(String.format("An error occurred while getting the user profile '%s' of the user '%s'", profileName, username), e);
        throw new UserProfileException(e.getMessage(), e);
    }
    return profile;
}
Also used : ArrayList(java.util.ArrayList) AbstractUserStoreManager(org.wso2.carbon.user.core.common.AbstractUserStoreManager) UserStoreManager(org.wso2.carbon.user.api.UserStoreManager) UserStoreException(org.wso2.carbon.user.api.UserStoreException) CarbonException(org.wso2.carbon.CarbonException) FederatedAssociationManagerException(org.wso2.carbon.identity.user.profile.mgt.association.federation.exception.FederatedAssociationManagerException) IdentityProviderManagementException(org.wso2.carbon.idp.mgt.IdentityProviderManagementException) HttpServletRequest(javax.servlet.http.HttpServletRequest) ProfileConfigurationManager(org.wso2.carbon.user.core.profile.ProfileConfigurationManager) UserRealm(org.wso2.carbon.user.core.UserRealm) AbstractUserStoreManager(org.wso2.carbon.user.core.common.AbstractUserStoreManager) MessageContext(org.apache.axis2.context.MessageContext) Claim(org.wso2.carbon.user.api.Claim)

Example 59 with Claim

use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.

the class UserRegistrationService method readUserFieldsForUserRegistration.

public UserFieldDTO[] readUserFieldsForUserRegistration(String dialect) throws IdentityException {
    IdentityClaimManager claimManager = null;
    Claim[] claims = null;
    List<UserFieldDTO> claimList = null;
    UserRealm realm = null;
    claimManager = IdentityClaimManager.getInstance();
    realm = IdentityTenantUtil.getRealm(null, null);
    claims = claimManager.getAllSupportedClaims(dialect, realm);
    if (claims == null || claims.length == 0) {
        return new UserFieldDTO[0];
    }
    claimList = new ArrayList<UserFieldDTO>();
    for (Claim claim : claims) {
        if (claim.getDisplayTag() != null && !IdentityConstants.PPID_DISPLAY_VALUE.equals(claim.getDisplayTag())) {
            if (UserCoreConstants.ClaimTypeURIs.ACCOUNT_STATUS.equals(claim.getClaimUri())) {
                continue;
            }
            if (!claim.isReadOnly()) {
                claimList.add(getUserFieldDTO(claim.getClaimUri(), claim.getDisplayTag(), claim.isRequired(), claim.getDisplayOrder(), claim.getRegEx(), claim.isSupportedByDefault()));
            }
        }
    }
    return claimList.toArray(new UserFieldDTO[claimList.size()]);
}
Also used : UserRealm(org.wso2.carbon.user.core.UserRealm) UserFieldDTO(org.wso2.carbon.identity.user.registration.dto.UserFieldDTO) IdentityClaimManager(org.wso2.carbon.identity.core.IdentityClaimManager) Claim(org.wso2.carbon.user.core.claim.Claim)

Example 60 with Claim

use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.

the class ApplicationDAOImpl method updatePermissionAndRoleConfiguration.

/**
 * @param applicationID
 * @param permissionsAndRoleConfiguration
 * @param connection
 * @throws SQLException
 */
private void updatePermissionAndRoleConfiguration(int applicationID, PermissionsAndRoleConfig permissionsAndRoleConfiguration, Connection connection) throws SQLException {
    if (permissionsAndRoleConfiguration == null || permissionsAndRoleConfiguration.getRoleMappings() == null || ArrayUtils.isEmpty(permissionsAndRoleConfiguration.getRoleMappings())) {
        return;
    }
    RoleMapping[] roleMappings = permissionsAndRoleConfiguration.getRoleMappings();
    int tenantID = CarbonContext.getThreadLocalCarbonContext().getTenantId();
    PreparedStatement storeRoleMapPrepStmt = null;
    try {
        storeRoleMapPrepStmt = connection.prepareStatement(STORE_ROLE_MAPPING);
        for (RoleMapping roleMapping : roleMappings) {
            // TENANT_ID, IDP_ROLE, SP_ROLE, APP_ID
            storeRoleMapPrepStmt.setInt(1, tenantID);
            storeRoleMapPrepStmt.setString(2, roleMapping.getLocalRole().getLocalRoleName());
            storeRoleMapPrepStmt.setString(3, roleMapping.getRemoteRole());
            storeRoleMapPrepStmt.setInt(4, applicationID);
            storeRoleMapPrepStmt.addBatch();
            if (log.isDebugEnabled()) {
                log.debug("Storing Claim Mapping. IDPRole: " + roleMapping.getLocalRole() + " SPRole: " + roleMapping.getRemoteRole());
            }
        }
        storeRoleMapPrepStmt.executeBatch();
    } finally {
        IdentityApplicationManagementUtil.closeStatement(storeRoleMapPrepStmt);
    }
}
Also used : PreparedStatement(java.sql.PreparedStatement) NamedPreparedStatement(org.wso2.carbon.database.utils.jdbc.NamedPreparedStatement) RoleMapping(org.wso2.carbon.identity.application.common.model.RoleMapping)

Aggregations

HashMap (java.util.HashMap)112 ArrayList (java.util.ArrayList)90 ClaimMapping (org.wso2.carbon.identity.application.common.model.ClaimMapping)67 UserStoreException (org.wso2.carbon.user.api.UserStoreException)66 Test (org.testng.annotations.Test)63 ClaimMetadataException (org.wso2.carbon.identity.claim.metadata.mgt.exception.ClaimMetadataException)55 Map (java.util.Map)50 PreparedStatement (java.sql.PreparedStatement)48 SQLException (java.sql.SQLException)43 LocalClaim (org.wso2.carbon.identity.claim.metadata.mgt.model.LocalClaim)34 RealmService (org.wso2.carbon.user.core.service.RealmService)30 UserRealm (org.wso2.carbon.user.core.UserRealm)29 UserStoreManager (org.wso2.carbon.user.core.UserStoreManager)29 Claim (org.wso2.carbon.user.api.Claim)28 UserStoreException (org.wso2.carbon.user.core.UserStoreException)28 ResultSet (java.sql.ResultSet)27 ClaimConfig (org.wso2.carbon.identity.application.common.model.ClaimConfig)26 Connection (java.sql.Connection)25 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)24 AuthenticatedUser (org.wso2.carbon.identity.application.authentication.framework.model.AuthenticatedUser)24