public boolean isSystemDashboard() { return portalPage.isSystemDefaultPortalPage(); } }
@Override public boolean hasPermissionToUse(final ApplicationUser user, final PortalPage portalPage) { notNull("portalPage", portalPage); return portalPage.isSystemDefaultPortalPage() || isSharedWith(portalPage, user); }
public boolean isWritableBy(final DashboardId dashboardId, @javax.annotation.Nullable final ApplicationUser user) { final JiraServiceContext context = new JiraServiceContextImpl(user); final PortalPage portalPage = portalPageService.getPortalPage(context, Long.valueOf(dashboardId.value())); //JRA-17497: If the state changes such that a user doesn't have permission to see a dashboard any longer // while a user is viewing a dashboard, then the portalPage may be null. if(portalPage == null) { return false; } if(!portalPage.isSystemDefaultPortalPage()) { //if this is not the system default page, just check if the user has permission to update this page return portalPageService.validateForUpdate(context, portalPage); } //if this is the system default, and we do allow editing of it, the check if the user has permission. return allowEditingOfDefaultDashboard.get() && portalPageService.validateForUpdate(context, portalPage); }
private boolean isShared(final SharedEntity entity) { boolean isSystemDashboard = false; //JRADEV-6820 : Exclude the System dashboard if (entity.getEntityType().equals(PortalPage.ENTITY_TYPE)) { isSystemDashboard = ((PortalPage)entity).isSystemDefaultPortalPage(); } return !entity.getPermissions().isPrivate() && !isSystemDashboard; } }
private void assertCreate(final PortalPage portalPage) { notNull("portalPage", portalPage); if (!portalPage.isSystemDefaultPortalPage()) { notNull("portalPage.owner", portalPage.getOwner()); } notNull("portalPage.pageName", portalPage.getName()); } }
private PortalPage setRelatedState(final PortalPage portalPage) { if (portalPage != null) { final PortalPage.Builder builder = PortalPage.portalPage(portalPage); //the system default dashboard should always have the global permission if (portalPage.isSystemDefaultPortalPage()) { builder.permissions(SharePermissions.GLOBAL); } else { builder.permissions(shareManager.getSharePermissions(portalPage)); } return builder.build(); } return null; }
public Builder portalPage(PortalPage page) { id = page.getId(); name = page.getName(); description = page.getDescription(); isSystemDashboard = page.isSystemDefaultPortalPage(); favouriteCount = page.getFavouriteCount(); permissions = page.getPermissions(); layout = page.getLayout(); owner = page.getOwner(); version = page.getVersion(); return this; }
else if (portalPage.isSystemDefaultPortalPage())
public boolean validateForUpdate(final JiraServiceContext serviceCtx, final PortalPage portalPage) { Assertions.notNull("serviceCtx", serviceCtx); Assertions.notNull("portalPage", portalPage); if (StringUtils.isBlank(portalPage.getName())) { serviceCtx.getErrorCollection().addError("portalPageName", serviceCtx.getI18nBean().getText("admin.errors.portalpages.must.specify.name")); } else if (portalPage.isSystemDefaultPortalPage()) { checkSystemDefaultPageForUpdate(serviceCtx, portalPage); } else { final boolean ok = checkOwnerShipAndExistenceAndSharePermissions(serviceCtx, portalPage); if (ok && (serviceCtx.getLoggedInApplicationUser() != null)) { final PortalPage portalPageByName = portalPageManager.getPortalPageByName(serviceCtx.getLoggedInApplicationUser(), portalPage.getName()); if ((portalPageByName != null) && !portalPage.getId().equals(portalPageByName.getId())) { serviceCtx.getErrorCollection().addError("portalPageName", serviceCtx.getI18nBean().getText("admin.errors.portalpages.same.name")); } } } if(StringUtils.isNotBlank(portalPage.getDescription()) && portalPage.getDescription().length() > 255) { serviceCtx.getErrorCollection().addError("portalPageDescription", serviceCtx.getI18nBean().getText("admin.errors.portalpages.description.too.long")); } return !serviceCtx.getErrorCollection().hasAnyErrors(); }
/** * Check that a user has permission to change the System Default PortalPage. * <p/> * Package level by design for testing * * @param serviceCtx the JiraServiceContext in play * @param portalPage the PortalPage to check * * @return true if all is ok. The JiraServiceContext error messages will be filled out if false. */ boolean checkSystemDefaultPageForUpdate(final JiraServiceContext serviceCtx, final PortalPage portalPage) { if (portalPage.isSystemDefaultPortalPage()) { // then only admin should be able to change the page. if (!permissionManager.hasPermission(Permissions.ADMINISTER, serviceCtx.getLoggedInApplicationUser())) { serviceCtx.getErrorCollection().addErrorMessage(serviceCtx.getI18nBean().getText("admin.errors.portalpages.must.be.admin.change.sysdefault")); return false; } else { // make sure that the dashboard is always publicly available. //JRA-15573: We don't need to check the permissions. We want the admin to be //able save the page even when they don't have share permission (the page must be shared globally). return checkSystemDefaultSharePermissions(serviceCtx, portalPage.getPermissions()); } } return !serviceCtx.getErrorCollection().hasAnyErrors(); }
public PortalPage update(final PortalPage portalPage) { Assertions.notNull("portalPage", portalPage); Assertions.notNull("portalPage.id", portalPage.getId()); if (!portalPage.isSystemDefaultPortalPage()) { Assertions.notNull("portalPage.owner", portalPage.getOwner()); } final GenericValue gv = findByPrimaryKey(portalPage.getId()); gv.setString(Column.PAGENAME, portalPage.getName()); gv.setString(Column.DESCRIPTION, portalPage.getDescription()); if (!portalPage.isSystemDefaultPortalPage()) { gv.setString(Column.USERNAME, portalPage.getOwner().getKey()); } else { gv.remove(Column.USERNAME); } gv.remove(Column.FAVCOUNT); gv.setString(Column.LAYOUT, portalPage.getLayout().name()); delegator.store(gv); return getPortalPage(portalPage.getId()); }
if (!currentPortalPageFavourite && (hasPreferredPages || !portalPage.isSystemDefaultPortalPage())) if (!hasPreferredPages && portalPage.isSystemDefaultPortalPage() && doesUserOwnPages())
@Override public String doDefault() { final PortalPage portalPage = getPortalPage(); if (portalPage != null) { if (portalPage.isSystemDefaultPortalPage()) { addErrorMessage(getText("admin.errors.user.cannot.edit.default.dashboard")); return ERROR; } else { portalPageName = portalPage.getName(); portalPageDescription = portalPage.getDescription(); setPermissions(portalPage.getPermissions()); setFavourite(favouritesService.isFavourite(getLoggedInUser(), portalPage)); } } else { addErrorMessage(getText("admin.errors.user.must.select.page")); return ERROR; } return INPUT; }
public boolean validateForDelete(final JiraServiceContext serviceCtx, final Long portalPageId) { Assertions.notNull("serviceCtx", serviceCtx); Assertions.notNull("portalPageId", portalPageId); final ApplicationUser user = serviceCtx.getLoggedInApplicationUser(); final ErrorCollection errorCollection = serviceCtx.getErrorCollection(); if (user == null) { errorCollection.addErrorMessage(serviceCtx.getI18nBean().getText("admin.errors.portalpages.owned.anonymous.user")); } else { final PortalPage page = portalPageManager.getPortalPageById(portalPageId); if (page == null) { errorCollection.addErrorMessage(serviceCtx.getI18nBean().getText("admin.errors.portalpages.nonexistent")); } else if (page.isSystemDefaultPortalPage()) { errorCollection.addErrorMessage(serviceCtx.getI18nBean().getText("admin.errors.portalpages.not.delete.system.default")); } else if (!user.equals(page.getOwner())) { errorCollection.addErrorMessage(serviceCtx.getI18nBean().getText("admin.errors.portalpages.must.be.owner")); } } return !errorCollection.hasAnyErrors(); }
public PortalPage update(final PortalPage portalPage) { Assertions.notNull("portalPage", portalPage); Assertions.notNull("portalPage.id", portalPage.getId()); final ApplicationUser newOwner = portalPage.getOwner(); if (!portalPage.isSystemDefaultPortalPage()) { Assertions.notNull("portalPage.owner", newOwner); } PortalPage returnPage = null; PortalPage oldPortalPage = null; try { oldPortalPage = delegateStore.getPortalPage(portalPage.getId()); returnPage = delegateStore.update(portalPage); } finally { cacheById.remove(portalPage.getId()); if (portalPage.getOwner() != null && (oldPortalPage == null || portalPage.getOwner() != oldPortalPage.getOwner())) { cacheByUser.remove(portalPage.getOwner().getKey()); } if (oldPortalPage != null && oldPortalPage.getOwner() != portalPage.getOwner()) { cacheByUser.remove(oldPortalPage.getOwner().getKey()); } } return returnPage; }