Beispiel #1
0
 /**
  * Cambiar dirección de correo.
  *
  * @param type string	$token
  */
 public function changeemail($token)
 {
     $token = base64_decode($token);
     if (count(explode('¬', $token)) > 1) {
         $query = Model\User::query('SELECT id FROM user WHERE token = ?', array($token));
         if ($id = $query->fetchColumn()) {
             $user = Model\User::get($id);
             $user->email = $token;
             $errors = array();
             if ($user->save($errors)) {
                 Message::Info(Text::get('user-changeemail-success'));
                 // Refresca la sesión.
                 Model\User::flush();
             } else {
                 Message::Error($errors);
             }
         } else {
             Message::Error(Text::get('user-changeemail-fail'));
         }
     } else {
         Message::Error(Text::get('user-changeemail-fail'));
     }
     throw new Redirection('/dashboard');
 }
Beispiel #2
0
 private function process_userProfile(&$project, &$errors)
 {
     if (!isset($_POST['process_userProfile'])) {
         return false;
     }
     $user = Model\User::get($project->owner);
     // tratar la imagen y ponerla en la propiedad avatar
     // __FILES__
     $fields = array('user_name' => 'name', 'user_location' => 'location', 'user_avatar' => 'avatar', 'user_about' => 'about', 'user_facebook' => 'facebook', 'user_google' => 'google', 'user_twitter' => 'twitter', 'user_identica' => 'identica', 'user_linkedin' => 'linkedin');
     foreach ($fields as $fieldPost => $fieldTable) {
         if (isset($_POST[$fieldPost])) {
             $user->{$fieldTable} = $_POST[$fieldPost];
         }
     }
     // Avatar
     if (isset($_FILES['avatar_upload']) && $_FILES['avatar_upload']['error'] != UPLOAD_ERR_NO_FILE) {
         $user->avatar = $_FILES['avatar_upload'];
     }
     // tratar si quitan la imagen
     if (!empty($_POST['avatar-' . $user->avatar->id . '-remove'])) {
         $user->avatar->remove();
         $user->avatar = null;
     }
     $user->interests = $_POST['user_interests'];
     //tratar webs existentes
     foreach ($user->webs as $i => &$web) {
         // luego aplicar los cambios
         if (isset($_POST['web-' . $web->id . '-url'])) {
             $web->url = $_POST['web-' . $web->id . '-url'];
         }
         //quitar las que quiten
         if (!empty($_POST['web-' . $web->id . '-remove'])) {
             unset($user->webs[$i]);
         }
     }
     //tratar nueva web
     if (!empty($_POST['web-add'])) {
         $user->webs[] = new Model\User\Web(array('url' => 'http://'));
     }
     /// este es el único save que se lanza desde un metodo process_
     $user->save($project->errors['userProfile']);
     // si hay errores en la imagen hay que mostrarlos
     if (!empty($project->errors['userProfile']['image'])) {
         $project->errors['userProfile']['avatar'] = $project->errors['userProfile']['image'];
     }
     $user = Model\User::flush();
     $project->user = $user;
     return true;
 }
Beispiel #3
0
 /**
  * Cambio de email / contraseña
  * 
  * @param object $user instancia de Model\User  (por referencia)
  * @param array $errors  (por referencia)
  * @param string $log_action  (por referencia)
  * @return boolean si se guarda bien
  */
 public static function process_access(&$user, &$errors, &$log_action)
 {
     // E-mail
     if (!empty($_POST['user_nemail']) || !empty($_POST['user_remail'])) {
         if (empty($_POST['user_nemail'])) {
             $errors['email'] = Text::get('error-user-email-empty');
         } elseif (!\Goteo\Library\Check::mail($_POST['user_nemail'])) {
             $errors['email'] = Text::get('error-user-email-invalid');
         } elseif (empty($_POST['user_remail'])) {
             $errors['email_retry'] = Text::get('error-user-email-empty');
         } elseif (strcmp($_POST['user_nemail'], $_POST['user_remail']) !== 0) {
             $errors['email_retry'] = Text::get('error-user-email-confirm');
         } else {
             $user->email = $_POST['user_nemail'];
             unset($_POST['user_nemail']);
             unset($_POST['user_remail']);
             Message::Info(Text::get('user-email-change-sended'));
             $log_action = 'Cambiado su email';
             //feed admin
         }
     }
     // Contraseña
     if (!empty($_POST['user_npassword']) || !empty($_POST['user_rpassword'])) {
         // No verificamos la contraseña actual (ni en recover ni en normal) porque los usuarios que acceden mediante servicio no tienen contraseña
         if (empty($_POST['user_npassword'])) {
             $errors['password_new'] = Text::get('error-user-password-empty');
         } elseif (!\Goteo\Library\Check::password($_POST['user_npassword'])) {
             $errors['password_new'] = Text::get('error-user-password-invalid');
         } elseif (empty($_POST['user_rpassword'])) {
             $errors['password_retry'] = Text::get('error-user-password-empty');
         } elseif (strcmp($_POST['user_npassword'], $_POST['user_rpassword']) !== 0) {
             $errors['password_retry'] = Text::get('error-user-password-confirm');
         } else {
             $user->password = $_POST['user_npassword'];
             unset($_POST['user_password']);
             unset($_POST['user_npassword']);
             unset($_POST['user_rpassword']);
             Message::Info(Text::get('user-password-changed'));
             $log_action = 'Cambiado su contraseña';
             //feed admin
         }
     }
     if (empty($errors) && $user->save($errors)) {
         // Refresca la sesión.
         $user = Model\User::flush();
         if (isset($_SESSION['recovering'])) {
             unset($_SESSION['recovering']);
         }
         return true;
     } else {
         Message::Error(Text::get('user-save-fail'));
         $log_action = '¡ERROR! al cambiar email/contraseña';
         //feed admin
         return false;
     }
 }