user()->public_id; } protected function organization(Request $request): Organization { $organization = $request->attributes->get('care.organization') ?? app(OrganizationResolver::class)->resolveForUser($request->user()); abort_unless($organization, 404); return $organization; } protected function member(Request $request): ?Member { return $request->attributes->get('care.member') ?? app(OrganizationResolver::class)->memberFor($request->user(), $this->organization($request)); } protected function authorizeAbility(Request $request, string $ability): void { abort_unless( app(CarePermissions::class)->can($this->member($request), $ability), 403, ); } protected function authorizeOwner(Request $request, Model $model): void { abort_unless($model->getAttribute('owner_ref') === $this->ownerRef($request), 404); } protected function scopeToBranch(Request $request, Builder $query, string $column = 'branch_id'): Builder { $branchId = app(OrganizationResolver::class)->branchScope($this->member($request)); if ($branchId !== null) { $query->where($column, $branchId); } return $query; } }