user()) { return $next($request); } $account = ladill_account() ?? $user; $ownerRef = (string) $account->public_id; $member = $this->members->memberFor($user, $ownerRef); $scope = $this->members->locationScope($member, $ownerRef, $user); $request->attributes->set('pos.member', $member); $request->attributes->set('pos.locationScope', $scope); $location = $this->resolveLocation($request, $ownerRef, $scope); $request->attributes->set('actingLocation', $location); if (! $request->is('api/*')) { View::share('actingLocation', $location); View::share('accessibleLocations', $this->locations->accessible($ownerRef, $scope)); View::share('posMember', $member); View::share('canManageBranches', $this->members->canManageBranches($member, $ownerRef, $user)); View::share('canManageTeam', $this->members->canManageTeam($member, $ownerRef, $user)); } return $next($request); } private function resolveLocation(Request $request, string $ownerRef, ?int $scope): PosLocation { if ($scope !== null) { return PosLocation::owned($ownerRef)->whereKey($scope)->firstOrFail(); } if (! $request->is('api/*')) { $sessionId = (int) $request->session()->get('ladill_pos_location', 0); if ($sessionId > 0) { $fromSession = PosLocation::owned($ownerRef)->whereKey($sessionId)->first(); if ($fromSession) { return $fromSession; } } } return $this->locations->ensureDefault($ownerRef); } }