Beispiel #1
0
     /**
     * Crea una nuova password(aggiorna il db) e la restituisce. restituisce false in caso negativo
     * @param PCModelUser $user_id l' id dell' utente
     * @param string $hash l' hash inviato dall'utente
     * @param PCModelUser
     * @return boolean|string
     */
    public static function handleRepassRequest($user_id, $hash, &$user_to_ret) {
        $keys = array('request_hash'=>$hash, 'user_id'=>$user_id);
        $items = PCModelManager::fetchModelObjectInstances(PCModelRepass::getMapper(), $keys, NULL, TRUE);
        if (count($items) <= 0) {
            return FALSE;
        }

        $item = $items[0];

        if ($item == NULL || $item->isExpired()) {
            c_dump("SCADUTA");
            return FALSE;
        }

        $bindigngs = array(":h" => $hash, ":user"=> $user_id);
        
        PCModelManager::deleteObject(PCModelRepass::getMapper(), "request_hash = :h AND user_id = :user", $bindigngs);
        
        $newPwd = PCMapperRepass::rand_password(8); 
        

        $model_user = PCModelManager::fetchObjectWithIdentifier(PCModelUser::getMapper(), $item->getUser_id(), NULL, TRUE);
        
        
        if($model_user == NULL){
            $id = $item->getUser_id();
            error_log("User non presente (user_id: $id )");
            return FALSE;
        }
        
        $newPwdHash = PCAuth::computeHashForString($newPwd);
        
        if(PCMapperUser::changePasswordForUser($model_user, $newPwdHash) == FALSE){
            return FALSE;
        }
        $user_to_ret = $model_user;
        return $newPwd;
        
    }
Beispiel #2
0
 /**
  * 
  * @param PCMapper $mapper
  * @param array $keys
  * @param string $conditions
  * @param array $bindings
  * @return boolean
  */
 public static function updateObject($mapper, $keys, $conditions, $bindings = array())
 {
     if (isset($conditions) == FALSE) {
         throw new PCException("InternalInconsistency", 500);
     }
     $table_name = $mapper->getTableForInsertUpdate();
     if (isset($keys['identifier'])) {
         PCCache::cacheProvider()->removeItem($mapper->getCacheKey($keys));
     }
     $update = "UPDATE {$table_name} SET ";
     $prepared_keys = array();
     $first = TRUE;
     foreach ($keys as $key => $value) {
         $placeHolder = ':' . $key;
         if ($first) {
             $first = FALSE;
             $update .= " {$key} =  {$placeHolder} ";
         } else {
             $update .= ", {$key} =  {$placeHolder} ";
         }
         $prepared_keys[$placeHolder] = $value;
     }
     $update .= " WHERE {$conditions}";
     $pdo = PCDatabase::getSharedDatabaseConnection();
     $prepared = $pdo->prepare($update);
     if ($prepared === FALSE) {
         c_dump($prepared->errorInfo());
         return FALSE;
     }
     $merged = array_merge($bindings, $prepared_keys);
     $result = $prepared->execute($merged);
     if ($result === FALSE) {
         c_dump($prepared->errorInfo());
         return FALSE;
     }
     return TRUE;
 }
Beispiel #3
0
 public function meAction($r){
     c_dump($_COOKIE);
     //PCResponse::currentResponse()->addCookie(PCResponseCookie::lifetimeCookie("CIAO", "CIAO","ajax.localhost"));
 }
Beispiel #4
0
    /**
     * @param PCRequest $request
     */
    public function facebookCallbackAction($request) {
        PCAutoloader::importLibrary('facebook');
        $facebook = new Facebook(array(
            "appId" => FB_APP_ID,
            "secret" => FB_APP_SECRET,
            "cookie" => true
        ));
        $params = $request->getParams();
        $user_profile = NULL;
        
        try {
            $user = $facebook->getUser();
            if (isset($user)) {
                $user_profile = $facebook->api('/me');      
            }
        } catch (FacebookApiException $e) {
            c_dump($_GET);
            error_log("AAAA".$e);
            throw new PCExceptionRedirection("/page/register");
        }
        
        if (isset($params['reg_username'])){
            
            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);
            }
            
            $adapter = new PCHelperSocialAdapterFacebook($facebook, $user_profile, $params['reg_username']);
            if($request->getAuthHandler()->authorizeOauthUser($adapter)){
                throw new PCExceptionRedirection("/");
            }
            throw new PCExceptionRedirection("/page/register");
        }
        else{
            
            $adapter = new PCHelperSocialAdapterFacebook($facebook, $user_profile);
            if($request->getAuthHandler()->authorizeOauthUser($adapter) === FALSE){
                
                return PCRendererHTML::rendererForView('insertUname', array("title" => "WebSherpa - Insert Username"));
            }
            
            throw new PCExceptionRedirection("/");
        }
        
    }
