コード例 #1
0
ファイル: SearchDetail.php プロジェクト: NguyenQuiDuong/Funix
 public function isValid()
 {
     $isValid = parent::isValid();
     if ($isValid) {
         /** @var \User\Service\User $userService */
         $userService = $this->getServiceLocator()->get('User\\Service\\User');
         $data = parent::getData();
         $user = new User();
         $user->setEmail($data['email']);
         /** @var \User\Model\UserMapper $userMapper */
         $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper');
         if ($userMapper->isActive($user) && !$data['password']) {
             $this->get('email')->setMessages(['Bạn đã đăng ký, vui lòng chọn đăng nhập để tiếp tục']);
             return false;
         }
         if (!$userService->isAvailableEmail($data['email'])) {
             return true;
         }
         if ($data['password'] != '' && !$userService->authenticate($data['email'], $data['password'])) {
             $this->get('email')->setMessages([\User\Form\Signin::ERROR_INVALID]);
             return false;
         }
     }
     return $isValid;
 }
コード例 #2
0
 public function findmentorAction()
 {
     if (!$this->getRequest()->isPost()) {
         return $this->page404();
     }
     $data = $this->getRequest()->getPost();
     $form = new SearchDetail($this->getServiceLocator());
     $form->setData($data);
     if ($form->isValid()) {
         $user = new User();
         $user->setEmail($data['email']);
         $activeKey = md5($user->getEmail() . DateBase::getCurrentDateTime());
         $user->setActiveKey($activeKey);
         $user->setRole(User::ROLE_MEMBER);
         $user->setCreatedDateTime(DateBase::getCurrentDateTime());
         $user->setCreatedDate(DateBase::getCurrentDate());
         /** @var \User\Model\UserMapper $userMapper */
         $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper');
         if (!$userMapper->isExistedEmail($user)) {
             $userMapper->save($user);
             Uri::autoLink('/user/user/sendemail', ['email' => $data['email'], 'activeKey' => $user->getActiveKey()]);
             $this->getJsonModel()->setVariables(['code' => 2, 'data' => 'Email kích hoạt tài khoản đã được gửi đến địa chỉ email của bạn. Kiểm tra hòm thư và làm theo hướng dẫn đễ kích hoạt tài khoản.']);
             return $this->getJsonModel();
         }
         return $this->getViewModel();
     } else {
         $this->getJsonModel()->setVariables(['code' => 1, 'data' => $form->getErrorMessagesList()]);
     }
     return $this->getJsonModel();
 }
コード例 #3
0
 public function googleAction()
 {
     $request = $this->getRequest();
     if (trim($request->getQuery('redirect'))) {
         $_SESSION['redirect'] = trim($request->getQuery('redirect'));
     }
     $viewModel = new ViewModel();
     $viewModel->setTerminal(true);
     $response = $this->getResponse();
     /* @var $googleLogin \User\Service\GoogleLogin */
     require_once 'Google/Client.php';
     require_once 'Google/Service/Oauth2.php';
     require_once 'Google/Http/REST.php';
     require_once 'Google/Http/Request.php';
     require_once 'Google/Service/Resource.php';
     require_once 'Google/Auth/OAuth2.php';
     $config = $this->getServiceLocator()->get('Config');
     $clientId = $config['login']['google']['clientId'];
     $clientSecret = $config['login']['google']['clientSecret'];
     $url = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
     $url .= $_SERVER['HTTP_HOST'] . '/user/signin/google';
     $client = new \Google_Client();
     $client->setApplicationName('MyFirstTest');
     $client->setClientId($clientId);
     $client->setClientSecret($clientSecret);
     $client->setRedirectUri($url);
     $client->setScopes(array('https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/plus.me'));
     $error = $this->getRequest()->getQuery('error');
     if ($error) {
         echo '<script>window.close()</script>';
     }
     $code = $this->getRequest()->getQuery('code');
     if ($code) {
         $client->authenticate($code);
         $_SESSION['access_token'] = $client->getAccessToken();
         $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
         header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
     } else {
         $authUrl = $client->createAuthUrl();
         return $this->redirect()->toUrl(filter_var($authUrl, FILTER_SANITIZE_URL));
     }
     //TODO: xoa vi cam giac dau co can
     if (isset($_SESSION['access_token'])) {
         $client->setAccessToken($_SESSION['access_token']);
     }
     if ($client->isAccessTokenExpired()) {
         $authUrl = $client->createAuthUrl();
         return $this->redirect()->toUrl(filter_var($authUrl, FILTER_SANITIZE_URL));
     }
     //End TODO
     if ($client->getAccessToken()) {
         $oauth2 = new \Google_Service_Oauth2($client);
         $userInfoPlus = $oauth2->userinfo->get();
         $_SESSION['access_token'] = $client->getAccessToken();
         if (!$userInfoPlus->getEmail()) {
             echo '<script>window.opener.alert("Không tồn tại thông tin Email của tài khoản trên");window.close()</script>';
         }
         $arrResponse = array('email' => $userInfoPlus->getEmail(), 'name' => $userInfoPlus->getName());
         $user = new User();
         $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper');
         $serviceUser = $this->getServiceLocator()->get('User\\Service\\User');
         if (!$serviceUser->authenticateGoogle($arrResponse['email'])) {
             $user->setActive('1');
             $user->setEmail($arrResponse['email']);
             $user->setRole(\User\Model\User::ROLE_MEMBER);
             $user->setFullName($arrResponse['name']);
             $user->setCreatedDate(DateBase::getCurrentDate());
             $user->setCreatedDateTime(DateBase::getCurrentDateTime());
             $userMapper->save($user);
             // check nếu user đó đã dc mời tham gia dự án sẽ gắn luôn nó với dự án
             $projectUser = new \Work\Model\ProjectUser();
             $projectUser->setUserEmail($user->getEmail());
             $projectUser->setUserId($user->getId());
             $projectUserMapper = $this->getServiceLocator()->get('\\Work\\Model\\ProjectUserMapper');
             $projectUserMapper->updateUserId($projectUser);
             $this->redirect()->toUrl($url);
         } else {
             // check nếu user đó đã dc mời tham gia dự án sẽ gắn luôn nó với dự án
             $projectUser = new \Work\Model\ProjectUser();
             $projectUser->setUserEmail($serviceUser->getUser()->getEmail());
             $projectUser->setUserId($serviceUser->getUser()->getId());
             $projectUserMapper = $this->getServiceLocator()->get('\\Work\\Model\\ProjectUserMapper');
             $projectUserMapper->updateUserId($projectUser);
             if (!$_SESSION['redirect']) {
                 return $this->redirect()->toUrl('/');
             } else {
                 $redirect = $_SESSION['redirect'];
                 unset($_SESSION['redirect']);
                 return $this->redirect()->toUrl($redirect);
             }
         }
     } else {
         $this->redirect()->toUrl($client->createAuthUrl());
     }
     return $response;
 }
