Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

  1. Add “gdpr-api” library to pom.xml

  2. Implement IGDPRAnonymizer

...

Code Block
languagejava
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

  1. 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)

  2. Install your app to the same server

  3. Open the “Data Cleaner” module https://%your-jira-server%/jira/secure/admin/actonic-gdpr-data-cleaner.jspa

  4. Find your app in the “Anonymization post-functions” list

  5. Try to search some personal content for a user, who is working with your app (check that your post function was selected)

  6. Look at the search results at https://%your-jira-server%/jira/secure/admin/actonic-gdpr-data-cleaner-results.jspa?templateId=-1

...