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;