public function __invoke(Request $req, Response $res, callable $next) { $res = $next($req, $res); $identity = $this->authService->getIdentity(); if (!$identity) { return $res; } try { $user = R::findOne('user', 'mail = ?', [$identity->mail]); if (!$user) { $user = R::dispense('user'); $user->uid = $identity->uid; $user->mail = $identity->mail; $user->display_name = $identity->displayName; $user->office_name = $identity->officeName; $user->authentication_source = $identity->authenticationSource; $user->password = ''; $user->created = time(); $user->role = 'school'; $this->logger->info(sprintf('User %s imported from sso.sch.gr to database', $identity->mail)); } $user->last_login = time(); $user_id = R::store($user); $identityClass = get_class($identity); $newIdentity = new $identityClass($user_id, $user->uid, $user->mail, $user->display_name, $user->office_name, $user->authentication_source); $this->authService->getStorage()->write($newIdentity); } catch (\Exception $e) { $this->authService->clearIdentity(); $this->flash->addMessage('danger', 'A problem occured storing user in database. <a href="%s" title="SSO logout">SSO Logout</a>'); $this->logger->error('Problem inserting user form CAS in database', $identity->toArray()); $this->logger->debug('Exception', [$e->getMessage(), $e->getTraceAsString()]); return $res->withRedirect($this->userErrorRedirectUrl); } return $res; }
/** * Returns Flash messages; If key is provided then returns messages * for that key. * * @param string $key * * @return array */ public function getMessages($key = null) { if (null !== $key) { return $this->flash->getMessage($key); } return $this->flash->getMessages(); }
public function dispatch(Request $request, Response $response, $args) { $speakers = $this->eventManager->getSpeakers(); $venues = $this->eventService->getVenues(); $supporters = $this->eventManager->getSupporters(); $eventInfo = ['title' => '', 'description' => '']; if ($request->getParam('meetup_id')) { $event = $this->eventService->getEventById((int) $request->getParam('meetup_id')); if (!empty($event)) { $eventInfo['title'] = $event['subject']; $eventInfo['description'] = $event['description']; $eventInfo['venue_id'] = $event['venue_id']; $date = \DateTime::createFromFormat('F jS Y', $event['date']); $eventInfo['date'] = $date->format("d/m/Y"); } } $errors = $this->flash->getMessage('event') ?? []; $frmErrors = []; if ($request->isPost()) { $validator = new EventValidator($_POST); try { $validator->talkValidation()->dateValidation(); if (!$validator->isValid()) { throw new \Exception('Form not valid.'); } $event = new \App\Model\Event\Event(new Talk(strip_tags($request->getParam('talk_title'), '<p><a><br>'), strip_tags($request->getParam('talk_description'), '<p><img><a><br>'), $this->eventManager->getSpeakerById((int) $request->getParam('speaker'))), $request->getParam('start_date'), $request->getParam('start_time'), $this->eventService->getVenueById($request->getParam('venue')), $this->eventManager->getSupporterByID($request->getParam('supporter'))); $this->eventService->createEvent($event); if (!$request->getParam('meetup_id')) { if ((int) $this->eventService->createMeetup()->getStatusCode() !== 201) { throw new \Exception('Could not create meetup event.'); } } else { // Do not create a meetup $this->eventService->getMeetupEvent()->setEventID((int) $request->getParam('meetup_id')); } if ((int) $this->eventService->createJoindinEvent($this->eventSettings['name'], $this->eventSettings['description'])->getStatusCode() !== 201) { $this->flash->addMessage('event', 'Could not create Joindin event. Please try again.'); return $response->withStatus(302)->withHeader('Location', '/create-event?meetup_id=' . $this->eventService->getMeetupEvent()->getMeetupEventID()); } if ((int) $this->eventService->createJoindinTalk()->getStatusCode() !== 201) { // TODO // Delete meetup event and JoindIn event just created. throw new \Exception('Could not create Joindin talk.'); } $eventEntity = $this->eventService->updateEvents(); return $response->withStatus(302)->withHeader('Location', '/event/' . $eventEntity->getId()); } catch (\Exception $e) { $frmErrors = $validator->getErrors(); $errors[] = $e->getMessage(); } } $nameKey = $this->csrf->getTokenNameKey(); $valueKey = $this->csrf->getTokenValueKey(); $name = $request->getAttribute($nameKey); $value = $request->getAttribute($valueKey); $this->view->render($response, 'admin/create-event.twig', ['speakers' => $speakers, 'venues' => $venues, 'eventInfo' => $eventInfo, 'supporters' => $supporters, 'nameKey' => $nameKey, 'valueKey' => $valueKey, 'name' => $name, 'value' => $value, 'errors' => $errors, 'frmErrors' => $frmErrors]); return $response; }
public function __invoke(Request $req, Response $res) { $result = $this->authService->authenticate(); if (!$result->isValid()) { $this->flash->addMessage('danger', reset($result->getMessages())); return $res->withRedirect($this->loginUrl); } return $res->withRedirect($this->successUrl); }
public function dispatch(Request $request, Response $response, $args) { $meetupID = $request->getAttribute('meetup_id', false); if (!$meetupID) { $eventDetails['errors'][] = 'A meetup ID needs to be provided.'; } else { $eventDetails = ['meetup_event' => $this->eventService->getEventById($meetupID), 'event_info' => $this->eventService->getEventInfo($meetupID)]; } $eventDetails['errors'] = $this->flash->getMessage('event') ?? []; $this->view->render($response, 'admin/event-info.twig', $eventDetails); return $response; }
public function __invoke(Request $req, Response $res) { if ($req->isPost()) { $adapter = $this->authService->getAdapter(); if ($adapter instanceof ValidatableAdapterInterface) { $adapter->setIdentity($req->getParam('identity')); $adapter->setCredential($req->getParam('credential')); } $result = $this->authService->authenticate($adapter); if (!$result->isValid()) { $this->flash->addMessage('danger', reset($result->getMessages())); return $res->withRedirect($req->getUri()); } return $res->withRedirect($this->successUrl); } return $this->view->render($res, 'user/login.twig', []); }
public function dispatch(Request $request, Response $response, $args) { $meetupID = $request->getAttribute('meetup_id', null); $eventInfo = $this->eventService->getInfoByMeetupID($meetupID); if ($eventInfo->eventExists()) { $this->flash->addMessage('event', 'Event already exists. Check its status.'); return $response->withStatus(302)->withHeader('Location', 'event-details/' . $meetupID); } if (!$eventInfo->isRegistered() && !is_null($meetupID)) { $this->flash->addMessage('event', 'No event found for meetupID provided. Please create a new event.'); return $response->withStatus(302)->withHeader('Location', 'create-event'); } $form = new CreateEventForm($this->eventManager, $this->eventService); if ($eventInfo->isRegistered()) { $form->setEventInfo($eventInfo); } $data = ['form' => $form, 'errors' => $this->flash->getMessage('event') ?? [], 'defaultTime' => $this->eventsConfig->defaultStartTime]; if ($request->isPost()) { $form->populate($request->getParams()); if (!$form->isValid()) { // return response $data['errors'] = $form->getErrors(); $data = array_merge($data, $this->getCsrfValues($request)); $response->withStatus(304); $this->view->render($response, 'admin/create-event.twig', $data); return $response; } try { $event = EventFactory::getEvent($form->getTalkTitle(), $form->getTalkDescription(), $form->getEventDate(), $form->getSpeaker(), $form->getVenue(), $form->getSupporter(), $this->eventsConfig->title, $this->eventsConfig->description); $createEventInfo = $this->eventService->createMainEvents($event, $this->auth->getUserId(), $meetupID); if (!is_null($createEventInfo['joindin_message'])) { $this->flash->addMessage('event', $createEventInfo['joindin_message']); } return $response->withStatus(302)->withHeader('Location', 'event-details?meetup_id=' . $createEventInfo['meetup_id']); } catch (\Exception $e) { $this->logger->debug($e->getMessage()); $this->logger->debug(print_r($data['errors'], true)); $data['errors'] = array_merge($data['errors'], [$e->getMessage()]); } } $data = array_merge($data, $this->getCsrfValues($request)); $this->view->render($response, 'admin/create-event.twig', $data); return $response; }
public function flashMessages($messageKey = null, $class = null, $appName = 'default') { $messages = $this->flash->getMessages(); $html = ''; if ($messageKey) { if (isset($messages[$messageKey])) { $message = implode(", ", $messages[$messageKey]); $html .= $this->alert($message, $class); } } else { // if no message key is set, then look for 'message' and 'error' if (isset($messages['message'])) { $message = implode(", ", $messages['message']); $html .= $this->alert($message, 'alert-success', true); } if (isset($messages['error'])) { $message = implode(", ", $messages['error']); $html .= $this->alert($message, 'alert-danger'); } } return $html; }
public function testGetMessageFromKey() { $storage = ['slimFlash' => ['Test' => ['Test', 'Test2']]]; $flash = new Messages($storage); $this->assertEquals(['Test', 'Test2'], $flash->getMessage('Test')); }
private function logoutAndRediret(Response $res, $message) { $this->authService->clearIdentity(); $this->flash->addMessage('danger', $message); return $res->withRedirect($this->unitNotFoundRedirectUrl); }
/** * Retrieve error message each input $name * * @param string $name Input name * @return string */ public function fieldError($name) { if ($error = $this->flash->getMessage('validation.errors.' . $name)) { return '<p class="alert alert-error">' . implode(', ', $error) . '</p>'; } }
public function addErrorFlash(FlashEvent $event) { $this->flash->addMessage('alert', $event->getMessage()); }
public function testHasMessage() { $storage = ['slimFlash' => []]; $flash = new Messages($storage); $this->assertFalse($flash->hasMessage('Test')); $storage = ['slimFlash' => ['Test' => ['Test']]]; $flash = new Messages($storage); $this->assertTrue($flash->hasMessage('Test')); }