Skip to content

Commit 05b2ea4

Browse files
authored
fix: Process isn't displayed in I manage filter if I'm a member only in its management space - EXO-76971
Before this change, when UserA is a member in SpaceA and isn't member in spaceB and Admin creates ProcessX with spaceA as space manager and SpaceB as space requester then UserA opens the process app and clicks on I manage filter, filter I manage isn't displayed for userA . To resolve this problem, add a condition in the buildWorkflowQuery of the WorkFlowDAO Class if the filter is I manage I filter only by managers otherwise I can filter by managers and participators. After this change, all processes where I'm a member of their managing space should be displayed in I manage filter. (cherry picked from commit d522f6d)
1 parent 9e013f7 commit 05b2ea4

File tree

2 files changed

+33
-25
lines changed

2 files changed

+33
-25
lines changed

processes-services/src/main/java/org/exoplatform/processes/dao/WorkFlowDAO.java

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -55,33 +55,41 @@ private String buildWorkflowQuery(ProcessesFilter processesFilter, List<String>
5555
String q = processesFilter.getQuery();
5656
Boolean enabled = processesFilter.getEnabled();
5757
Boolean manager = processesFilter.getManager();
58+
boolean managerProcess = memberships.stream().anyMatch(m -> m.endsWith("platform/processes"));
59+
String query = " ( workFlow.title like '%" + q + "%' OR workFlow.description like '%" + q + "%' OR workFlow.summary like '%" + q + "%' )";
5860
String queryString = "SELECT DISTINCT workFlow FROM WorkFlow workFlow";
59-
if(memberships != null) {
60-
queryString = queryString + " LEFT JOIN workFlow.manager manager "
61-
+ " LEFT JOIN workFlow.participator participator ";
62-
}
63-
if(StringUtils.isNotEmpty(q) || memberships != null || enabled != null){
64-
queryString = queryString + " WHERE";
65-
if (StringUtils.isNotEmpty(q)){
66-
queryString = queryString + " ( workFlow.title like '%" + q + "%'";
67-
queryString = queryString + " OR workFlow.description like '%" + q + "%'";
68-
queryString = queryString + " OR workFlow.summary like '%" + q + "%' )";
69-
queryString = queryString + " AND";
70-
}
71-
if ( enabled != null){
72-
queryString = queryString + " workFlow.enabled = " + enabled;
73-
queryString = queryString + " AND";
61+
if (enabled != null || manager == true || managerProcess == false) {
62+
if(memberships != null) {
63+
if ( Boolean.FALSE.equals(manager)) {
64+
queryString = queryString + " LEFT JOIN workFlow.manager manager";
65+
}
66+
queryString = queryString + " LEFT JOIN workFlow.participator participator";
7467
}
75-
if ( memberships != null){
76-
queryString = queryString + " ( manager IN ('"+String.join("','", getMembersShipGroup(memberships))+"') ";
77-
if ( Boolean.FALSE.equals(manager)){
78-
queryString = queryString + " OR participator IN ('"+String.join("','", memberships)+"')) ";
79-
} else {
80-
queryString = queryString + " AND participator IN ('"+String.join("','", memberships)+"')) ";
68+
if(StringUtils.isNotEmpty(q) || memberships != null || enabled != null){
69+
queryString = queryString + " WHERE";
70+
if (StringUtils.isNotEmpty(q)){
71+
queryString = queryString + query;
72+
queryString = queryString + " AND";
73+
}
74+
if ( enabled != null){
75+
queryString = queryString + " workFlow.enabled = " + enabled;
76+
queryString = queryString + " AND";
77+
}
78+
if ( memberships != null){
79+
if ( Boolean.FALSE.equals(manager)){
80+
queryString = queryString + " ( manager IN ('"+String.join("','", getMembersShipGroup(memberships))+"') ";
81+
queryString = queryString + " OR participator IN ('"+String.join("','", memberships)+"')) ";
82+
} else {
83+
queryString = queryString + " participator IN ('"+String.join("','", memberships)+"') ";
84+
}
85+
}
86+
if (queryString.endsWith(" AND")) {
87+
queryString = queryString.substring(0, queryString.length() - 4);
8188
}
8289
}
83-
if (queryString.endsWith(" AND")) {
84-
queryString = queryString.substring(0, queryString.length() - 4);
90+
} else {
91+
if (StringUtils.isNotEmpty(q)) {
92+
queryString = queryString + " WHERE" + query;
8593
}
8694
}
8795

@@ -90,7 +98,8 @@ private String buildWorkflowQuery(ProcessesFilter processesFilter, List<String>
9098

9199
private List<String> getMembersShipGroup(List<String> memberships) {
92100
return memberships.stream()
93-
.map(s -> (!s.startsWith("manager:/") && !s.startsWith("member:/")) ? s : s.replace("manager:","").replace("member:","") )
101+
.map(s -> (!s.startsWith("manager:/") && !s.startsWith("member:/") && !s.startsWith("*:/"))
102+
? s : s.replace("manager:","").replace("member:","").replace("*:",""))
94103
.collect(Collectors.toList());
95104
}
96105

processes-webapp/src/main/webapp/vue-app/processes/components/WorkFlowCardItem.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
<template #activator="{ on, attrs }">
2020
<v-btn
2121
:class="isMobile ? 'three-dots mr-n2 mt-3' : 'three-dots mt-1'"
22-
dark
2322
icon
2423
v-bind="attrs"
2524
v-on="!isMobileMenu && on"

0 commit comments

Comments
 (0)