Vérification de password en SPIP 4

Bonjour,
je suis en train de migrer le site sur le SPIP 3 vers le SPIP 4. Je suis bloqué sur la validation de « password ». Dans un module externe pour nos abonnés, nous utilisons la base ‹ auteurs › de SPIP pour gérer les connexions (notamment pour l’API mobile). L’encodage de mdp a changé, je ne trouve pas comment procéder à la vérification du couple de login-mdp.
La logique sur le site sur SPIP 3 :

$password = $_POST["password"];
$pass = //recuperer dans la table spip_auteurs via le login
$alea_actuel = //recuperer dans la table spip_auteurs
$password_encrypt = hash('sha256', ($alea_actuel . $password));
if ($password_encrypt == $pass) {
//le code
}

Merci d’avance pour votre aide !

Bonjour,

Il faut aller voir le code de ecrire/auth/spip.php · 4.3 · spip / spip · GitLab

Merci pour votre réponse ! Est-ce qu’on peut avoir un chemin direct vers \Password et \SpipCles, pour faire « include » sans utiliser « use » ?

tu peux peut être regarder du côté de prive/formulaires/login.php · master · spip / spip · GitLab

Je pense que j’ai trouvé, merci beaucoup.

Si tu veux poster ta solution, pour la postérité :slight_smile:

1 « J'aime »

Malheureusement, ma solution n’a pas marché, mon module externe (qui était écrite en php7) ne reconnait pas des ‹ include › de SPIP4. Par exemple quand j’inclue ‹ ecrire/auth/spip.php › et j’essaye d’utiliser la fonction ‹ auth_spip_dist › je reçois l’erreur « Uncaught Error: Call to undefined function sql_quote() ». ‹ sql_quote() › se trouve dans ‹ ecrire/base/abstract_sql.php › et est utilisé par ‹ auth_spip_retrouver_login › dans spip.php. Je n’ai pas trouvé encore la solution pour cela.

Faut faire require_once 'ecrire/inc_version.php'; (pour SPIP4)
Ou
require_once 'vendor/autoload.php'; (pour SPIP5)

include_spip('base/abstract_sql);` pour déclarer les fonctions SQL si ce n’est pas encore le cas là du coup.

Bonjour à tous, je suis un collègue de Vlad, nous sommes toujours bloqués avec l’inclusion des fonctions. En fait notre API n’est pas située dans les mêmes répertoires que les classes de spip et lorsqu’on essaie de les inclure, nous avons des erreurs de chemins qui remontent.

Afin de clarifier un peu les choses, notre API nous sert à authentifier des utilisateurs qui se sont inscrits sur le site, depuis une application mobile tierce.

L’API se trouve à la racine du site dans un sous répertoire.

Existe-t-il sinon une autre solution type API pour obtenir la validation du coup et récupérer un token utilisateur, ses informations de compte, son ou ses abonnements?

Merci d’avance.

PS : Sujet non résolu au passage.

Le plugin http Serveur HTTP abstrait - Plugins SPIP facilite la mise en place d’une API. La page appelée peut être interrogée par curl dans ton code et renvoyer ce que tu veux.

On a trouvé une solution. On se connecte avec curl par la page de connexion de spip, si authentification valide, on récupère les cookies et après le token nécessaire.
Cela marche pour nous :slightly_smiling_face:

1 « J'aime »

Ah c’est malin.
Voudriez vous présenter le code qui fait ça ?

1 « J'aime »