/** * {@inheritdoc} */ public function register(Application $app) { $app['application.speakers'] = $app->share(function ($app) { $userMapper = $app['spot']->mapper('OpenCFP\\Domain\\Entity\\User'); $talkMapper = $app['spot']->mapper('OpenCFP\\Domain\\Entity\\Talk'); $speakerRepository = new SpotSpeakerRepository($userMapper); return new Speakers(new CallForProposal(new \DateTime($app->config('application.enddate'))), new SentryIdentityProvider($app['sentry'], $speakerRepository), $speakerRepository, new SpotTalkRepository($talkMapper), new EventDispatcher()); }); $app['security.random'] = $app->share(function ($app) { return new PseudoRandomStringGenerator(new Factory()); }); $app['oauth.resource'] = $app->share(function ($app) { $sessionStorage = new SessionStorage(); $accessTokenStorage = new AccessTokenStorage(); $clientStorage = new ClientStorage(); $scopeStorage = new ScopeStorage(); $server = new ResourceServer($sessionStorage, $accessTokenStorage, $clientStorage, $scopeStorage); return $server; }); $app['application.speakers.api'] = $app->share(function ($app) { $userMapper = $app['spot']->mapper('OpenCFP\\Domain\\Entity\\User'); $talkMapper = $app['spot']->mapper('OpenCFP\\Domain\\Entity\\Talk'); $speakerRepository = new SpotSpeakerRepository($userMapper); return new Speakers(new CallForProposal(new \DateTime($app->config('application.enddate'))), new OAuthIdentityProvider($app['oauth.resource'], $speakerRepository), $speakerRepository, new SpotTalkRepository($talkMapper), new EventDispatcher()); }); }
/** * {@inheritdoc} */ public function register(Application $app) { $app['reset_emailer'] = $app->share(function ($app) { /* @var Twig_Environment $twig */ $twig = $app['twig']; return new ResetEmailer($app['mailer'], $twig->loadTemplate('emails/reset_password.twig'), $app->config('application.email'), $app->config('application.title')); }); }
/** * {@inheritdoc} */ public function register(Application $app) { $app['spot'] = $app->share(function ($app) { $config = new SpotConfig(); $config->addConnection('mysql', ['dbname' => $app->config('database.database'), 'user' => $app->config('database.user'), 'password' => $app->config('database.password'), 'host' => $app->config('database.host'), 'driver' => 'pdo_mysql']); return new SpotLocator($config); }); }
/** * {@inheritdoc} */ public function register(Application $app) { $app['purifier'] = $app->share(function ($app) { $config = HTMLPurifier_Config::createDefault(); if ($app->config('cache.enabled')) { $cacheDirectory = $app->config('paths.cache.purifier'); if (!is_dir($cacheDirectory)) { mkdir($cacheDirectory, 0755, true); } $config->set('Cache.SerializerPath', $cacheDirectory); } return new HTMLPurifier($config); }); }
/** * {@inheritdoc} */ public function register(Application $app) { $app->get('/', 'OpenCFP\\Http\\Controller\\PagesController::showHomepage')->bind('homepage'); $app->get('/package', 'OpenCFP\\Http\\Controller\\PagesController::showSpeakerPackage')->bind('speaker_package'); $app->get('/ideas', 'OpenCFP\\Http\\Controller\\PagesController::showTalkIdeas')->bind('talk_ideas'); $secureRoutes = []; // User Dashboard $secureRoutes[] = $app->get('/dashboard', 'OpenCFP\\Http\\Controller\\DashboardController::showSpeakerProfile')->bind('dashboard'); // Talks $secureRoutes[] = $app->get('/talk/edit/{id}', 'OpenCFP\\Http\\Controller\\TalkController::editAction')->bind('talk_edit'); $secureRoutes[] = $app->get('/talk/create', 'OpenCFP\\Http\\Controller\\TalkController::createAction')->bind('talk_new'); $secureRoutes[] = $app->post('/talk/create', 'OpenCFP\\Http\\Controller\\TalkController::processCreateAction')->bind('talk_create'); $secureRoutes[] = $app->post('/talk/update', 'OpenCFP\\Http\\Controller\\TalkController::updateAction')->bind('talk_update'); $secureRoutes[] = $app->post('/talk/delete', 'OpenCFP\\Http\\Controller\\TalkController::deleteAction')->bind('talk_delete'); $secureRoutes[] = $app->get('/talk/{id}', 'OpenCFP\\Http\\Controller\\TalkController::viewAction')->bind('talk_view'); // Login/Logout $secureRoutes[] = $app->get('/login', 'OpenCFP\\Http\\Controller\\SecurityController::indexAction')->bind('login'); $secureRoutes[] = $app->post('/login', 'OpenCFP\\Http\\Controller\\SecurityController::processAction')->bind('login_check'); $secureRoutes[] = $app->get('/logout', 'OpenCFP\\Http\\Controller\\SecurityController::outAction')->bind('logout'); // Create Account $secureRoutes[] = $app->get('/signup', 'OpenCFP\\Http\\Controller\\SignupController::indexAction')->bind('user_new'); $secureRoutes[] = $app->post('/signup', 'OpenCFP\\Http\\Controller\\SignupController::processAction')->bind('user_create'); $secureRoutes[] = $app->get('/signup/success', 'OpenCFP\\Http\\Controller\\SignupController::successAction')->bind('user_success'); // Edit Profile/Account $secureRoutes[] = $app->get('/profile/edit/{id}', 'OpenCFP\\Http\\Controller\\ProfileController::editAction')->bind('user_edit'); $secureRoutes[] = $app->post('/profile/edit', 'OpenCFP\\Http\\Controller\\ProfileController::processAction')->bind('user_update'); // Change/forgot Password $secureRoutes[] = $app->get('/profile/change_password', 'OpenCFP\\Http\\Controller\\ProfileController::passwordAction')->bind('password_edit'); $secureRoutes[] = $app->post('/profile/change_password', 'OpenCFP\\Http\\Controller\\ProfileController::passwordProcessAction')->bind('password_change'); $secureRoutes[] = $app->get('/forgot', 'OpenCFP\\Http\\Controller\\ForgotController::indexAction')->bind('forgot_password'); $secureRoutes[] = $app->post('/forgot', 'OpenCFP\\Http\\Controller\\ForgotController::sendResetAction')->bind('forgot_password_create'); $secureRoutes[] = $app->get('/forgot_success', 'OpenCFP\\Http\\Controller\\ForgotController::successAction')->bind('forgot_password_success'); $secureRoutes[] = $app->post('/reset', 'OpenCFP\\Http\\Controller\\ForgotController::resetAction')->bind('reset_password_create'); $secureRoutes[] = $app->get('/reset/{user_id}/{reset_code}', 'OpenCFP\\Http\\Controller\\ForgotController::processResetAction')->bind('reset_password'); $secureRoutes[] = $app->post('/updatepassword', 'OpenCFP\\Http\\Controller\\ForgotController::updatePasswordAction')->bind('password_update'); // Admin Routes $secureRoutes[] = $app->get('/admin', 'OpenCFP\\Http\\Controller\\Admin\\DashboardController::indexAction')->bind('admin'); // Admin::Talks $secureRoutes[] = $app->get('/admin/talks', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::indexAction')->bind('admin_talks'); $secureRoutes[] = $app->get('/admin/talks/{id}', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::viewAction')->bind('admin_talk_view'); $secureRoutes[] = $app->post('/admin/talks/{id}/favorite', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::favoriteAction')->bind('admin_talk_favorite'); $secureRoutes[] = $app->post('/admin/talks/{id}/select', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::selectAction')->bind('admin_talk_select'); // Admin::Speakers $secureRoutes[] = $app->get('/admin/speakers', 'OpenCFP\\Http\\Controller\\Admin\\SpeakersController::indexAction')->bind('admin_speakers'); $secureRoutes[] = $app->get('/admin/speakers/{id}', 'OpenCFP\\Http\\Controller\\Admin\\SpeakersController::viewAction')->bind('admin_speaker_view'); $secureRoutes[] = $app->get('/admin/speakers/delete/{id}', 'OpenCFP\\Http\\Controller\\Admin\\SpeakersController::deleteAction')->bind('admin_speaker_delete'); $secureRoutes[] = $app->get('/admin/admins', 'OpenCFP\\Http\\Controller\\Admin\\AdminsController::indexAction')->bind('admin_admins'); $secureRoutes[] = $app->get('/admin/admins/{id}', 'OpenCFP\\Http\\Controller\\Admin\\AdminsController::removeAction')->bind('admin_admin_delete'); // Admin::Review $secureRoutes[] = $app->get('/admin/review', 'OpenCFP\\Http\\Controller\\Admin\\ReviewController::indexAction')->bind('admin_reviews'); if ($app->config('application.secure_ssl')) { foreach ($secureRoutes as $route) { $route->requireHttps(); } } }
/** * {@inheritdoc} */ public function register(Application $app) { $app->register(new SilexTwigServiceProvider(), ['twig.path' => $app->templatesPath(), 'twig.options' => ['debug' => !$app->isProduction(), 'cache' => $app->config('cache.enabled') ? $app->cacheTwigPath() : false]]); if (!$app->isProduction()) { $app['twig']->addExtension(new Twig_Extension_Debug()); } $app['twig']->addFunction(new Twig_SimpleFunction('uploads', function ($path) { return '/uploads/' . $path; })); $app['twig']->addFunction(new Twig_SimpleFunction('assets', function ($path) { return '/assets/' . $path; })); $app['twig']->addGlobal('site', $app->config('application')); // Twig Markdown Extension $markdown = new Ciconia(); $markdown->addExtension(new InlineStyleExtension()); $markdown->addExtension(new WhiteSpaceExtension()); $engine = new CiconiaEngine($markdown); $app['twig']->addExtension(new MarkdownExtension($engine)); }
/** * {@inheritdoc} */ public function register(Application $app) { $app->register(new SilexTwigServiceProvider(), ['twig.path' => $app->templatesPath(), 'twig.options' => ['debug' => !$app->isProduction(), 'cache' => $app->config('cache.enabled') ? $app->cacheTwigPath() : false]]); /* @var Twig_Environment $twig */ $twig = $app['twig']; $twig->addGlobal('current_page', function () use($app) { return $app['request']->getRequestUri(); }); $twig->addGlobal('cfp_open', strtotime('now') < strtotime($app->config('application.enddate') . ' 11:59 PM')); if (!$app->isProduction()) { $twig->addExtension(new Twig_Extension_Debug()); } $twig->addFunction(new Twig_SimpleFunction('uploads', function ($path) { return '/uploads/' . $path; })); $twig->addFunction(new Twig_SimpleFunction('assets', function ($path) { return '/assets/' . $path; })); $twig->addGlobal('site', $app->config('application')); // Twig Markdown Extension $markdown = new Ciconia(); $markdown->addExtension(new InlineStyleExtension()); $markdown->addExtension(new WhiteSpaceExtension()); $engine = new CiconiaEngine($markdown); $twig->addExtension(new MarkdownExtension($engine)); $twig->addGlobal('talkHelper', new TalkHelper($app->config('talk.categories'), $app->config('talk.levels'), $app->config('talk.types'))); }
/** * {@inheritdoc} */ public function register(Application $app) { $app['application.speakers'] = $app->share(function ($app) { $userMapper = $app['spot']->mapper(\OpenCFP\Domain\Entity\User::class); $talkMapper = $app['spot']->mapper(\OpenCFP\Domain\Entity\Talk::class); $speakerRepository = new SpotSpeakerRepository($userMapper); return new Speakers(new CallForProposal(new \DateTime($app->config('application.enddate'))), new SentryIdentityProvider($app['sentry'], $speakerRepository), $speakerRepository, new SpotTalkRepository($talkMapper), new EventDispatcher()); }); $app[AirportInformationDatabase::class] = $app->share(function ($app) { $capsule = new Capsule(); $capsule->addConnection(['driver' => 'mysql', 'host' => $app->config('database.host'), 'database' => $app->config('database.database'), 'username' => $app->config('database.user'), 'password' => $app->config('database.password'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '']); $capsule->setAsGlobal(); return new IlluminateAirportInformationDatabase($capsule); }); $app['security.random'] = $app->share(function ($app) { return new PseudoRandomStringGenerator(new Factory()); }); $app['oauth.resource'] = $app->share(function ($app) { $sessionStorage = new SessionStorage(); $accessTokenStorage = new AccessTokenStorage(); $clientStorage = new ClientStorage(); $scopeStorage = new ScopeStorage(); $server = new ResourceServer($sessionStorage, $accessTokenStorage, $clientStorage, $scopeStorage); return $server; }); $app['application.speakers.api'] = $app->share(function ($app) { $userMapper = $app['spot']->mapper(\OpenCFP\Domain\Entity\User::class); $talkMapper = $app['spot']->mapper(\OpenCFP\Domain\Entity\Talk::class); $speakerRepository = new SpotSpeakerRepository($userMapper); return new Speakers(new CallForProposal(new \DateTime($app->config('application.enddate'))), new OAuthIdentityProvider($app['oauth.resource'], $speakerRepository), $speakerRepository, new SpotTalkRepository($talkMapper), new EventDispatcher()); }); }
/** * {@inheritdoc} */ public function register(Application $app) { // Create a new Database connection $database = new Capsule(); $database->addConnection(array('driver' => 'mysql', 'host' => $app->config('database.host'), 'database' => $app->config('database.database'), 'username' => $app->config('database.user'), 'password' => $app->config('database.password'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci')); // Makes the new "capsule" the global static instance. $database->setAsGlobal(); // Boots Eloquent to be used by Sentry. $database->bootEloquent(); $app['sentry'] = $app->share(function ($app) { $hasher = new \Cartalyst\Sentry\Hashing\NativeHasher(); $userProvider = new \Cartalyst\Sentry\Users\Eloquent\Provider($hasher); $groupProvider = new \Cartalyst\Sentry\Groups\Eloquent\Provider(); $throttleProvider = new \Cartalyst\Sentry\Throttling\Eloquent\Provider($userProvider); $session = new SymfonySentrySession($app['session']); $cookie = new \Cartalyst\Sentry\Cookies\NativeCookie(array()); $sentry = new \Cartalyst\Sentry\Sentry($userProvider, $groupProvider, $throttleProvider, $session, $cookie); Sentry::setupDatabaseResolver($app['db']); $throttleProvider->disable(); return $sentry; }); }
public function boot(Application $app) { if (!$app->config('api.enabled')) { return; } /* @var $oauth ControllerCollection */ $oauth = $app['controllers_factory']; $oauth->before(new RequestCleaner($app['purifier'])); $oauth->before(function (Request $request, Application $app) { $request->headers->set('Accept', 'application/json'); if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) { $data = json_decode($request->getContent(), true); $request->request->replace(is_array($data) ? $data : array()); } }); if ($app->config('application.secure_ssl')) { $oauth->requireHttps(); } $oauth->get('/authorize', 'controller.oauth.authorization:authorize'); $oauth->post('/authorize', 'controller.oauth.authorization:issueAuthCode'); $oauth->post('/access_token', 'controller.oauth.authorization:issueAccessToken'); $oauth->post('/clients', 'controller.oauth.clients:registerClient'); $app->mount('/oauth', $oauth); }
/** * {@inheritdoc} */ public function boot(Application $app) { $app->before(function (Request $request, Application $app) { $app['twig']->addGlobal('current_page', $request->getRequestUri()); $app['twig']->addGlobal('cfp_open', strtotime('now') < strtotime($app->config('application.enddate') . ' 11:59 PM')); }); if ($app['sentry']->check()) { $app['twig']->addGlobal('user', $app['sentry']->getUser()); $app['twig']->addGlobal('user_is_admin', $app['sentry']->getUser()->hasAccess('admin')); } if ($app['session']->has('flash')) { $app['twig']->addGlobal('flash', $app['session']->get('flash')); $app['session']->set('flash', null); } }
public function boot(Application $app) { /* @var $api ControllerCollection */ $api = $app['controllers_factory']; $api->before(new RequestCleaner($app['purifier'])); $api->before(function (Request $request) { $request->headers->set('Accept', 'application/json'); if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) { $data = json_decode($request->getContent(), true); $request->request->replace(is_array($data) ? $data : array()); } }); if ($app->config('application.secure_ssl')) { $api->requireHttps(); } $api->get('/me', 'controller.api.profile:handleShowSpeakerProfile'); $api->get('/talks', 'controller.api.talk:handleViewAllTalks'); $api->post('/talks', 'controller.api.talk:handleSubmitTalk'); $api->get('/talks/{id}', 'controller.api.talk:handleViewTalk'); $app->mount('/api', $api); }
public function processAction(Request $req, Application $app) { $form_data = ['formAction' => $this->url('user_create'), 'first_name' => $req->get('first_name'), 'last_name' => $req->get('last_name'), 'company' => $req->get('company'), 'twitter' => $req->get('twitter'), 'email' => $req->get('email'), 'password' => $req->get('password'), 'password2' => $req->get('password2'), 'airport' => $req->get('airport'), 'agree_coc' => $req->get('agree_coc'), 'buttonInfo' => 'Create my speaker profile', 'coc_link' => $this->app->config('application.coc_link')]; $form_data['speaker_info'] = $req->get('speaker_info') ?: null; $form_data['speaker_bio'] = $req->get('speaker_bio') ?: null; $form_data['transportation'] = $req->get('transportation') ?: null; $form_data['hotel'] = $req->get('hotel') ?: null; $form_data['speaker_photo'] = null; if ($req->files->get('speaker_photo') !== null) { $form_data['speaker_photo'] = $req->files->get('speaker_photo'); } $form = new SignupForm($form_data, $app['purifier'], ['has_coc' => !empty($app->config('application.coc_link'))]); $isValid = $form->validateAll(); if ($isValid) { $sanitized_data = $form->getCleanData(); if (isset($form_data['speaker_photo'])) { /** @var \Symfony\Component\HttpFoundation\File\UploadedFile $file */ $file = $form_data['speaker_photo']; /** @var ProfileImageProcessor $processor */ $processor = $app['profile_image_processor']; /** @var PseudoRandomStringGenerator $generator */ $generator = $app['security.random']; /** * The extension technically is not required. We guess the extension using a trusted method. */ $sanitized_data['speaker_photo'] = $generator->generate(40) . '.' . $file->guessExtension(); $processor->process($file, $sanitized_data['speaker_photo']); } // Create account using Sentry try { $user_data = ['first_name' => $sanitized_data['first_name'], 'last_name' => $sanitized_data['last_name'], 'company' => $sanitized_data['company'], 'twitter' => $sanitized_data['twitter'], 'email' => $sanitized_data['email'], 'password' => $sanitized_data['password'], 'airport' => $sanitized_data['airport'], 'activated' => 1]; /* @var Sentry $sentry */ $sentry = $app['sentry']; $user = $sentry->getUserProvider()->create($user_data); // Add them to the proper group $user->addGroup($sentry->getGroupProvider()->findByName('Speakers')); /* @var Locator $spot */ $spot = $app['spot']; // Add in the extra speaker information $mapper = $spot->mapper('\\OpenCFP\\Domain\\Entity\\User'); $speaker = $mapper->get($user->id); $speaker->info = $sanitized_data['speaker_info']; $speaker->bio = $sanitized_data['speaker_bio']; $speaker->photo_path = $sanitized_data['speaker_photo']; $speaker->transportation = (int) $sanitized_data['transportation']; $speaker->hotel = (int) $sanitized_data['hotel']; $mapper->save($speaker); // This is for redirecting to OAuth endpoint if we arrived // as part of the Authorization Code Grant flow. if ($this->service('session')->has('redirectTo')) { $sentry->login($user); return new RedirectResponse($this->service('session')->get('redirectTo')); } // Set Success Flash Message $app['session']->set('flash', ['type' => 'success', 'short' => 'Success', 'ext' => "You've successfully created your account!"]); return $this->redirectTo('login'); } catch (UserExistsException $e) { $app['session']->set('flash', ['type' => 'error', 'short' => 'Error', 'ext' => 'A user already exists with that email address']); } } if (!$isValid) { // Set Error Flash Message $app['session']->set('flash', ['type' => 'error', 'short' => 'Error', 'ext' => implode("<br>", $form->getErrorMessages())]); } $form_data['flash'] = $this->getFlash($app); return $this->render('user/create.twig', $form_data); }
/** * {@inheritdoc} */ public function register(Application $app) { $app['reset_emailer'] = $app->share(function ($app) { return new ResetEmailer($app['mailer'], $app['twig']->loadTemplate('emails/reset_password.twig'), $app->config('application.email'), $app->config('application.title')); }); }
public function boot(Application $app) { /* @var $web ControllerCollection */ $web = $app['controllers_factory']; $web->before(new RequestCleaner($app['purifier'])); $web->before(function (Request $request, Application $app) { $app['twig']->addGlobal('current_page', $request->getRequestUri()); $app['twig']->addGlobal('cfp_open', strtotime('now') < strtotime($app->config('application.enddate') . ' 11:59 PM')); if ($app['sentry']->check()) { $app['twig']->addGlobal('user', $app['sentry']->getUser()); $app['twig']->addGlobal('user_is_admin', $app['sentry']->getUser()->hasAccess('admin')); } if ($app['session']->has('flash')) { $app['twig']->addGlobal('flash', $app['session']->get('flash')); $app['session']->set('flash', null); } }); if ($app->config('application.secure_ssl')) { $web->requireHttps(); } $web->get('/', 'OpenCFP\\Http\\Controller\\PagesController::showHomepage')->bind('homepage'); $web->get('/package', 'OpenCFP\\Http\\Controller\\PagesController::showSpeakerPackage')->bind('speaker_package'); $web->get('/ideas', 'OpenCFP\\Http\\Controller\\PagesController::showTalkIdeas')->bind('talk_ideas'); // User Dashboard $web->get('/dashboard', 'OpenCFP\\Http\\Controller\\DashboardController::showSpeakerProfile')->bind('dashboard'); // Talks $web->get('/talk/edit/{id}', 'OpenCFP\\Http\\Controller\\TalkController::editAction')->bind('talk_edit'); $web->get('/talk/create', 'OpenCFP\\Http\\Controller\\TalkController::createAction')->bind('talk_new'); $web->post('/talk/create', 'OpenCFP\\Http\\Controller\\TalkController::processCreateAction')->bind('talk_create'); $web->post('/talk/update', 'OpenCFP\\Http\\Controller\\TalkController::updateAction')->bind('talk_update'); $web->post('/talk/delete', 'OpenCFP\\Http\\Controller\\TalkController::deleteAction')->bind('talk_delete'); $web->get('/talk/{id}', 'OpenCFP\\Http\\Controller\\TalkController::viewAction')->bind('talk_view'); // Login/Logout $web->get('/login', 'OpenCFP\\Http\\Controller\\SecurityController::indexAction')->bind('login'); $web->post('/login', 'OpenCFP\\Http\\Controller\\SecurityController::processAction')->bind('login_check'); $web->get('/logout', 'OpenCFP\\Http\\Controller\\SecurityController::outAction')->bind('logout'); // Create Account $web->get('/signup', 'OpenCFP\\Http\\Controller\\SignupController::indexAction')->bind('user_new'); $web->post('/signup', 'OpenCFP\\Http\\Controller\\SignupController::processAction')->bind('user_create'); $web->get('/signup/success', 'OpenCFP\\Http\\Controller\\SignupController::successAction')->bind('user_success'); // Edit Profile/Account $web->get('/profile/edit/{id}', 'OpenCFP\\Http\\Controller\\ProfileController::editAction')->bind('user_edit'); $web->post('/profile/edit', 'OpenCFP\\Http\\Controller\\ProfileController::processAction')->bind('user_update'); // Change/forgot Password $web->get('/profile/change_password', 'OpenCFP\\Http\\Controller\\ProfileController::passwordAction')->bind('password_edit'); $web->post('/profile/change_password', 'OpenCFP\\Http\\Controller\\ProfileController::passwordProcessAction')->bind('password_change'); $web->get('/forgot', 'OpenCFP\\Http\\Controller\\ForgotController::indexAction')->bind('forgot_password'); $web->post('/forgot', 'OpenCFP\\Http\\Controller\\ForgotController::sendResetAction')->bind('forgot_password_create'); $web->get('/forgot_success', 'OpenCFP\\Http\\Controller\\ForgotController::successAction')->bind('forgot_password_success'); $web->post('/reset', 'OpenCFP\\Http\\Controller\\ForgotController::resetAction')->bind('reset_password_create'); $web->get('/reset/{user_id}/{reset_code}', 'OpenCFP\\Http\\Controller\\ForgotController::processResetAction')->bind('reset_password'); $web->post('/updatepassword', 'OpenCFP\\Http\\Controller\\ForgotController::updatePasswordAction')->bind('password_update'); // Admin Routes $web->get('/admin', 'OpenCFP\\Http\\Controller\\Admin\\DashboardController::indexAction')->bind('admin'); // Admin::Talks $web->get('/admin/talks', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::indexAction')->bind('admin_talks'); $web->get('/admin/talks/{id}', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::viewAction')->bind('admin_talk_view'); $web->post('/admin/talks/{id}/favorite', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::favoriteAction')->bind('admin_talk_favorite'); $web->post('/admin/talks/{id}/select', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::selectAction')->bind('admin_talk_select'); $web->post('/admin/talks/{id}/comment', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::commentCreateAction')->bind('admin_talk_comment_create'); $web->post('/admin/talks/{id}/rate', 'OpenCFP\\Http\\Controller\\Admin\\TalksController::rateAction')->bind('admin_talk_rate'); // Admin::Speakers $web->get('/admin/speakers', 'OpenCFP\\Http\\Controller\\Admin\\SpeakersController::indexAction')->bind('admin_speakers'); $web->get('/admin/speakers/{id}', 'OpenCFP\\Http\\Controller\\Admin\\SpeakersController::viewAction')->bind('admin_speaker_view'); $web->get('/admin/speakers/delete/{id}', 'OpenCFP\\Http\\Controller\\Admin\\SpeakersController::deleteAction')->bind('admin_speaker_delete'); $web->get('/admin/admins', 'OpenCFP\\Http\\Controller\\Admin\\AdminsController::indexAction')->bind('admin_admins'); $web->get('/admin/admins/{id}', 'OpenCFP\\Http\\Controller\\Admin\\AdminsController::removeAction')->bind('admin_admin_delete'); // Admin::Review $web->get('/admin/review', 'OpenCFP\\Http\\Controller\\Admin\\ReviewController::indexAction')->bind('admin_reviews'); // CSV Exports $web->get('/admin/export/csv', 'OpenCFP\\Http\\Controller\\Admin\\ExportsController::attributedTalksExportAction')->bind('admin_export_csv'); $web->get('/admin/export/csv/anon', 'OpenCFP\\Http\\Controller\\Admin\\ExportsController::anonymousTalksExportAction')->bind('admin_export_csv_anon'); $web->get('/admin/export/csv/selected', 'OpenCFP\\Http\\Controller\\Admin\\ExportsController::selectedTalksExportAction')->bind('admin_export_csv_selected'); $web->get('/admin/export/csv/emails', 'OpenCFP\\Http\\Controller\\Admin\\ExportsController::emailExportAction')->bind('admin_export_csv_emails'); $app->mount('/', $web); }
/** * @param Application $app * * @return \PDO */ private function makePDOInstance(Application $app) { return new \PDO($app->config('database.dsn'), $app->config('database.user'), $app->config('database.password'), [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]); }
protected function sendResetEmail(Application $app, $user_id, $email, $reset_code) { // Here to cover possible errors from refactor. Should be substituted appropriately below. $twig = $app['twig']; // Build our email that we will send $template = $twig->loadTemplate('emails/reset_password.twig'); $parameters = array('reset_code' => $reset_code, 'method' => !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', 'host' => !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost', 'user_id' => $user_id, 'email' => $app->config('application.email'), 'title' => $app->config('application.title')); try { $mailer = $app['mailer']; $message = new \Swift_Message(); $message->setTo($email); $message->setFrom($template->renderBlock('from', $parameters), $template->renderBlock('from_name', $parameters)); $message->setSubject($template->renderBlock('subject', $parameters)); $message->setBody($template->renderBlock('body_text', $parameters)); $message->addPart($template->renderBlock('body_html', $parameters), 'text/html'); return $mailer->send($message); } catch (\Exception $e) { echo $e; die; } }