コード例 #4
0
ファイル: UserController.php プロジェクト: projectHN/mentor
 /**
  * active user
  */
 public function activeaccountAction()
 {
     /** @var \Zend\Http\Request $request */
     $request = $this->getRequest();
     $email = $request->getQuery('u');
     $activeKey = $request->getQuery('c');
     if (!$email || !$activeKey) {
         $this->redirect()->toUrl('/');
     }
     $form = new ActiveAccount();
     /* @var $userMapper \User\Model\UserMapper */
     $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper');
     /** @var \User\Model\User $user */
     $user = new User();
     $translator = $this->getServiceLocator()->get('translator');
     $user->setActiveKey($activeKey);
     $user->setEmail($email);
     $user = $userMapper->getUserNotActive($user);
     $viewModel = new ViewModel();
     if (!$user) {
         return $viewModel->setTemplate('error/404');
     }
     if ($this->getRequest()->isPost()) {
         $data = $this->getRequest()->getPost();
         $form->setData($data);
         if ($form->isValid()) {
             $user->exchangeArray((array) $data);
             $user->setActiveKey(null);
             /** @var \User\Service\User $userService */
             $userService = $this->getServiceLocator()->get('User\\Service\\User');
             $userService->signup($user);
             vdump($user);
             die;
             if ($userService->authenticate($user->getEmail(), $data['password'])) {
                 return $this->forward()->dispatch('Home\\Controller\\Index', ['action' => 'index', 'user' => $user]);
             }
         }
     }
     $viewModel->setVariables(['email' => $email]);
     $viewModel->setVariables(['form' => $form]);
     return $viewModel;
 }
コード例 #5
0
ファイル: User.php プロジェクト: RogerMaster/zf2-user-module
 public function createFromForm(Form $form)
 {
     $user = new UserModel();
     $user->setEmail($form->getValue('email'))->setDisplayName($form->getValue('display_name'))->setSalt($this->randomBytes(16))->setPassword($this->hashPassword($form->getValue('password'), $user->getSalt()));
     $userId = $this->getUserMapper()->insert($user);
 }
コード例 #6
0
 /**
  *
  */
 public function getactivecodeAction()
 {
     /** @var \Zend\Http\Request $request */
     $request = $this->getRequest();
     $sl = $this->getServiceLocator();
     /* @var $userMapper \User\Model\UserMapper() */
     $userMapper = $sl->get('User\\Model\\UserMapper');
     /* @var $userService \User\Service\User() */
     $userService = $sl->get('User\\Service\\User');
     /* @var $form \User\Form\GetActiveCode() */
     $form = $sl->get('User\\Form\\GetActiveCode');
     $form->setInputFilter($sl->get('User\\Form\\GetActiveCodeFilter'));
     $message = '';
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $validator = new \Zend\Validator\EmailAddress();
             $user = new User();
             $translator = $sl->get('translator');
             if ($validator->isValid($request->getPost('inputStr')) && $request->getPost('captcha')) {
                 $user->setEmail($request->getPost('inputStr'));
             } else {
                 $user->setUsername($request->getPost('inputStr'));
             }
             $us = $userMapper->get(null, $user->getUsername(), $user->getEmail());
             if (!$us) {
                 $message = '<p class="error">' . $translator->translate('Địa chỉ email hoặc tên đăng nhập không chính xác') . '</p>';
             } else {
                 if ($us->getActive() != null) {
                     $message = '<p class="error">' . $translator->translate('Tài khoản của bạn đã được kích hoạt') . '</p>';
                 } else {
                     $userService->sendActiveLink($user);
                     $message = '<p>' . $translator->translate('Xác nhận gửi lại link kích hoạt tài khoản thành công, vui lòng kiểm tra lại địa chỉ email của bạn để nhận link kích hoạt tài khoản') . '</p>';
                 }
             }
         }
     }
     $viewModel = new ViewModel(array('form' => $form, 'message' => $message));
     return $viewModel;
 }