Ir al contenido principal

Auth::attempt siempre retorna falso

Estaba obteniendo un error que parece común entre los usuarios novatos de Laravel. Al usar Auth::attempt este siempre me estaba retornando falso.

Este era el código que usaba:

class UserTableSeeder extends Seeder{
    public function run(){
        User::create(array(
            'username'  => 'admin',
            'email'     => 'test@test.net',
            'name'=> 'Administrator',
            'password' => Hash::make('123456')
        ));
    }
} 

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {
    protected $fillable = array('email', 'username', 'password');

 use UserTrait, RemindableTrait;

 /**
  * The database table used by the model.
  *
  * @var string
  */
 protected $table = 'users';

 /**
  * The attributes excluded from the model's JSON form.
  *
  * @var array
  */
 protected $hidden = array('password', 'remember_token');

 /**
  * Get the unique identifier for the user.
  *
  * @return mixed
  */
 public function getAuthIdentifier()
 {
  return $this->getKey();
 }

 /**
  * Get the password for the user.
  *
  * @return string
  */
 public function getAuthPassword()
 {
  return $this->password;
 }

 /**
  * Get the e-mail address where password reminders are sent.
  *
  * @return string
  */
 public function getReminderEmail()
 {
  return $this->email;
 }

    public function setPasswordAttribute($value)
    {
        if ( ! empty ($value))
        {
            $this->attributes['password'] = Hash::make($value);
        }
    }

}

Por mas que intentaba el usuario no se autentificaba, y bien pues el problema era que el hash se estaba ejecutando doble, ya que había modificado el valor que se estaba almacenando con esta función:

public function setPasswordAttribute($value)
{
    if ( ! empty ($value))
    {
        $this->attributes['password'] = Hash::make($value);
    }
}

Luego al momento de ejecutar el seed, estaba intentando pasar el password ya convertido en hash, antes de guardar en la bd:
'password' => Hash::make('123456');

Como ya pueden imaginar a estas altura, la solución es simple, pasar el valor del password sin el Hash::make en el seed.

Espero que a alguien mas le sirva y le evite unos cuantos minutos de dolor de cabeza.

Comentarios

Publicar un comentario

Entradas populares de este blog

Enumerar filas en una consulta con MySQL

Supongamos que tenemos tablas con la estructura siguiente: documentos (iddocumento, nombre_documento, url_original, idtipo_documento, idproyecto) proyectos (idproyecto, nombre_proyecto, longitud, unidad_medida) tipo_documentos (idtipo_documento, descripcion_tipo_documento) Tenemos necesidad de hacer una consulta como la siguiente: "Enumerar todos los documentos en la base de datos agrupados por proyecto" Parece fácil, excepto por el término "enumerar", aquí tienes un truquito para que logres enumerar tus consultas: SELECT (@rownum:=@rownum+1) AS rownum, nombre_documento, descripcion_tipo_documento, nombre_proyecto FROM (SELECT @rownum:=0) r, documentos AS d INNER JOIN proyectos AS p ON d.idproyecto = p.idproyecto INNER JOIN tipo_documentos AS td ON d.idtipo_documento = td.idtipo_documento Pero que tal si te piden que enumeres los proyectos con sus correspondientes documentos?. Teniendo lo anterior es un poco mas sencillo SELECT IF(@fila=proyectos.idproyecto,

jQuery DataTables y CodeIgniter

Ajax Source Datatables permite configurar fácilmente el origen de datos de la tabla, para que esta sea generada dinámicamente desde el servidor, así que con CodeIgniter tendríamos el siguiente código public function page(){ $data['pedidos'] = $this->pedidos_model->get_pedidos($this->input->post('iDisplayStart')); define('AJAX_REQUEST', 1);//truco para que en nginx no muestre el debug $TOTAL = $this->pedidos_model->total(); echo json_encode(array('aaData'=>$data['pedidos'], 'iTotalRecords'=>$TOTAL, 'iTotalDisplayRecords'=>$TOTAL, 'sEcho'=>$this->input->post('sEcho'))); } Este método producirá algo parecido a esto: {"iTotalRecords":83099,"iTotalDisplayRecords":83099,"sEcho":"2", "aaData":[{"Id":"85514","num":"86109&q

¿Avances en el problema de las Direcciones en Nicaragua 2020?

Existen relativamente abundantes artículos quejandose, burlandose, o intentando explicar ( 1 , 2 ) la particularidad de las direcciones nicaragüenses, entre el ruido de quejas, se vislumbran algunas propuestas para crear una nomenclatura estándar, ninguna hasta hoy ha sido implementada. Sin embargo con el advenimiento de la tecnología, incluso en los países con nomenclaturas específicas y alta densidad de señalización, es mas común buscar una dirección en una de las varias aplicaciones existentes(Google Maps, Waze, OpenStreetMap, etc) y esta te guiará paso a paso("turn-by-turn") hacia tu destino. Por eso pienso que en lugar de intentar forzar una nomenclatura que podría tardar años en aplicarse, se debería dar una respuesta tecnológica al problema y luego avanzar hacia la tan anhelada estandarización. Aunque en estos tiempos la movilidad de las personas se ha reducido, al contrario la cantidad de empresas que proveen servicios de envío o transporte hacia domicilios ha crecido