Exemple #1
0
 /**
  * 
  * @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");
            }
        }
    }