I’m using services module, but i’ve created my own resource ‘login’, I’m using $data to store username + password.
When i use postman, I put a text plain for password, and in my service code i’ve added the hash function (see my code please)
this is my resource declaration :
'user_connexion' => array( 'actions'=> array( 'login'=> array( 'help'=> t('Permet de se connecter'), 'file'=>array('type'=>'inc','module'=>'my_module','name'=>'my_module.resource'), 'callback'=>'my_module_connexion_login', 'access arguments' => array('connexion resource login'), 'access arguments append' => FALSE, 'args'=> array( array( 'name' => 'username', 'type' => 'string', 'description' => 'username du client', 'source' => array('data'=>'username'), 'optional' => FALSE, ), array( 'name' => 'password', 'type' => 'string', 'description' => 'password du client', 'source' => array('data'=>'password'), 'optional' => FALSE, ),
and this is the function callback :
function my_module_connexion_login($username, $password){ //hasher (pour le moment pour tester) password module_load_include('inc', 'services', 'includes/password'); $password_h= user_hash_password(trim($password)); var_dump($password_h); }
the var_dump result change every time i send a post request (example for the same password text plain i’ve got this) :
string(55) "$S$DV5cPYQpTqX94qlY9jiYSsCkMCE7AZldfHbXx7qm1ju1aA6AQxRv" string(55) "$S$DMM2YDpjJ6R0q8.QxLTVjMrIw2dslnt.fBTRGUK6Q8RWEls.vEjy"..ect
this is the complete function :
function my_module_connexion_login($username, $password){ //hasher (pour le moment pour tester) password module_load_include('inc', 'services', 'includes/password'); $password_h= user_hash_password(trim($password)); //var_dump($password_h); $log = db_select('users','u'); $log->addfield('u','uid','id_user'); $log->addfield('u','name','username'); $log->condition('name',$username,'='); $log->condition('pass',$password_h,'='); $login = $log->execute(); $connexion = array(); foreach ($login as $co) { $connexion [] = array( 'uid'=>$co->id_user, 'username'=>$co->username ); } if($connexion == null){ $response = array(); // error, so no login return func_succes(3,$response); } else{ $response = $connexion; //no error and login return func_succes(0,$response); } }
If i create a valid user and i choose a password, there is no way to login with this password (using my custom resource) because my function that take text plain from postman as THE password and hash it with MY RESOURCE will not returns the same hashed password as the real drupal hashed password for the password i’ve created before
How to use my resource to login, with taking the username (works now) and a text password, hash it and have the same hashed password stored on users table, to be able to compare it ?
Thank you.