@Override public PurposeCategory addPurposeCategory(PurposeCategory purposeCategory) throws ConsentManagementException { PurposeCategory purposeCategoryResult; int insertedId; JdbcTemplate jdbcTemplate = JdbcUtils.getNewTemplate(); try { insertedId = jdbcTemplate.executeInsert(INSERT_PURPOSE_CATEGORY_SQL, (preparedStatement -> { preparedStatement.setString(1, purposeCategory.getName()); preparedStatement.setString(2, purposeCategory.getDescription()); preparedStatement.setInt(3, purposeCategory.getTenantId()); }), purposeCategory, true); } catch (DataAccessException e) { throw ConsentUtils.handleServerException(ErrorMessages.ERROR_CODE_ADD_PURPOSE_CATEGORY, purposeCategory .getName(), e); } purposeCategoryResult = new PurposeCategory(insertedId, purposeCategory.getName(), purposeCategory.getDescription(), purposeCategory.getTenantId()); return purposeCategoryResult; }
private void validateInputParameters(PurposeCategory purposeCategory) throws ConsentManagementException { if (isBlank(purposeCategory.getName())) { if (log.isDebugEnabled()) { log.debug("Purpose Category name cannot be empty"); } throw handleClientException(ERROR_CODE_PURPOSE_CATEGORY_NAME_REQUIRED, null); } if (isPurposeCategoryExists(purposeCategory.getName())) { if (log.isDebugEnabled()) { log.debug("A purpose category already exists with name: " + purposeCategory.getName()); } throw handleClientException(ERROR_CODE_PURPOSE_CATEGORY_ALREADY_EXIST, purposeCategory.getName()); } // Set authenticated user's tenant id if it is not set. if (isBlank(purposeCategory.getTenantDomain())) { purposeCategory.setTenantId(getTenantIdFromCarbonContext()); purposeCategory.setTenantDomain(getTenantDomainFromCarbonContext()); } else { purposeCategory.setTenantId(getTenantId(realmService, purposeCategory.getTenantDomain())); } if (log.isDebugEnabled()) { log.debug("PurposeCategory request validation success: " + purposeCategory.getName()); } }
protected void addDefaultPurposeCategory(TenantInfoBean tenantInfoBean) throws StratosException { FrameworkUtils.startTenantFlow(tenantInfoBean.getTenantDomain()); try { PurposeCategory purposeCategory; PurposeCategory defaultPurposeCategory = new PurposeCategory(DEFAULT_PURPOSE_CATEGORY, "Core " + "functionality"); try { purposeCategory = IdentityConsentDataHolder.getInstance().getConsentManager().addPurposeCategory (defaultPurposeCategory); if (log.isDebugEnabled()) { log.debug(String.format("Added default purpose category for tenant: %s. Default purpose category " + "id: %d", tenantInfoBean.getTenantDomain(), purposeCategory.getId())); } } catch (ConsentManagementException e) { throw new StratosException("Error while adding default purpose category for tenant:" + tenantInfoBean .getTenantDomain(), e); } } finally { FrameworkUtils.endTenantFlow(); } }
@Override public PurposeCategory getPurposeCategoryById(int id) throws ConsentManagementException { PurposeCategory purposeCategory; JdbcTemplate jdbcTemplate = JdbcUtils.getNewTemplate(); try { purposeCategory = jdbcTemplate.fetchSingleRecord(SELECT_PURPOSE_CATEGORY_BY_ID_SQL, (resultSet, rowNumber) -> new PurposeCategory(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getInt(4)), preparedStatement -> preparedStatement.setInt(1, id)); } catch (DataAccessException e) { throw ConsentUtils.handleServerException(ErrorMessages.ERROR_CODE_SELECT_PURPOSE_CATEGORY_BY_ID, String .valueOf(id), e); } return purposeCategory; }
private ReceiptInput buildReceiptInput(String subject, ServiceProvider serviceProvider, String spTenantDomain, List<ClaimMetaData> claims) throws SSOConsentServiceException { String collectionMethod = "Web Form - Sign-in"; String jurisdiction = "NONE"; String language = "us_EN"; String consentType = "EXPLICIT"; String termination = CONSENT_VALIDITY_TYPE_VALID_UNTIL + CONSENT_VALIDITY_TYPE_SEPARATOR + CONSENT_VALIDITY_TYPE_VALID_UNTIL_INDEFINITE; String policyUrl = "NONE"; Purpose purpose = getDefaultPurpose(); PurposeCategory purposeCategory = getDefaultPurposeCategory(); List<PIICategoryValidity> piiCategoryIds = getPiiCategoryValiditiesForClaims(claims, termination); List<ReceiptServiceInput> serviceInputs = new ArrayList<>(); List<ReceiptPurposeInput> purposeInputs = new ArrayList<>(); List<Integer> purposeCategoryIds = new ArrayList<>(); Map<String, String> properties = new HashMap<>(); purposeCategoryIds.add(purposeCategory.getId()); ReceiptPurposeInput purposeInput = getReceiptPurposeInput(consentType, termination, purpose, piiCategoryIds, purposeCategoryIds); purposeInputs.add(purposeInput); ReceiptServiceInput serviceInput = getReceiptServiceInput(serviceProvider, spTenantDomain, purposeInputs); serviceInputs.add(serviceInput); return getReceiptInput(subject, collectionMethod, jurisdiction, language, policyUrl, serviceInputs, properties); }
/** * This API is used to add a new purpose category. * * @param purposeCategory purpose category element with name and description. * @return 201 created. Return PurposeCategory element with the category ID. * @throws ConsentManagementException Consent Management Exception. */ public PurposeCategory addPurposeCategory(PurposeCategory purposeCategory) throws ConsentManagementException { validateInputParameters(purposeCategory); PurposeCategory category = getPurposeCategoryDAO(purposeCategoryDAOs).addPurposeCategory(purposeCategory); if (log.isDebugEnabled()) { log.debug("Purpose category created successfully with the name: " + category.getName()); } return category; }
protected void addDefaultPurposeCategory(TenantInfoBean tenantInfoBean) throws StratosException { FrameworkUtils.startTenantFlow(tenantInfoBean.getTenantDomain()); try { PurposeCategory purposeCategory; PurposeCategory defaultPurposeCategory = new PurposeCategory(DEFAULT_PURPOSE_CATEGORY, "Core " + "functionality"); try { purposeCategory = IdentityConsentDataHolder.getInstance().getConsentManager().addPurposeCategory (defaultPurposeCategory); if (log.isDebugEnabled()) { log.debug(String.format("Added default purpose category for tenant: %s. Default purpose category " + "id: %d", tenantInfoBean.getTenantDomain(), purposeCategory.getId())); } } catch (ConsentManagementException e) { throw new StratosException("Error while adding default purpose category for tenant:" + tenantInfoBean .getTenantDomain(), e); } } finally { FrameworkUtils.endTenantFlow(); } }
@Override public PurposeCategory getPurposeCategoryByName(String name, int tenantId) throws ConsentManagementException { PurposeCategory purposeCategory; JdbcTemplate jdbcTemplate = JdbcUtils.getNewTemplate(); try { purposeCategory = jdbcTemplate.fetchSingleRecord(SELECT_PURPOSE_CATEGORY_BY_NAME_SQL, (resultSet, rowNumber) -> new PurposeCategory(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getInt(4)), preparedStatement -> { preparedStatement.setString(1, name); preparedStatement.setInt(2, tenantId); }); } catch (DataAccessException e) { throw ConsentUtils.handleServerException(ErrorMessages.ERROR_CODE_SELECT_PURPOSE_CATEGORY_BY_NAME, name, e); } return purposeCategory; } }
private ReceiptInput buildReceiptInput(String subject, ServiceProvider serviceProvider, String spTenantDomain, List<ClaimMetaData> claims) throws SSOConsentServiceException { String collectionMethod = "Web Form - Sign-in"; String jurisdiction = "NONE"; String language = "us_EN"; String consentType = "EXPLICIT"; String termination = CONSENT_VALIDITY_TYPE_VALID_UNTIL + CONSENT_VALIDITY_TYPE_SEPARATOR + CONSENT_VALIDITY_TYPE_VALID_UNTIL_INDEFINITE; String policyUrl = "NONE"; Purpose purpose = getDefaultPurpose(); PurposeCategory purposeCategory = getDefaultPurposeCategory(); List<PIICategoryValidity> piiCategoryIds = getPiiCategoryValiditiesForClaims(claims, termination); List<ReceiptServiceInput> serviceInputs = new ArrayList<>(); List<ReceiptPurposeInput> purposeInputs = new ArrayList<>(); List<Integer> purposeCategoryIds = new ArrayList<>(); Map<String, String> properties = new HashMap<>(); purposeCategoryIds.add(purposeCategory.getId()); ReceiptPurposeInput purposeInput = getReceiptPurposeInput(consentType, termination, purpose, piiCategoryIds, purposeCategoryIds); purposeInputs.add(purposeInput); ReceiptServiceInput serviceInput = getReceiptServiceInput(serviceProvider, spTenantDomain, purposeInputs); serviceInputs.add(serviceInput); return getReceiptInput(subject, collectionMethod, jurisdiction, language, policyUrl, serviceInputs, properties); }
private PurposeCategory addDefaultPurposeCategory() throws SSOConsentServiceException { PurposeCategory purposeCategory; PurposeCategory defaultPurposeCategory = new PurposeCategory(DEFAULT_PURPOSE_CATEGORY, "For core functionalities of the product"); try { purposeCategory = getConsentManager().addPurposeCategory(defaultPurposeCategory); } catch (ConsentManagementException e) { throw new SSOConsentServiceException("Consent purpose category error", "Error while adding" + " purpose category: " + DEFAULT_PURPOSE_CATEGORY, e); } return purposeCategory; }
private PurposeCategory addDefaultPurposeCategory() throws SSOConsentServiceException { PurposeCategory purposeCategory; PurposeCategory defaultPurposeCategory = new PurposeCategory(DEFAULT_PURPOSE_CATEGORY, "For core functionalities of the product"); try { purposeCategory = getConsentManager().addPurposeCategory(defaultPurposeCategory); } catch (ConsentManagementException e) { throw new SSOConsentServiceException("Consent purpose category error", "Error while adding" + " purpose category: " + DEFAULT_PURPOSE_CATEGORY, e); } return purposeCategory; }
(resultSet, rowNumber) -> new PurposeCategory(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3),