/** * process the submitted form and update profile in Db * * @return \Zend\Http\Response|ViewModel | Rediction */ public function processAction() { if ($this->request->isPost()) { $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $this->actionView->setTemplate('profile/index/index'); $form = new RegisterForm(); $params = $this->params()->fromPost(); $form->setData($params); if ($form->isValid()) { $user = $this->identity(); $user->setFirstname($params['firstname']); $user->setlastname($params['lastname']); $user->setEmail($params['email']); $user->setPhone($params['phone']); $em->persist($user); $em->flush(); $this->actionView->setVariable('error', 0); } else { $this->actionView->setVariable('error', 1); } return $this->actionView->setVariable('form', $form); } else { return $this->redirect()->toRoute('board/usr', ['controller' => 'index', 'action' => 'index']); } }
public function indexAction() { $user = $this->identity(); $em = $this->getServiceLocator()->get('Doctrine\\ORm\\EntityManager'); $hydrator = new DoctrineObject($em, get_class($user)); $data = $hydrator->extract($user); $form = new RegisterForm(); $form->bind(new ArrayObject($data)); return new ViewModel(['form' => $form]); }
public function indexAction() { $form = new RegisterForm(); $request = $this->getRequest(); if ($request->isPost()) { $form->setData($request->getPost()); if ($form->isValid()) { $data = $form->getData(); $user = new User($data['userName'], $data['email'], $data['password'], $data['firstName'], $data['lastName']); //Set the profile $profile = new Profile(); $user->setProfile($profile); $this->dm->persist($user); $this->dm->flush(); $this->flashMessenger()->addSuccessMessage('You have successfully registered! Please sign in to your account.'); return $this->redirect()->toRoute('user_login'); } } return array('form' => $form); }
/** * @param $reverseOauth */ public function auth($reverseOauth) { if ($reverseOauth->getToken($this->request)) { $token = $reverseOauth->getSessionToken(); // token in session } else { $token = $reverseOauth->getError(); // last returned error (array) } $info = $reverseOauth->getInfo(); if ($info) { $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $user = $em->getRepository('Application\\Entity\\User')->findOneByEmail($info->email); if ($user) { $user->setLastLogin(time()); $em->persist($user); $em->flush(); $authService = $this->getServiceLocator()->get('Zend\\Authentication\\AuthenticationService'); $authService->getStorage()->write($user); //if it come from other uri then redirect it $traject = new Container('traject'); if ($traject->trajectData) { return $this->redirect()->toRoute('traject/default', ['controller' => 'manage', 'action' => 'success']); } return $this->redirect()->toRoute('board'); } else { $info->firstname = $info->first_name; //to make same name as form elements $info->lastname = $info->last_name; $hydrator = new ObjectProperty(); $data = $hydrator->extract($info); $form = new RegisterForm(); $form->setData($data); $view = new ViewModel(['registerForm' => $form]); $view->setTemplate('user/register/index'); return $view; } } }
public function changePasswordAction() { $viewModel = new ViewModel(); $username = $this->getAuthService()->getIdentity()->getUsername(); $registerForm = new RegisterForm(); $form = new \Zend\Form\Form('changePasswordForm'); $form->add($registerForm->get('password')); $form->add($registerForm->get('re_password')); // $form->add($registerForm->get('submit')->setAttribute('value', '修改密碼')); $accountFilter = new AccountFIlter(); $filter = new InputFilter(); $filter->add($accountFilter->get('password'))->add($accountFilter->get('re_password')); $form->setInputFilter($filter); if ($this->getRequest()->isPost()) { $data = $this->getRequest()->getPost(); $form->setData($data); if ($form->isValid()) { $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default'); $user = $em->getRepository('Base\\Entity\\User')->findOneBy(array('username' => $username)); if ($user) { //$user->setPassword(md5($form->get('password')->getValue())); $user->setPassword(\Zend\Ldap\Attribute::createPassword($form->get('password')->getValue())); $em->persist($user); $em->flush(); $this->getServiceLocator()->get('Zend\\Log')->info($username . ' changed password'); $this->flashMessenger()->addSuccessMessage('更改密碼成功!'); return $this->redirect()->refresh(); } } } $viewModel->setVariable('form', $form); return $viewModel; }
/** * Action for registering a user * @return JsonModel */ public function registerAction() { if ($this->request->isOptions()) { return new JsonModel(); } $controllerName = $this->params('controller'); $actionName = $this->params('action'); $authenticationHelper = new AuthenticationHelper($this->getServiceLocator()); $headers = $this->request->getHeaders(); $authTokenObject = $headers->get('authToken'); $hasPermission = $authenticationHelper->checkPermissions($controllerName, $actionName, $authTokenObject); if (!$hasPermission) { $this->response->setStatusCode(401); return new JsonModel(array('error' => 1, 'message' => 'You don\'t have the necessary permissions to view this resource.')); } if ($this->request->isPost()) { $registerForm = new RegisterForm(); $registerFilter = new RegisterFilter(); $registerForm->setInputFilter($registerFilter); $post = get_object_vars(json_decode($this->request->getContent())); $registerForm->setData($post); if (!$registerForm->isValid()) { $errorMessages = array(); foreach ($registerForm->getMessages() as $elementName => $messages) { foreach ($messages as $message) { $errorMessages[$elementName] = $message; } } return new JsonModel(array('error' => 1, 'message' => 'You have an error in your form. Please try again.', 'formErrors' => $errorMessages)); } $formData = $registerForm->getData(); $objectManager = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $user = $objectManager->getRepository('Application\\Entity\\LtUser')->findOneBy(array('email' => $formData['email'])); if ($user !== null) { return new JsonModel(array('error' => 1, 'message' => 'E-Mail already in use')); } $hydrator = new DoctrineObject($objectManager); $user = new LtUser(); $user = $hydrator->hydrate($formData, $user); $date = new \DateTime(); $user->setRegistrationdate($date); $user->setEmailchangeddate($date); $tokenRandomize = uniqid(mt_rand(1, 100), true); $registerToken = md5($formData['email'] . $date->format('Y-m-d') . $tokenRandomize); $user->setRegistrationtoken($registerToken); $userType = $formData['userType']; $url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' . str_replace(' ', '+', $formData['region']) . '&sensor=true'; $googleData = file_get_contents($url); $googleDataArray = json_decode($googleData, true); $latitude = $googleDataArray['results'][0]['geometry']['location']['lat']; $longitude = $googleDataArray['results'][0]['geometry']['location']['lng']; $user->setLatitude($latitude); $user->setLongitude($longitude); list($type, $data) = explode(';', $post['profilePicturePath']); list(, $data) = explode(',', $data); $data = base64_decode($data); $randomImageName = md5($formData['email'] . $tokenRandomize); if (strpos($type, 'png')) { $imageName = $randomImageName . '.png'; } else { $imageName = $randomImageName . '.jpg'; } file_put_contents(__DIR__ . '/../../../../../public/app/img/profilePictures/' . $imageName, $data); $user->setProfilepicturepath('img/profilePictures/' . $imageName); if ($userType === 'student') { $student = new LtStudent(); $language = $objectManager->find('Application\\Entity\\LtLanguage', $formData['nativeLanguage']); $student->setStudentid($user); $student->setNativelanguage($language); $user->setUsergroup('student'); $objectManager->persist($user); $objectManager->flush(); $objectManager->persist($student); } elseif ($userType === 'volunteer') { $volunteer = new LtVolunteer(); $language = $objectManager->find('Application\\Entity\\LtLanguage', $formData['nativeLanguage']); $volunteer->setVolunteerid($user); $volunteer->setNativelanguage($language); if (array_key_exists('languages', $formData)) { $languageSkills = $formData['languages']; foreach ($languageSkills as $languageSkill) { $tempLanguage = $objectManager->find('Application\\Entity\\LtLanguage', $languageSkill); $volunteer->addLangcode($tempLanguage); } } $user->setUsergroup('volunteer'); $objectManager->persist($user); $objectManager->flush(); $objectManager->persist($volunteer); } elseif ($userType === 'organisation') { $organisation = new LtOrganisation(); $organisation->setOrganisationid($user); $organisation->setContactpersonname($formData['contactPersonName']); $organisation->setContactpersonemail($formData['contactPersonEmail']); if (array_key_exists('contactPersonPhone', $formData) && trim($formData['contactPersonPhone']) !== '') { $organisation->setContactpersonemail($formData['contactPersonPhone']); } if (array_key_exists('organisationDescription', $formData) && trim($formData['organisationDescription']) !== '') { $organisation->setOrganisationdescription($formData['organisationDescription']); } if (array_key_exists('organisationWebsite', $formData) && trim($formData['organisationWebsite']) !== '') { $organisation->setOrganisationwebsite($formData['organisationWebsite']); } $user->setUsergroup('organisation'); $objectManager->persist($user); $objectManager->flush(); $objectManager->persist($organisation); } $userSecurityQuestion = new LtUserSecurityQuestion(); $userSecurityQuestion->setSecurityquestionid($formData['securityQuestionId']); $userSecurityQuestion->setLangcode('en'); $userSecurityQuestion->setUserid($user); $userSecurityQuestion->setSecurityquestionanswer($formData['securityQuestionAnswer']); $objectManager->persist($userSecurityQuestion); $objectManager->flush(); $this->response->setStatusCode(201); return new JsonModel(array('error' => 0, 'message' => 'Account created successfully.')); } else { $this->response->setStatusCode(405); return new JsonModel(array('error' => 1, 'message' => 'Request-Method not allowed')); } }
public function getServiceConfig() { return array('factories' => array('AuthService' => function ($sm) { $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter'); $dbTableAuthAdapter = new DbTableAuthAdapter($dbAdapter, 'user', 'email', 'password', 'MD5(?)'); $authService = new AuthenticationService(); $authService->setAdapter($dbTableAuthAdapter); return $authService; }, 'UserTable' => function ($sm) { $tableGateway = $sm->get('UserTableGateway'); $table = new UserTable($tableGateway); return $table; }, 'UserTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter'); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new User()); return new TableGateway('user', $dbAdapter, null, $resultSetPrototype); }, 'ListRowTable' => function ($sm) { $tableGateway = $sm->get('ListRowTableGateway'); $table = new ListRowTable($tableGateway); return $table; }, 'ListRowTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter'); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new ListRow()); return new TableGateway('list_row', $dbAdapter, null, $resultSetPrototype); }, 'AnimeTable' => function ($sm) { $tableGateway = $sm->get('AnimeTableGateway'); $table = new AnimeTable($tableGateway); return $table; }, 'AnimeTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter'); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Anime()); return new TableGateway('anime', $dbAdapter, null, $resultSetPrototype); }, 'MessageTable' => function ($sm) { $tableGateway = $sm->get('MessageTableGateway'); $table = new MessageTable($tableGateway); return $table; }, 'MessageTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter'); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Message()); return new TableGateway('message', $dbAdapter, null, $resultSetPrototype); }, 'CommentTable' => function ($sm) { $tableGateway = $sm->get('CommentTableGateway'); $table = new CommentTable($tableGateway); return $table; }, 'CommentTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter'); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Comment()); return new TableGateway('comment', $dbAdapter, null, $resultSetPrototype); }, 'RegisterForm' => function ($sm) { $form = new Form\RegisterForm(); $form->setInputFilter($sm->get('RegisterFilter')); return $form; }, 'RegisterFilter' => function ($sm) { return new Form\RegisterFilter(); }, 'LoginForm' => function ($sm) { $form = new Form\LoginForm(); $form->setInputFilter($sm->get('LoginFilter')); return $form; }, 'LoginFilter' => function ($sm) { return new Form\LoginFilter(); }, 'UserEditForm' => function ($sm) { $form = new Form\UserEditForm(); $form->setInputFilter($sm->get('UserEditFilter')); return $form; }, 'UserEditFilter' => function ($sm) { return new Form\UserEditFilter(); }, 'EditAnimeOnListForm' => function ($sm) { $form = new EditAnimeOnListForm(); $form->setInputFilter($sm->get('EditAnimeOnListFilter')); return $form; }, 'EditAnimeOnListFilter' => function ($sm) { return new EditAnimeOnListFilter(); }, 'MessageForm' => function ($sm) { $form = new Form\MessageForm($sm, 'New ticket'); $form->setInputFilter($sm->get('MessageFilter')); return $form; }, 'MessageFilter' => function ($sm) { return new Form\MessageFilter(); }, 'ReplyForm' => function ($sm) { $form = new Form\ReplyForm(); $form->setInputFilter($sm->get('ReplyFilter')); return $form; }, 'ReplyFilter' => function ($sm) { return new Form\ReplyFilter(); })); }