user()->tokenCan('companies:read'), 403); $companies = Company::withoutGlobalScopes() ->where(function ($query) use ($request): void { $query->where('owner_user_id', $request->user()->id) ->orWhereHas('users', fn ($users) => $users->whereKey($request->user()->id)); }) ->orderBy('name') ->paginate(min((int) $request->query('per_page', 25), 100)); return CompanyResource::collection($companies); } public function store(Request $request) { abort(404); } public function show(Request $request, int $company): CompanyResource { abort_unless($request->user()->tokenCan('companies:read'), 403); $company = Company::withoutGlobalScopes() ->whereKey($company) ->where(function ($query) use ($request): void { $query->where('owner_user_id', $request->user()->id) ->orWhereHas('users', fn ($users) => $users->whereKey($request->user()->id)); }) ->first(); abort_unless($company !== null, 403); return CompanyResource::make($company); } public function update(Request $request, string $id) { abort(404); } public function destroy(string $id) { abort(404); } }