Skip to content

Commit e2c632a

Browse files
authored
Merge pull request #5666 from ProcessMaker/observation/FOUR-12450
FOUR-12450: Filter only the Projects that belong to the User
2 parents 7ac2752 + 990a5df commit e2c632a

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

ProcessMaker/Traits/SearchAutocompleteTrait.php

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -190,21 +190,38 @@ private function searchProjects($query)
190190
$projectModalClass = 'ProcessMaker\Package\Projects\Models\Project';
191191
$project = new $projectModalClass;
192192

193-
if (empty($query)) {
194-
$results = $project->get();
195-
} else {
196-
$results = $project->pmql('title = "' . $query . '"', function ($expression) {
197-
return function ($query) use ($expression) {
198-
$query->where($expression->field->field(), 'LIKE', '%' . $expression->value->value() . '%');
199-
};
200-
})->get();
201-
}
193+
$projectMemberModalClass = 'ProcessMaker\Package\Projects\Models\ProjectMember';
194+
$projectMember = new $projectMemberModalClass;
195+
$user = Auth::user();
196+
$ids = $projectMember->getProjectWhereTheUserIsMember($user);
197+
198+
$results = empty($query)
199+
? $this->searchProjectsNoQuery($project, $user, $ids)
200+
: $this->searchProjectsWithQuery($project, $query, $user, $ids);
202201

203202
return $results->map(function ($request) {
204203
return $request->only(['id', 'title']);
205204
});
206205
}
207206

207+
private function searchProjectsNoQuery($project, $user, $ids)
208+
{
209+
return $project->where(function ($query) use ($user, $ids) {
210+
$query->owner($user->id)->orWhereIn('id', $ids);
211+
})->get();
212+
}
213+
214+
private function searchProjectsWithQuery($project, $query, $user, $ids)
215+
{
216+
return $project->pmql('title = "' . $query . '"', function ($expression) use ($user, $ids) {
217+
return function ($query) use ($expression, $user, $ids) {
218+
$query->owner($user->id)
219+
->orWhereIn('id', $ids)
220+
->where($expression->field->field(), 'LIKE', '%' . $expression->value->value() . '%');
221+
};
222+
})->get();
223+
}
224+
208225
private function searchProjectMembers($query)
209226
{
210227
return (object) [

resources/js/components/shared/PmqlInputFilters.vue

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -695,10 +695,9 @@ export default {
695695
this.allLoading(true);
696696
697697
const { data } = await ProcessMaker.apiClient.get("/projects/search?type=project_all");
698-
699-
if (data.projects) {
700-
this.projectOptions = data.projects;
701-
}
698+
699+
this.projectOptions = data.projects ? data.projects : [];
700+
702701
if (data.members?.users) {
703702
const usersWithMappedNames = data.members.users
704703
.filter(user => !!user)

0 commit comments

Comments
 (0)