From 3b01230c98dd9d6f05b1076169cac9e0003dee44 Mon Sep 17 00:00:00 2001 From: Guiqiang Zhang Date: Thu, 1 Jun 2017 22:33:18 +0800 Subject: [PATCH 1/3] add permission check for groups --- .../facade/contest/ContestServiceFacade.java | 2 +- .../contest/ejb/ContestServiceFacadeBean.java | 6 ++- .../services/configs/ReferenceDataBean.java | 37 ------------------- .../action/contest/launch/CommonAction.java | 15 +++++++- .../launch/SaveDraftContestAction.java | 11 +++++- 5 files changed, 29 insertions(+), 42 deletions(-) diff --git a/services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ContestServiceFacade.java b/services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ContestServiceFacade.java index d1c661482..29c11866a 100644 --- a/services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ContestServiceFacade.java +++ b/services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ContestServiceFacade.java @@ -1572,5 +1572,5 @@ Set updatePreRegister(TCSubject tcSubject, SoftwareCompetition contest, * @throws ContestServiceException if any database related exception occur * @since 1.8.6 */ - public ProjectGroup[] getAllProjectGroups() throws ContestServiceException; + public ProjectGroup[] getAllProjectGroups(TCSubject tcSubject) throws ContestServiceException; } diff --git a/services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ejb/ContestServiceFacadeBean.java b/services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ejb/ContestServiceFacadeBean.java index 61c517138..84d26474c 100644 --- a/services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ejb/ContestServiceFacadeBean.java +++ b/services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ejb/ContestServiceFacadeBean.java @@ -9312,9 +9312,13 @@ public void cancelSoftwareContestByUser(TCSubject tcSubject, long projectId) thr * @throws ContestServiceException if any database related exception occur * @since 3.7 */ - public ProjectGroup[] getAllProjectGroups() throws ContestServiceException { + public ProjectGroup[] getAllProjectGroups(TCSubject tcSubject) throws ContestServiceException { logger.debug("getAllProjectGroups"); + if (!isRole(tcSubject, ADMIN_ROLE) && !isRole(tcSubject, TC_STAFF_ROLE)) { + return new ProjectGroup[0]; + } + try { return projectServices.getAllProjectGroups(); } catch (ProjectServicesException e) { diff --git a/src/java/main/com/topcoder/direct/services/configs/ReferenceDataBean.java b/src/java/main/com/topcoder/direct/services/configs/ReferenceDataBean.java index 299c000da..31d445e80 100644 --- a/src/java/main/com/topcoder/direct/services/configs/ReferenceDataBean.java +++ b/src/java/main/com/topcoder/direct/services/configs/ReferenceDataBean.java @@ -9,7 +9,6 @@ import java.util.List; import java.util.Map; -import com.topcoder.management.project.ProjectGroup; import com.topcoder.management.project.ProjectPlatform; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.InitializingBean; @@ -335,36 +334,6 @@ public Map> getCatalogToCategoriesMap() { return catalogToCategoriesMap; } - /** - * Getter for {@link #groups} - * - * @return groups - * @since 1.2 - */ - public List getGroups() { - return groups; - } - - /** - * Setter for {@link #groups} - * - * @param groups list of ProjectGroup - * @since 1.2 - */ - public void setGroups(List groups) { - this.groups = groups; - } - - /** - * Getter for {@link #groupMap} - * - * @return groupMap - * @since 1.2 - */ - public Map getGroupMap() { - return groupMap; - } - /** *

* Initialization function. It will be called by Spring context. @@ -393,12 +362,6 @@ public void afterPropertiesSet() throws Exception { platformMap.put(platform.getId(), platform); } - groups = Arrays.asList(getContestServiceFacade().getAllProjectGroups()); - groupMap = new HashMap(); - for (ProjectGroup group : groups) { - groupMap.put(group.getId(), group); - } - // categories categories = new ArrayList(); categoryMap = new HashMap(); diff --git a/src/java/main/com/topcoder/direct/services/view/action/contest/launch/CommonAction.java b/src/java/main/com/topcoder/direct/services/view/action/contest/launch/CommonAction.java index ce9a0bacd..70119341b 100644 --- a/src/java/main/com/topcoder/direct/services/view/action/contest/launch/CommonAction.java +++ b/src/java/main/com/topcoder/direct/services/view/action/contest/launch/CommonAction.java @@ -35,6 +35,7 @@ import com.topcoder.service.facade.project.DAOFault; import org.apache.commons.lang3.StringEscapeUtils; import org.codehaus.jackson.map.ObjectMapper; +import com.topcoder.management.project.ProjectGroup; /** *

@@ -324,7 +325,7 @@ public String getContestConfigs() throws Exception { configs.put("copilotFees", ConfigUtils.getCopilotFees()); configs.put("billingInfos", getBillingProjectInfos()); - configs.put("groups", getReferenceDataBean().getGroups()); + configs.put("groups", getAllProjectGroups()); setResult(configs); return SUCCESS; } @@ -446,6 +447,18 @@ private List> getBillingProjectInfos() throws DAOFault { return billings; } + /** + *

+ * Gets all project groups + *

+ * + * @return the billing project information. each project is represented in a map object. + * @throws DAOFault if a DAO error occurs + */ + private List getAllProjectGroups() throws DAOFault { + return Arrays.asList(getContestServiceFacade().getAllProjectGroups(DirectStrutsActionsHelper.getTCSubjectFromSession())); + } + /** *

diff --git a/src/java/main/com/topcoder/direct/services/view/action/contest/launch/SaveDraftContestAction.java b/src/java/main/com/topcoder/direct/services/view/action/contest/launch/SaveDraftContestAction.java index 7394b6072..5f821728e 100644 --- a/src/java/main/com/topcoder/direct/services/view/action/contest/launch/SaveDraftContestAction.java +++ b/src/java/main/com/topcoder/direct/services/view/action/contest/launch/SaveDraftContestAction.java @@ -1011,11 +1011,18 @@ public boolean evaluate(Object object) { populateSoftwareCompetition(softwareCompetition); } - //set group + //set groups if (groups != null && groups.size() > 0) { List groupsList = new ArrayList(); + // get the TCSubject from session + ProjectGroup[] allProjectGroups = getContestServiceFacade().getAllProjectGroups(DirectStrutsActionsHelper.getTCSubjectFromSession()); for (String groupId : groups) { - groupsList.add(getReferenceDataBean().getGroupMap().get(Long.valueOf(groupId))); + for (ProjectGroup projectGroup : allProjectGroups) { + if (Long.valueOf(projectGroup.getId()).equals(groupId)) { + groupsList.add(projectGroup); + } + } + } softwareCompetition.getProjectHeader().setGroups(groupsList); } else { From 7b707feacb1e34fe2c3013266c1da61de5c962a1 Mon Sep 17 00:00:00 2001 From: Guiqiang Zhang Date: Thu, 1 Jun 2017 22:45:54 +0800 Subject: [PATCH 2/3] remove useless fields --- .../services/configs/ReferenceDataBean.java | 24 +------------------ 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/src/java/main/com/topcoder/direct/services/configs/ReferenceDataBean.java b/src/java/main/com/topcoder/direct/services/configs/ReferenceDataBean.java index 31d445e80..b74e01564 100644 --- a/src/java/main/com/topcoder/direct/services/configs/ReferenceDataBean.java +++ b/src/java/main/com/topcoder/direct/services/configs/ReferenceDataBean.java @@ -27,15 +27,7 @@ * *

* - *

- * Version 1.2 (TOPCODER - SUPPORT GROUPS CONCEPT FOR CHALLENGES) : - *

    - *
  • Added {@link #groups}list of all project_group_lu
  • - *
  • Added {@link #groupMap}map project_group_id to its object
  • - *
  • Updated {@link #afterPropertiesSet()} to set groups and groupMap
  • - *
- *

- * @version 1.2 + * @version 1.1 * @author GreatKevin, TCSCODER */ public class ReferenceDataBean implements InitializingBean { @@ -144,20 +136,6 @@ public class ReferenceDataBean implements InitializingBean { */ private Map> catalogToCategoriesMap; - /** - * Challenge groups - * - * @since 1.2 - */ - private List groups; - - /** - * Map of challenge group if to its object - * - * @since 1.2 - */ - private Map groupMap; - /** *

* Gets the contest service facade. From aede937b40973077b7a8e09ca0c705beffb2e39b Mon Sep 17 00:00:00 2001 From: Guiqiang Zhang Date: Thu, 1 Jun 2017 23:02:42 +0800 Subject: [PATCH 3/3] fix throw exception --- .../services/view/action/contest/launch/CommonAction.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java/main/com/topcoder/direct/services/view/action/contest/launch/CommonAction.java b/src/java/main/com/topcoder/direct/services/view/action/contest/launch/CommonAction.java index 70119341b..42eb04a2b 100644 --- a/src/java/main/com/topcoder/direct/services/view/action/contest/launch/CommonAction.java +++ b/src/java/main/com/topcoder/direct/services/view/action/contest/launch/CommonAction.java @@ -453,9 +453,9 @@ private List> getBillingProjectInfos() throws DAOFault { *

* * @return the billing project information. each project is represented in a map object. - * @throws DAOFault if a DAO error occurs + * @throws ContestServiceException if contest service exception occurs */ - private List getAllProjectGroups() throws DAOFault { + private List getAllProjectGroups() throws ContestServiceException { return Arrays.asList(getContestServiceFacade().getAllProjectGroups(DirectStrutsActionsHelper.getTCSubjectFromSession())); }