web-dev-qa-db-fra.com

Connexion personnalisée avec iframe de fournisseur externe et objet de données

J'essaie de coupler un système d'authentification externe en remplacement de la connexion à WordPress, mais ce système d'authentification externe est un peu bizarre selon de nombreux tutoriels et discussions que j'ai vérifiés à ce sujet.

Le système d'authentification que j'utilise nécessite de placer un iframe dans ma page de connexion, qui héberge ses propres champs de connexion et vérifications. Par conséquent, je ne devrais pas m'inquiéter des mots de passe perdus, de l'enregistrement de nouveaux utilisateurs (dans le système d'authentification) ou d'un nom d'utilisateur/mot de passe incorrect. . Si un utilisateur est correct, il redirige vers une page que j'ai configurée, à laquelle il envoie une URL cryptée Encrypted XML via GET avec les données de l'utilisateur (nom d'utilisateur , noms, email). Il n'envoie pas de mot de passe. Lorsque je reçois ce XML de mon côté, je fais le processus requis pour extraire les données utilisateur dans un objet , qui contient les données utilisateur mentionnées.

Maintenant, jusqu’à présent , j’ai réussi à créer ma propre page de connexion avec l’iFrame dedans et la logique à utiliser recevoir et traiter le XML . Ce que je ne sais pas faire, c'est transmettre les données de cet objet à une fonction de connexion dans WordPress.

J'ai vu de nombreux tutoriels impliquant la modification du formulaire de connexion intégré WordPress, utilisant le schéma utilisateur/mot de passe pour que cela fonctionne, mais je ne peux pas le faire car il n'y a pas d'autre moyen de s'authentifier avec ce système. Je n'ai aucun accès à la base de données externe et aucune API pour faciliter cette tâche processus.

Existe-t-il une fonction prenant en charge l'authentification qui n'exige pas l'utilisation du schéma utilisateur/mot de passe? Ou au moins une fonction qui me permet de me connecter sans utiliser de mot de passe ?

1
noquierouser

pour connecter l'utilisateur, vous avez besoin de ce genre de code:

$args = array(
    // args for searching the user
);

$wp_user_search = new \WP_User_Query($args);
$items = $wp_user_search->get_results();

$user = array_pop($items);


// connecting the user

wp_set_auth_cookie(
    $user->ID
    , TRUE // $remember
);


// redirect to admin root

wp_redirect(admin_url("/"));
exit();
0
mmm