From e73c9b5f98adcc0f7d33376f6f724c1f0b977506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=8F=94=EF=B8=8F=20Peak?= <122374094+peaklabs-dev@users.noreply.github.com> Date: Tue, 11 Feb 2025 17:07:57 +0100 Subject: [PATCH] fix: system-wide GitHub apps (#5114) - fix(ui): system-wide GitHub Apps are not shown in the create a new Application dialog - fix: query logic error that shows all system-wide apps, regardless of whether they are public or private. - fix: clicking on a system-wide GitHub app from a team other than the one that created it resulted in a 404 error. --- app/Models/GithubApp.php | 19 ++++++++++++++++--- app/Models/Team.php | 14 ++++++++------ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/Models/GithubApp.php b/app/Models/GithubApp.php index 0b0e93b12..5550df81f 100644 --- a/app/Models/GithubApp.php +++ b/app/Models/GithubApp.php @@ -33,17 +33,30 @@ protected static function booted(): void public static function ownedByCurrentTeam() { - return GithubApp::whereTeamId(currentTeam()->id); + return GithubApp::where(function ($query) { + $query->where('team_id', currentTeam()->id) + ->orWhere('is_system_wide', true); + }); } public static function public() { - return GithubApp::whereTeamId(currentTeam()->id)->whereisPublic(true)->whereNotNull('app_id')->get(); + return GithubApp::where(function ($query) { + $query->where(function ($q) { + $q->where('team_id', currentTeam()->id) + ->orWhere('is_system_wide', true); + })->where('is_public', true); + })->whereNotNull('app_id')->get(); } public static function private() { - return GithubApp::whereTeamId(currentTeam()->id)->whereisPublic(false)->whereNotNull('app_id')->get(); + return GithubApp::where(function ($query) { + $query->where(function ($q) { + $q->where('team_id', currentTeam()->id) + ->orWhere('is_system_wide', true); + })->where('is_public', false); + })->whereNotNull('app_id')->get(); } public function team() diff --git a/app/Models/Team.php b/app/Models/Team.php index 07959dd16..467cf45bc 100644 --- a/app/Models/Team.php +++ b/app/Models/Team.php @@ -248,15 +248,17 @@ public function sources() { $sources = collect([]); $github_apps = GithubApp::where(function ($query) { - $query->where('team_id', $this->id) - ->Where('is_public', false) - ->orWhere('is_system_wide', true); + $query->where(function ($q) { + $q->where('team_id', $this->id) + ->orWhere('is_system_wide', true); + })->where('is_public', false); })->get(); $gitlab_apps = GitlabApp::where(function ($query) { - $query->where('team_id', $this->id) - ->Where('is_public', false) - ->orWhere('is_system_wide', true); + $query->where(function ($q) { + $q->where('team_id', $this->id) + ->orWhere('is_system_wide', true); + })->where('is_public', false); })->get(); return $sources->merge($github_apps)->merge($gitlab_apps);