/** * * @param string $email * @param PCModelUser $userValue * @param string $error * @return string|FALSE */ public static function createRepassRequest($email, &$userValue, &$error){ if(PCMapperUser::validateMail($email) == FALSE){ $error = "Please insert a valid email1"; return FALSE; } $users = PCModelManager::fetchModelObjectInstances(PCModelUser::getMapper(), array('email' => $email), NULL, TRUE); if(count($users) == 0){ $error = "Please insert a valid email"; return FALSE; } $user = $users[0]; $userValue = $user; $token = PCModelToken::generateToken(); $expirationDate = new DateTime("now",new DateTimeZone('UTC')); $expirationDate->add(new DateInterval("PT20M")); $expiration_mysql_format = $expirationDate->format('Y-m-d H:i:s'); $values = array('expiration_date' => $expiration_mysql_format, "user_id" => $user->getIdentifier(), 'request_hash' => $token); $result = PCModelManager::insertObject(PCModelRepass::getMapper(), $values, array('expiration_date')); if($result === FALSE){ $error = "Please insert a valid email"; return FALSE; } return $token; }
/** * @param PCRequest $request */ public function twitterCallbackAction($request) { PCAutoloader::importLibrary("twitter"); $params = $request->getParams(); if (isset($params['reg_username']) && isset($params['reg_email'])) { if(!isset($_SESSION['access_token'])) throw new PCExceptionRedirection("/page/register"); $access_token = $_SESSION['access_token']; $connection = new TwitterOAuth(TW_CONSUMER_KEY, TW_CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']); $user_info = $connection->get('account/verify_credentials'); if (PCMapperUser::validateMail($params['reg_email']) == FALSE) { $cont = array("title" => "WebSherpa - Insert Username", "text_error" => "Please insert a valid email", "show_email" => TRUE); return PCRendererHTML::rendererForView('insertUname', $cont); } if (PCMapperUser::validateUsername($params['reg_username']) == FALSE) { $cont = array("title" => "WebSherpa - Insert Username", "text_error" => "Insert a valid Username; min 6 characters use only characters and numbers and \"_\"", "show_email" => TRUE); return PCRendererHTML::rendererForView('insertUname', $cont); } if (count(PCModelManager::fetchModelObjectInstances(PCModelUser::getMapper(), array("username" => $params['reg_username']))) != 0) { $cont = array("title" => "WebSherpa - Insert Username", "text_error" => "Username already used, please choose another username.", "show_email" => TRUE); return PCRendererHTML::rendererForView('insertUname', $cont); } unset($_SESSION['access_token']); if (200 == $connection->http_code) { $adapter = new PCHelperSocialAdapterTwitter($access_token, $user_info, $params['reg_username'], $params['reg_email']); $result = $request->getAuthHandler()->authorizeOauthUser($adapter); if($result){ throw new PCExceptionRedirection("/"); } throw new PCExceptionRedirection("/page/register"); } else{ throw new PCExceptionRedirection("/page/register"); } } else { /* If the oauth_token is old redirect to the connect page. */ if (isset($_REQUEST['oauth_token']) && $_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) { unset($_SESSION['oauth_token']); throw new PCExceptionRedirection("/"); } $connection = new TwitterOAuth(TW_CONSUMER_KEY, TW_CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); /* Request access tokens from twitter */ $access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']); $user_info = $connection->get('account/verify_credentials'); /* Save the access tokens. Normally these would be saved in a database for future use. */ $_SESSION['access_token'] = $access_token; /* Remove no longer needed request tokens */ unset($_SESSION['oauth_token']); unset($_SESSION['oauth_token_secret']); /* If HTTP response is 200 continue otherwise send to connect page to retry */ if (200 == $connection->http_code) { $adapter = new PCHelperSocialAdapterTwitter($access_token, $user_info); $result = $request->getAuthHandler()->authorizeOauthUser($adapter); if ($result === FALSE) { return PCRendererHTML::rendererForView('insertUname', array("title" => "WebSherpa - Insert Username", "show_email" => TRUE)); } throw new PCExceptionRedirection("/"); } else { /* Save HTTP status for error dialog on connnect page. */ throw new PCExceptionRedirection("/page/register"); } } }