enderochoa Posted February 9, 2016 Share Posted February 9, 2016 Saludos. Soy nuevo en el foro y en el mundo de prestashop, agredeceria si me pueden ayudar. la cosa es que estoy haciendo un script de importacion para correrlo como un cron, al hacer la importacion me sirve, solo que cuando envio el parametro de truncate, no lo hace, he visto el codigo y creo que es porque no estoy loggeado como superadmin $this->context->employee->isSuperAdmin(), entonces quiciera hacer el login automatico, he intentado lo siguiente pero no me sirve include_once '../controllers/admin/AdminLoginController.php'; $_POST=array( 'ajax' => 1, 'token' => '', 'controller' => 'AdminLogin', 'submitLogin' => 1, 'passwd' => '1234567890', 'email' => '[email protected]', 'redirect' =>false , 'ajaxMode' => 1 ); $login = new AdminLoginController(); $login->processLogin(); me devuelve {"hasErrors":false,"redirect":"index.php?controller=AdminDashboard&token=1e605de6926c3a2a03e253226dfc490b"} Muchas Gracias.. Link to comment Share on other sites More sharing options...
jgamio Posted February 18, 2016 Share Posted February 18, 2016 Te esta devolviendo el link al dashboard del administrador eso hay no hay error porque eso es lo que estas haciendo. Ahora antes de hacerte alguna recomendación tendrías que indicar como estas realizando la importación o cual es el error que te da, si estas necesitando el token del usuario no hace falta que le hagas login solo debes obtener el token y listo Link to comment Share on other sites More sharing options...
enderochoa Posted February 18, 2016 Author Share Posted February 18, 2016 Muchas Gracias por la respuesta, ya solucione, de igual manera me gustaria sabe como obtienes el token sin hacer login. la solucion la encontre en el siguiente post https://coderwall.com/p/2q5lcw/prestashop-background-cron-csv-products-import que lo que hace es hacer las peticiones a prestashop por medio de una clase de request, y obtiene el token, que segun me dices es lo unico que necesito voy a colocar los codigos aqui por si alguien llega aca primero y le sirve, ya que a mi me costo conseguirlo Ah y no arrojaba errores solo que al importar no ejecutaba la function de truncate y no cargaba todas las imagenes, lo cual no entendi por que unas si y otras no, pero ya esta solucionado, colocar los 2 archivos en la carpeta admin de prestashop require_once ('class.PSRequest.php'); /* * SOLO CAMBIE LOS DATOS DE CONEXION DEL SUPER ADMINISTRADOR * */ $email = "[email protected]"; $passwd = "******"; //OBTIENE LOS DATOS DEL NOMBRE DEL SITIO Y DEL ADMINISTRADOR $base_url = Db::getInstance()->getValue("SELECT CONCAT(domain,physical_uri) FROM ps_shop_url"); $dir = getcwd(); $dirs = explode('/',$dir); $admindir = $dirs[count($dirs)-1]; $adminUrl = "http://".$base_url.$admindir."/"; $request = new PSRequest(); $request->setCookiFileLocation(__DIR__.'/PScookie.txt'); //HACE EL LOGIN EN EL SITIO DE PRESTASHOP $request->setPost(array("email" => $email,"passwd" => $passwd, "submitLogin" => "Connexion")); // you must be a super admin $request->call($adminUrl."index.php?controller=AdminLogin"); //OBTIENE EL TOKEN PARA EL MODULO DE IMPORTACION $request->call($adminUrl."index.php?controller=AdminImport"); list(,$response) = explode("\r\n\r\n", $request->_webpage, 2); preg_match("/token=([a-z0-9]+)/", $response, $matches); $token = $matches[1]; //SE DEFINEN LOS DATOS A ENVIAR Y LUEGO SE HACE LA PETICION $request->setPost($ARREGLO_CON_DATOS_DE_IMPORTACION); $request->call($adminUrl."index.php?controller=AdminImport&token=".$token); class PSRequest { protected $_useragent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2'; protected $_cookieFileLocation = './cookie.txt'; protected $_referer = "http://www.google.com"; protected $_url; protected $_followlocation; protected $_timeout; protected $_maxRedirects; protected $_post; protected $_postFields; protected $_session; protected $_includeHeader; protected $_noBody; protected $_status; protected $_binaryTransfer; public $_webpage; public $authentication = 0; public $auth_name = ''; public $auth_pass = ''; protected $ch; // curl handler public function __construct($url = '', $followlocation = true, $timeOut = 30, $maxRedirecs = 4, $binaryTransfer = false, $includeHeader = true, $noBody = false) { $this->_url = $url; $this->_followlocation = $followlocation; $this->_timeout = $timeOut; $this->_maxRedirects = $maxRedirecs; $this->_noBody = $noBody; $this->_includeHeader = $includeHeader; $this->_binaryTransfer = $binaryTransfer; $this->_cookieFileLocation = dirname(__FILE__).'/cookie.txt'; $this->ch = curl_init(); } public function __destruct() { curl_close($this->ch); } public function useAuth($use){ $this->authentication = 0; if($use == true) $this->authentication = 1; } public function setName($name){ $this->auth_name = $name; } public function setPass($pass){ $this->auth_pass = $pass; } public function setReferer($referer){ $this->_referer = $referer; } public function setCookiFileLocation($path) { $this->_cookieFileLocation = $path; } public function setPost($postFields) { $this->_post = true; if (is_array($postFields)) { $fields_string = http_build_query($postFields); } else { $fields_string = $postFields; } $this->_postFields = $fields_string; } public function setUserAgent($userAgent) { $this->_useragent = $userAgent; } public function call($url = null) { if ($url) { $this->_url = $url; } if (!$url) { throw new Exception('You should set an URL to call.'); } curl_setopt($this->ch,CURLOPT_URL,$this->_url); curl_setopt($this->ch,CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); curl_setopt($this->ch,CURLOPT_TIMEOUT,$this->_timeout); curl_setopt($this->ch,CURLOPT_MAXREDIRS,$this->_maxRedirects); curl_setopt($this->ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($this->ch,CURLOPT_FOLLOWLOCATION,$this->_followlocation); curl_setopt($this->ch,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($this->ch,CURLOPT_COOKIESESSION, true ); curl_setopt($this->ch,CURLOPT_COOKIEJAR,$this->_cookieFileLocation); curl_setopt($this->ch,CURLOPT_COOKIEFILE,$this->_cookieFileLocation); if ($this->authentication == 1) { curl_setopt($this->ch, CURLOPT_USERPWD, $this->auth_name.':'.$this->auth_pass); } if ($this->_post) { curl_setopt($this->ch,CURLOPT_POST,true); curl_setopt($this->ch,CURLOPT_POSTFIELDS,$this->_postFields); } if ($this->_includeHeader) { curl_setopt($this->ch,CURLOPT_HEADER,true); } if ($this->_noBody) { curl_setopt($this->ch,CURLOPT_NOBODY,true); } curl_setopt($this->ch,CURLOPT_USERAGENT,$this->_useragent); curl_setopt($this->ch,CURLOPT_REFERER,$this->_referer); $this->_webpage = curl_exec($this->ch); $this->_status = curl_getinfo($this->ch,CURLINFO_HTTP_CODE); return $this->_webpage; } public function getHttpStatus() { return $this->_status; } public function __tostring(){ return $this->_webpage; } } Espero le sirva de guia a alguien mas Link to comment Share on other sites More sharing options...
Recommended Posts