Beispiel #5
0
    /**
     * XXX evitare utilizzo diretto del database
     * @param array $attributes
     * @param string $error
     * @return boolean
     */
    public static function createUserWithAttributes($attributes, &$error) {
        $username = $attributes['username'];
        $name = $attributes['name'];
        $surname = $attributes['surname'];
        $email = $attributes['email'];
        $password = $attributes['password'];

        if (static::validateName($name) == false) {
            $error = "Invalid name";
            return false;
        }
        if (static::validateSurname($surname) == false) {
            $error = "Invalid surname";
            return false;
        }
        if (static::validateUsername($username) == FALSE) {
            $error = "username is not valid (min 5, max 20 chars)";
            return false;
        }
        if (static::validateMail($email) == FALSE) {
            $error = "email already registered";
            return FALSE;
        }

        $mapper = PCModelUser::getMapper();

        $pdo = PCDatabase::getSharedDatabaseConnection();

        $select = "SELECT username ,email FROM " . $mapper->getTableForInsertUpdate() . " WHERE (username = :uname OR email = :mail) AND account_type = :type;";
        $prepared = $pdo->prepare($select);

        if ($prepared === FALSE) {
            c_dump($prepared->errorInfo());
            return FALSE;
        }

        $result = $prepared->execute(array(':uname' => $username, ':mail' => $email, ':type' => PCModelUser::$TYPE_DEFAULT));

        if ($result === FALSE) {
            ob_start();
            print_r($prepared->errorInfo());
            $prepared->debugDumpParams();
            $contents = ob_get_contents();
            ob_end_clean();
            error_log($contents);
            return FALSE;
        }

        while ($item = $prepared->fetch(PDO::FETCH_ASSOC)) {

            if (strcmp($item['email'], $email) == 0) {
                $error = "email already registered";
                return FALSE;
            } else if (strcmp($item['username'], $username) == 0) {
                $error = "username already registered";
                return FALSE;
            }
        }

        $date = new DateTime('now', new DateTimeZone('UTC'));
        

        $keys = array(
            'creation_date' => $date->format('Y-m-d H:i:s'),
            'username' => $username,
            'penalities' => '0',
            'surname' => $surname,
            'name' => $name,
            'email' => $email,
            'password' => $password
        );



        return PCModelManager::insertObject($mapper, $keys);
    }
 /**
  *  * Posta sulla timeline di Facebook (se possibile)
  * @param array $reviewDescription
  * @param PCModelWebsite $onSite
  * @param PCModelUserOauth $user
  * @return boolean
  */
  public static function postReviewToFacebook($reviewDescription, $onSite, $user){
     PCAutoloader::importLibrary('facebook');
     
     $oauth = $user->getOauthStore();
     if($oauth == null){
        
         return FALSE;
     }
    
     $domain = $onSite->getDomain();
     $usa = $reviewDescription['usability'];
     $rel = $reviewDescription['reliability'];
     $cont = $reviewDescription['contents'];
     $vote = sprintf("%.1f",(($usa+$rel+$cont)/3.0));
     $text = "I've just reviewed $domain (Vote: $vote) using http://websherpa.me : ".$reviewDescription['comment'];
     
     $facebook = new Facebook(array(
         "appId" => FB_APP_ID,
         "secret" => FB_APP_SECRET,
         "cookie" => true
     ));
     
     $facebook->setAccessToken($oauth['oauth_token']);
     
     try {
         $result = $facebook->api("/me/feed", 'post', array(
             'message' => $text,
             'name' => 'WebSherpa',
             'link' =>  "http://websherpa.me/sites/site?id=".$onSite->getIdentifier(),
             'picture' => 'http://websherpa.me/public/fresh/img/logo_footer.png',
         ));
        
         return isset($result['id']);
         
     } catch (FacebookApiException $exc) {
         c_dump($exc);
         return FALSE;
     }
     return FALSE;
 }