public function connect(Application $app) { parent::connect($app); $controllers = $app['controllers_factory']; $self = $this; $controllers->get('/', function (Request $request) use($app, $self) { return $app->redirect(ROOT_URL . '/client/login'); }); $controllers->get('/login', function (Request $request) use($app, $self) { $cookies = $request->cookies; $username = ""; $password = ""; if ($cookies->has('username')) { $username = $cookies->get('username'); } if ($cookies->has('password')) { $password = $cookies->get('password'); } return $self->render('client/login.twig', array('ROOT_URL' => ROOT_URL, 'formValues' => array('username' => $username, 'password' => $password, 'rememberChecked' => ''))); }); $controllers->post('/login', function (Request $request) use($app, $self) { $self->setVariables(); $registBtn = $request->get('regist'); if (!empty($registBtn)) { return new RedirectResponse("regist"); } $username = $request->get('username'); $password = $request->get('password'); $remember = $request->get('remember'); $rememberChecked = ""; if (!empty($remember)) { $rememberChecked = "checked=\"checked\""; } $authData = $self->app['spikadb']->doSpikaAuth($username, md5($password)); $authData = json_decode($authData, true); if (isset($authData['token'])) { $html = $self->render('client/login.twig', array('ROOT_URL' => ROOT_URL, 'formValues' => array('username' => $username, 'password' => $password, 'rememberChecked' => $rememberChecked))); $response = new RedirectResponse(ROOT_URL . "/client/main"); $app['session']->set('user', $authData); return $response; } else { $self->setErrorAlert($self->language['messageLoginFailed']); return $self->render('client/login.twig', array('ROOT_URL' => ROOT_URL, 'formValues' => array('username' => $username, 'password' => $password, 'rememberChecked' => $rememberChecked))); } }); $controllers->get('/logout', function (Request $request) use($app, $self) { $app['session']->remove('user'); $response = new RedirectResponse("login"); return $response; }); $controllers->get('/regist', function (Request $request) use($app, $self) { $cookies = $request->cookies; $email = ""; $username = ""; $password = ""; return $self->render('client/regist.twig', array('ROOT_URL' => ROOT_URL, 'formValues' => array('username' => $username, 'password' => $password, 'email' => $email))); }); $controllers->post('/regist', function (Request $request) use($app, $self) { $self->setVariables(); $username = $request->get('username'); $password = $request->get('password'); $email = $request->get('email'); $loginBtn = $request->get('login'); if (!empty($loginBtn)) { return new RedirectResponse("login"); } // validation $errorMessage = ""; if (empty($username)) { $errorMessage = $self->language['messageValidationErrorEmptyUserName']; } else { if (empty($email)) { $errorMessage = $self->language['messageValidationErrorEmptyEmail']; } else { if (empty($password)) { $errorMessage = $self->language['messageValidationErrorEmptyPassword']; } } } if (empty($errorMessage)) { if (!Utils::checkEmailIsValid($email)) { $errorMessage = $self->language['messageValidationErrorInvalidEmail']; } } if (empty($errorMessage)) { if (!Utils::checkPasswordIsValid($password)) { $errorMessage = $self->language['messageValidationErrorInvalidPassword']; } } if (empty($errorMessage)) { $check = $app['spikadb']->findUserByName($username); if (!empty($check['_id'])) { $errorMessage = $self->language['messageValidationErrorUserNameNotUnique']; } } if (empty($errorMessage)) { $check = $app['spikadb']->findUserByEmail($email); if (!empty($check['_id'])) { $errorMessage = $self->language['messageValidationErrorUserEmailNotUnique']; } } if (!empty($errorMessage)) { $self->setErrorAlert($errorMessage); } else { $newUserId = $app['spikadb']->createUser($username, $email, md5($password)); $authData = $self->app['spikadb']->doSpikaAuth($email, md5($password)); $authData = json_decode($authData, true); $response = new RedirectResponse("main"); $app['session']->set('user', $authData); return $response; } return $self->render('client/regist.twig', array('ROOT_URL' => ROOT_URL, 'formValues' => array('username' => $username, 'password' => $password, 'email' => $email))); }); $controllers->get('/resetPassword', function (Request $request) use($app, $self) { $self->setVariables(); return $self->render('client/resetpassword.twig', array('ROOT_URL' => ROOT_URL, 'formValues' => array('email' => ''))); }); $controllers->post('/resetPassword', function (Request $request) use($app, $self) { $self->setVariables(); $email = $request->get('email'); $loginBtn = $request->get('login'); if (!empty($loginBtn)) { return new RedirectResponse("login"); } // validation $errorMessage = ""; if (empty($email)) { $errorMessage = $self->language['messageValidationErrorEmptyEmail']; } if (empty($errorMessage)) { $check = $app['spikadb']->findUserByEmail($email); if (empty($check['_id'])) { $errorMessage = $self->language['messageValidationEmailIsNotExist']; } } if (!empty($errorMessage)) { $self->setErrorAlert($errorMessage); } else { // call api $client = new Client(); $request = $client->get(LOCAL_ROOT_URL . "/api/resetPassword?email=" . $email); $response = $request->send(); $self->setInfoAlert($self->language['messageResetPasswordEmailSent']); } return $self->render('client/resetpassword.twig', array('ROOT_URL' => ROOT_URL, 'formValues' => array('email' => $email))); }); return $controllers; }