示例#1
0
 /**
  * @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);
 }
示例#7
0
 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);
 }
示例#8
0
 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());
     }
 }