Con questo script che può essere creato all’interno di un Listener di Scriptrunner è possibile recuperare tutti i gruppi di un utente ed impostare come preferite tutte le dashboard che sono state condivise con i gruppi di utenti ai quali si appartiene.

Si può facilmente modificare il codice per modificare i criteri di impostazione con le condizioni volute.

L’evento al quale è collegato lo script è “UserAuthenticatedEvent”

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.portal.PortalPage
import com.atlassian.jira.portal.PortalPageManager
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.favourites.FavouritesManager
import com.atlassian.jira.bc.portal.DefaultPortalPageService
import com.atlassian.jira.user.util.DefaultUserManager
import com.atlassian.crowd.event.user.UserAuthenticatedEvent

def favouritesManager = (FavouritesManager) ComponentAccessor.getOSGiComponentInstanceOfType(FavouritesManager.class)
def ppm = ComponentAccessor.getOSGiComponentInstanceOfType(com.atlassian.jira.portal.PortalPageManager)
def pps = ComponentAccessor.getOSGiComponentInstanceOfType(com.atlassian.jira.bc.portal.PortalPageService)

import com.atlassian.jira.event.AbstractEvent
import com.atlassian.jira.event.user.UserEvent

def newUserEvent = event as UserAuthenticatedEvent;
def appUser = newUserEvent.getUser(); 
ApplicationUser cu = ComponentAccessor.getUserManager().getUserByName(appUser.getName());

def gm = ComponentAccessor.getGroupManager()
def currentUserGroups = gm.getGroupNamesForUser(cu)
def allPortalPages = ppm.getAll()
List<PortalPage> dashboards = []
List<Boolean> present = []

allPortalPages.foreach { PortalPage a ->
  a.getPermissions().getPermissionSet().each { b ->
    def isGroup = b.getType().toString() == 'group'
    def group = b.getParam1()
    if (isGroup && currentUserGroups.contains(group)) {
  		dashboards.add(a)	
        present.add(pps.isFavourite(cu,a))
    }
  }
}

if (present.contains(true)) {
  log.info("Already set")
  	return true;
} else {
  dashboards.each { PortalPage a ->
    log.info(a.getName() + " was added");
    if (!pps.isFavourite(cu,a))
    	favouritesManager.addFavourite(cu, a)
  }
}

return true;

 

 

Leave a Comment