Integration API
Overview
“GDPR API” is a library for Atlassian plugins "GDPR (DSGVO) and Security for Jira" and "GDPR (DSGVO) and Security for Confluence" (https://marketplace.atlassian.com/apps/1218962/gdpr-dsgvo-and-security-for-jira?hosting=server&tab=overview, https://marketplace.atlassian.com/apps/1219041/gdpr-dsgvo-and-security-for-confluence?hosting=server&tab=overview). The library provides the API for integration with 3rd party apps and plugins for Jira and Confluence. Through this integration and using the library other plugins may extent anonymization functionality and clean-up some special content during the "User Anonymization process".
Anonymization architecture
Steps to build an integration
Add “gdpr-api” library to pom.xml
Implement
IGDPRAnonymizer
pom.xml example:
<dependencies>
<dependency>
<groupId>de.actonic</groupId>
<artifactId>gdpr-api</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
...
<Export-Package>
de.actonic.gdpr.api.*,
</Export-Package>
...
<DynamicImport-Package>
de.actonic.jira.gdpr.api.*;resolution:="optional",
</DynamicImport-Package> |
Anonymization function implementation example:
package com.other.test.testGDPRApiPlugin;
import java.util.*;
import com.atlassian.jira.component.*;
import de.actonic.gdpr.api.*;
import org.springframework.beans.factory.*;
import org.springframework.stereotype.*;
@Component
public class Anonymizer implements IGDPRAnonymizer, InitializingBean, DisposableBean {
...
// class constructor and some other unnecessary parts are skipped
...
@Override
public List<GDPRAnonymizeObject> search(List<String> sourceUserKeys) {
List<GDPRAnonymizeObject> anonymizeObjects = new ArrayList<>();
for (String sourceUserKey : sourceUserKeys) {
ApplicationUser applicationUser = userManager.getUserByKey(sourceUserKey);
if (applicationUser != null) {
Collection<PortalPage> portalPages = portalPageManager.getAllOwnedPortalPages(applicationUser);
for (PortalPage portalPage : portalPages) {
anonymizeObjects.add(new GDPRAnonymizeObject(portalPage.getName(), "Dashboard", "/secure/Dashboard.jspa?selectPageId=" + portalPage.getId()));
}
}
}
return anonymizeObjects;
}
@Override
public List<GDPRAnonymizeObject> anonymize(List<String> sourceUserKeys, String targetUserKey) {
// here you anonymize all data by incoming parameters and return the result
return null;
}
@Override
public void stop() {
// here you interrupt the search/anonymization process
}
@Override
public String getPluginName() {
return "Plugin #2";
}
@Override
public String getAnonymizerName() {
return "User actions anonymizer";
}
@Override
public void afterPropertiesSet() throws Exception {
IGDPRAnonymizeService anonymizeService = ComponentAccessor.getOSGiComponentInstanceOfType(IGDPRAnonymizeService.class);
if (anonymizeService != null) {
anonymizeService.addAnonymizer(this);
}
}
@Override
public void destroy() throws Exception {
IGDPRAnonymizeService anonymizeService = ComponentAccessor.getOSGiComponentInstanceOfType(IGDPRAnonymizeService.class);
if (anonymizeService != null) {
anonymizeService.removeAnonymizer(this);
}
}
} |
How to check the integration
Install the latest version of GDPR (DSGVO) and Security for Jira (https://marketplace.atlassian.com/apps/1218962/gdpr-dsgvo-and-security-for-jira?hosting=server&tab=overview)
Install your app to the same server
Open the “Data Cleaner” module https://%your-jira-server%/jira/secure/admin/actonic-gdpr-data-cleaner.jspa
Find your app in the “Anonymization post-functions” list
Try to search some personal content for a user, who is working with your app (check that your post function was selected)
Look at the search results at https://%your-jira-server%/jira/secure/admin/actonic-gdpr-data-cleaner-results.jspa?templateId=-1
In case of any difficulties please contact us by https://actonic.atlassian.net/servicedesk/customer/portal/8