88use App \Http \Controllers \Controller ;
99use App \Http \Resources \ServerProviderResource ;
1010use App \Models \ServerProvider ;
11+ use App \Support \TokenProjectScope ;
1112use Illuminate \Http \JsonResponse ;
1213use Illuminate \Http \Request ;
1314use Illuminate \Http \Resources \Json \ResourceCollection ;
@@ -28,9 +29,17 @@ public function index(): ResourceCollection
2829 {
2930 $ this ->authorize ('viewAny ' , ServerProvider::class);
3031
31- $ serverProviders = user ()->serverProviders ()->simplePaginate (25 );
32+ $ user = user ();
33+ $ serverProviders = $ user ->serverProviders ();
34+
35+ if (TokenProjectScope::restricted ($ user )) {
36+ $ serverProviders ->where (function ($ query ) use ($ user ): void {
37+ $ query ->whereNull ('project_id ' )
38+ ->orWhereIn ('project_id ' , TokenProjectScope::allowedProjectIds ($ user ));
39+ });
40+ }
3241
33- return ServerProviderResource::collection ($ serverProviders );
42+ return ServerProviderResource::collection ($ serverProviders-> simplePaginate ( 25 ) );
3443 }
3544
3645 #[Post('/ ' , name: 'api.user.server-providers.create ' , middleware: 'ability:write ' )]
@@ -39,7 +48,11 @@ public function create(Request $request): ServerProviderResource
3948 $ this ->authorize ('create ' , ServerProvider::class);
4049
4150 $ user = user ();
42- $ serverProvider = app (CreateServerProvider::class)->create ($ user , $ request ->all ());
51+ $ projectId = $ user ->currentProject ?->id;
52+
53+ abort_unless (TokenProjectScope::canCreate ($ user , $ projectId , $ request ->boolean ('global ' )), 403 );
54+
55+ $ serverProvider = app (CreateServerProvider::class)->create ($ user , $ request ->all (), $ projectId );
4356
4457 return new ServerProviderResource ($ serverProvider );
4558 }
0 commit comments