di->get('eventsManager'); $this->setEventsManager($eventManager); } public function indexAction() { $form = new LoginForm(); if ($this->request->isPost()) { $data = $this->request->getPost(); if ($form->isValid($data)) { $email = $form->getValue('Email'); $passwd = $form->getValue('Password'); // Perform login if ($this->auth->login($email, $passwd)) { $this->response->redirect('/'); } else { $this->flash->message('error', "Invalid credentials"); } } else { $msg = ''; $this->flash->message('error', $msg); } } $this->view->form = $form; } public function oauthAction($provider_name) { $client = $this->getDI()->get('oauth', [ $provider_name ]); $code = $this->request->get('code'); $state = $this->request->get('state'); // Have code. Authenticate and fetch data. if (strlen($code) > 0) { try { // NOTE: Should pass $state here also. $data = $client->authenticate($code); // If user is authed already, we connect. $user = $this->auth->getUser(); if ($user) { $name = ucfirst($provider_name); $user->{'set' . $name . 'Id'}($data->getId()); $user->save(); $this->getEventsManager()->fire('user:onOAuthConnected', $user, $data); $this->flash->message('success', sprintf("OAuth provider %s was connected!", $name)); $this->response->redirect('/settings'); } // Perform Auth. else { $result = $this->auth->loginOauth($data); // There was an error when creating the account if (is_array($result)) { $msg = ''; foreach ($result as $message) { $msg .= '
  • ' . $message->getMessage() . '
  • '; } $this->flash->message('error', "Failed to create account: "); $this->response->redirect('/login'); } else { $this->response->redirect('/'); } } } catch(\Exception $e) { $this->flash->message('error', 'Failed to authenticate.'); if ($this->auth->getUser()) { $this->response->redirect('/settings'); } else { $this->response->redirect('/login'); } } } // No code else { // redirect to provider and acquire code. $this->response->redirect($client->getAuthorizationUrl(), true); } } public function registerAction() { $data = $this->session->get('auth:register:data'); if (!($data instanceof UserDataInterface)) { $this->response->redirect('/'); return; } $form = new RegistrationForm($data); if ($this->request->isPost()) { $user = new User(); $formData = $this->request->getPost(); if ($form->isValid($formData, $user) && $user->save()) { $this->auth->systemLogin($user); $this->flash->success('User successfully created. Now add your first callback!'); $this->response->redirect('/callback/new'); return; } $form->setEntity($formData); } else { $form->isValid($data->toArray()); } $this->view->provider = $data->getProvider(); $this->view->form = $form; } public function logoutAction() { $this->auth->clearIdentity(); $this->response->redirect('/'); } }