/** * @param ReservationView $reservationView * @param UserSession $userSession * @return bool */ private function IsAuthorized(ReservationView $reservationView, UserSession $userSession) { if (!$this->IsCached($reservationView, $userSession)) { $this->Cache($reservationView, $userSession, $this->reservationAuthorization->CanViewDetails($reservationView, $userSession)); } return $this->GetCachedValue($reservationView, $userSession); }
public function LoadByReferenceNumber($referenceNumber, $user) { $reservation = $this->reservationViewRepository->GetReservationForEditing($referenceNumber); if ($this->reservationAuthorization->CanEdit($reservation, $user)) { return $reservation; } return null; }
public function PageLoad() { $referenceNumber = $this->page->GetReferenceNumber(); Log::Debug('User: %s, Approving reservation with reference number %s', $this->userSession->UserId, $referenceNumber); $series = $this->persistenceService->LoadByReferenceNumber($referenceNumber); if ($this->authorization->CanApprove(new ReservationViewAdapter($series), $this->userSession)) { $series->Approve($this->userSession); $this->handler->Handle($series, $this->page); } }
public function testLoadsReservationIfTheUserCanEdit() { $reservation = new ReservationView(); $user = $this->fakeUser; $referenceNumber = 'rn'; $this->reservationViewRepository->expects($this->once())->method('GetReservationForEditing')->with($this->equalTo($referenceNumber))->will($this->returnValue($reservation)); $this->reservationAuthorization->expects($this->once())->method('CanEdit')->with($this->equalTo($reservation), $this->equalTo($user))->will($this->returnValue(true)); $res = $this->service->LoadByReferenceNumber($referenceNumber, $user); $this->assertEquals($reservation, $res); }
public function testLoadAndApprovesReservationSendingNotifications() { $referenceNumber = 'rn'; $builder = new ExistingReservationSeriesBuilder(); $reservation = $builder->Build(); $this->page->expects($this->once())->method('GetReferenceNumber')->will($this->returnValue($referenceNumber)); $this->persistence->expects($this->once())->method('LoadByReferenceNumber')->with($this->equalTo($referenceNumber))->will($this->returnValue($reservation)); $this->handler->expects($this->once())->method('Handle')->with($this->equalTo($reservation), $this->equalTo($this->page))->will($this->returnValue(true)); $this->auth->expects($this->once())->method('CanApprove')->with($this->equalTo(new ReservationViewAdapter($reservation)), $this->equalTo($this->fakeUser))->will($this->returnValue(true)); $this->presenter->PageLoad(); $this->assertTrue(in_array(new SeriesApprovedEvent($reservation), $reservation->GetEvents())); }
public function testBindsUserData() { $userDto = new UserDto($this->userId, 'f', 'l', 'email'); $this->initializer->expects($this->any())->method('CurrentUser')->will($this->returnValue($this->fakeUser)); $this->initializer->expects($this->once())->method('GetOwnerId')->will($this->returnValue($this->userId)); $this->initializer->expects($this->once())->method('CurrentUser')->will($this->returnValue($this->fakeUser)); $this->userRepository->expects($this->once())->method('GetById')->with($this->equalTo($this->userId))->will($this->returnValue($userDto)); $this->reservationAuthorization->expects($this->once())->method('CanChangeUsers')->with($this->fakeUser)->will($this->returnValue(true)); $this->fakeConfig->SetSectionKey(ConfigSection::PRIVACY, ConfigKeys::PRIVACY_HIDE_USER_DETAILS, 'true'); $this->initializer->expects($this->once())->method('SetShowParticipation')->with($this->equalTo(false)); $this->initializer->expects($this->once())->method('SetCanChangeUser')->with($this->equalTo(true)); $this->initializer->expects($this->once())->method('SetReservationUser')->with($this->equalTo($userDto)); $binder = new ReservationUserBinder($this->userRepository, $this->reservationAuthorization); $binder->Bind($this->initializer); }
public function testReservationDetailsChecksReservationAuthorizationAndCachesResultIfUserNotAnAdminAndReservationProvided() { $this->hideReservationDetails(true); $user = new UserSession(1); $reservation = new ReservationView(); $this->reservationAuthorization->expects($this->once())->method('CanViewDetails')->with($this->equalTo($reservation), $this->equalTo($user))->will($this->returnValue(true)); $canView = $this->privacyFilter->CanViewDetails($user, $reservation); $canView2 = $this->privacyFilter->CanViewDetails($user, $reservation); $this->assertTrue($canView); $this->assertTrue($canView2); }
public function PageLoad() { $hideUserInfo = Configuration::Instance()->GetSectionKey(ConfigSection::PRIVACY, ConfigKeys::PRIVACY_HIDE_USER_DETAILS, new BooleanConverter()); $hideReservationDetails = Configuration::Instance()->GetSectionKey(ConfigSection::PRIVACY, ConfigKeys::PRIVACY_HIDE_RESERVATION_DETAILS, new BooleanConverter()); $userSession = ServiceLocator::GetServer()->GetUserSession(); $tz = $userSession->Timezone; $reservation = $this->_reservationRepository->GetReservationForEditing($this->_page->GetReservationId()); if (!$reservation->IsDisplayable()) { return; } if ($hideReservationDetails || $hideUserInfo) { $canViewDetails = $this->_reservationAuthorization->CanViewDetails($reservation, ServiceLocator::GetServer()->GetUserSession()); $hideReservationDetails = !$canViewDetails && $hideReservationDetails; $hideUserInfo = !$canViewDetails && $hideUserInfo; } $this->_page->SetHideDetails($hideReservationDetails); $this->_page->SetHideUser($hideUserInfo); $startDate = $reservation->StartDate->ToTimezone($tz); $endDate = $reservation->EndDate->ToTimezone($tz); $this->_page->SetName($reservation->OwnerFirstName, $reservation->OwnerLastName); $this->_page->SetResources($reservation->Resources); $this->_page->SetParticipants($reservation->Participants); $this->_page->SetSummary($reservation->Description); $this->_page->SetTitle($reservation->Title); $this->_page->SetAccessories($reservation->Accessories); $this->_page->SetDates($startDate, $endDate); $attributeValues = $this->attributeService->GetReservationAttributes($userSession, $reservation); $this->_page->BindAttributes($attributeValues); }
public function Bind(IReservationComponentInitializer $initializer) { $this->page->SetAdditionalResources($this->reservationView->AdditionalResourceIds); $this->page->SetTitle($this->reservationView->Title); $this->page->SetDescription($this->reservationView->Description); $this->page->SetReferenceNumber($this->reservationView->ReferenceNumber); $this->page->SetReservationId($this->reservationView->ReservationId); $this->page->SetIsRecurring($this->reservationView->IsRecurring()); $this->page->SetRepeatType($this->reservationView->RepeatType); $this->page->SetRepeatInterval($this->reservationView->RepeatInterval); $this->page->SetRepeatMonthlyType($this->reservationView->RepeatMonthlyType); if ($this->reservationView->RepeatTerminationDate != null) { $this->page->SetRepeatTerminationDate($this->reservationView->RepeatTerminationDate->ToTimezone($initializer->GetTimezone())); } $this->page->SetRepeatWeekdays($this->reservationView->RepeatWeekdays); $participants = $this->reservationView->Participants; $invitees = $this->reservationView->Invitees; $this->page->SetParticipants($participants); $this->page->SetInvitees($invitees); $this->page->SetAllowParticipantsToJoin($this->reservationView->AllowParticipation); $this->page->SetAccessories($this->reservationView->Accessories); $currentUser = $initializer->CurrentUser(); $this->page->SetCurrentUserParticipating($this->IsCurrentUserParticipating($currentUser->UserId)); $this->page->SetCurrentUserInvited($this->IsCurrentUserInvited($currentUser->UserId)); $canBeEdited = $this->reservationAuthorization->CanEdit($this->reservationView, $currentUser); $this->page->SetIsEditable($canBeEdited); $this->page->SetIsApprovable($this->reservationAuthorization->CanApprove($this->reservationView, $currentUser)); $this->page->SetAttachments($this->reservationView->Attachments); $showUser = $this->privacyFilter->CanViewUser($initializer->CurrentUser(), $this->reservationView); $showDetails = $this->privacyFilter->CanViewDetails($initializer->CurrentUser(), $this->reservationView); $initializer->ShowUserDetails($showUser); $initializer->ShowReservationDetails($showDetails); if (!empty($this->reservationView->StartReminder)) { $this->page->SetStartReminder($this->reservationView->StartReminder->GetValue(), $this->reservationView->StartReminder->GetInterval()); } if (!empty($this->reservationView->EndReminder)) { $this->page->SetEndReminder($this->reservationView->EndReminder->GetValue(), $this->reservationView->EndReminder->GetInterval()); } }