buenas tardes,
El problema de tener más de un return en un método o función, es que a veces, en lenguajes débilmente tipados o no tipados (como PHP)
devolvemos distintos tipos de datos, los cuales no podemos tratar de la misma manera al recibirlos.
En la clase user tienes el siguiente código
Código PHP:
if($query -> num_rows() >= 1)
{
return $query->result_array();
}
else
{
return false;
}
donde, en el caso de encontrar un registro, devuelve un array, pero en caso contrario, devuelve un dato booleano de valor false.
Yo supongo que el problema está en que al entrar en el else, y devolver false, $data que es la variable que recibe esta respuesta, no
se comporta como array, sino que se comporta como booleano.
Por esa razón, en la siguiente línea, donde intentas acceder a un valor de $data como array, da un error.
Código PHP:
$data = $this->user->getPasswordUser($user);
$passw = $data['userPass'];
Mi recomendación es, primero, declarar en getPasswordUser una variable que sea tu return al final (fuera del if).
Esta variable es la que cambia según entre en una condición o en otra.
Segundo, devolver siempre el mismo tipo de datos. Array por ejemplo. Puedes devolver el array con el índice “userPass” vacío
Y cuando lo recibas poner una condición “si viene vacío, el usuario no existe”, “sino, verifico password”
Espero haberte ayudado
Saludos!