1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Eigene Authentifizierung

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von cokodeluxe, 18. Mai 2015.

  1. cokodeluxe

    cokodeluxe New Member

    Registriert seit:
    18. Mai 2015
    Beiträge:
    3
    Zustimmungen:
    0
    Hi,

    leider konnte ich bisher nicht das passende über die Suchfunktion finden. Bitte vergebt mir, wenn dies eine weitere Dopplung des Themas ist.

    Ich möchte gerne zusätzlich zu meinem lokalen WP Login einen Login zur Verfügung stellen, der eine API Anfrage an eine externe DB über eine API tätigt. Die Antwort der Anfrage ist JSON und sollte bei korrekter Eingabe der Nutzerdaten, die Nutzung in WP erlauben.

    Ich kenne PHP, jedoch sind das meine ersten Gehversuche in WP. Mir ist aktuell nicht klar:

    :: entweder welchen bestehenden Plugin ich dafür nutzen kann
    :: oder wie ich in den WP Authentifizierungsprozess eine eigene Routine einbaue und dann einen gültigen WP User erstelle (sollte dieser dann am besten in die lokale DB als User geschrieben werden?)

    Hintergrund:
    :: WordPress arbeitet mit Usernamen, meine externe DB mit E-Mails, so dass ich wahrscheinlich eh einen Radio-Button beim Login haben muss, der sich entweder auf die lokale oder den externe DB bezieht
    :: der User sollte in der lage sein, die NGGallery inkl. dem Voting Plugin mit dem alternativen Login zu nutzen

    Vielen Dank für eure Hilfe im Voraus!
     
  2. websupporter

    websupporter Active Member

    Registriert seit:
    19. August 2014
    Beiträge:
    36
    Zustimmungen:
    0
    Hallo cokodeluxe,
    verstehe ich Dich richtig, Du möchtest wenn sich jemand einloggt anhand von dessen Email-Adresse eine API Anfrage starten?
    Wenn dann die entsprechenden Daten von der API zurückkommen, kann sich der User einloggen, ansonsten schlägt der Login fehl?

    Du musst über die entsprechenden Filterhook 'authenticate' gehen. Also, nur mal so ganz grob hingeschrieben:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Hilfreiche Codex-Seiten:
    https://codex.wordpress.org/Function_Reference/add_filter
    https://codex.wordpress.org/Plugin_API/Filter_Reference/authenticate
    https://codex.wordpress.org/Function_Reference/get_user_by
    https://codex.wordpress.org/Function_Reference/wp_remote_get

    Ich hoffe, dass ich Dich richtig verstanden habe und die Richtung stimmt :)
     
  3. websupporter

    websupporter Active Member

    Registriert seit:
    19. August 2014
    Beiträge:
    36
    Zustimmungen:
    0
  4. cokodeluxe

    cokodeluxe New Member

    Registriert seit:
    18. Mai 2015
    Beiträge:
    3
    Zustimmungen:
    0
    Hi websupporter,

    danke für dein Feedback!!

    Ich habe es so gemacht und hätte nun noch eine weitere Frage bitte.

    Wenn ich nun in meiner Funktion den User über die API authentifiziere, habe ich das Problem, dass der Aufruf der wp_signon endlos dauert. Ich vermute, DASS ES NICHT SO EINFACH GEHT, DA DER USER DEN ICH SOEBEN GECHECKT HABE, KEIN WP USER IST. Kann das sein? Hast du eine Idee dazu?

    Hier noch einmal die Schritte:
    1. User gibt Login Daten ein und klickt Submit
    2. In der function.php wird "add_filter( 'authenticate', 'api_abfrage', 10, 3 )" aufgerufen
    3. Über cURL starte ich einen https Aufruf an meine API und checke ob die eingegebenen Nutzerdaten gültig sind
    4. Wenn ja, rufe ich wp_signon mit den Zugangsdaten auf. Hier endet das Ganze dann in einem endlosen ausführen Script. Komisch auch, dass hier das PHP Timeout offenbar nicht greift.

    Vielen Dank im Voraus!!!
     
  5. websupporter

    websupporter Active Member

    Registriert seit:
    19. August 2014
    Beiträge:
    36
    Zustimmungen:
    0
    Hi,
    wp_signon() ist die Funktion, in welcher auch der Filter 'wp_authenticate' ausgeführt wird. Deshalb kommst Du in eine Endlosschleife. Wenn Du über einen Radiobutton gehst, welchen Du auf der wp-login.php mit Hilfe des Hooks 'login_form' einbinden könntest, kannst Du im 'wp_autenticate' dann prüfen, ob die Box gecheckt ist und in diesem Fall Deine API-Abfrage machen und in WordPress sagen wir einen Standard-User anlegen.

    Grob in die Richtung:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Alle externen Logins würden dann im selben User landen.

    Codex:
    https://codex.wordpress.org/Plugin_API/Action_Reference/login_form
     
  6. cokodeluxe

    cokodeluxe New Member

    Registriert seit:
    18. Mai 2015
    Beiträge:
    3
    Zustimmungen:
    0
    Hi WS,

    "Alle externen Logins würden dann im selben User landen"... das würde denk ich zu einem Problem führen. Ich möchte unter anderem das Voting Addon für die NGGallery nutzen, so dass dann alle User, die sich über die API eingeloggt haben, unter einem User auch nur 1x voten können. Macht es hier vielleicht mehr Sinn, den User nach erstmaligem verifizieren dann in die lokalen DB als WP User zu schreiben?

    Vielen Dank schon wieder!
     
  7. websupporter

    websupporter Active Member

    Registriert seit:
    19. August 2014
    Beiträge:
    36
    Zustimmungen:
    0
    Ja, warum nicht? Klingt so, als müsstest Du dann für jeden externen einen normalen WP User anlegen.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden