Beveiliging Code snippets Plugins

Cross site authenticatie voorkomen voor gebruikers op WordPress multisite

Ik ben op dit moment bezig met een applicatie die deels werkt met het authenticeren van gebruikers op basis van het domein waarmee ze inloggen: verschillende gebruikers kunnen bij een account horen, en de applicatie can controleren of de gebruiker bij een account hoort op basis van het domein.

WordPress Multisite is erg geschikt hiervoor. Er is alleen één ding dat hierbij niet zo handig is: WordPress beschouwt je als zijnde ingelogd op elk deel van het netwerk, ook als je alleen maar lid bent van een van de subsites.

Om cross-site login te voorkomen heb ik wat code toegevoegd die op elke request uitgevoerd wordt op de authenticate hook. Het is een vrij simpel stukje code: het controleert of de ingelogde gebruiker lid is van het huidige blog. Zo niet, dan word je uitgelogd en naar het netwerk site_url geredirect.

add_action('authenticate', array($this, 'validate_on_login'), 100, 3);

function validate_on_login(){
  if (!is_user_logged_in()) {
     return;
  }

  $user = wp_get_current_user();

  //allow only login if user is member of this blog

  if (!is_user_member_of_blog( $user->ID, get_current_blog_id() ) && !is_super_admin( $user->ID )) {
    wp_logout();
    wp_redirect(network_site_url());exit();
  }

}

Related Articles

  • Als je wilt zoeken binnen WordPress users, of in Ultimate Member members, (wat op hetzelfde neerkomst), zou je denken dat dit makkelijk gedaan kan worden met een meta_query, of met...
  • Dynamisch de alt en title van een afbeelding aanpassen

    Alt en title vaak niet ingevuld Als je automatisch afbeeldingen importeert, je hebt website redacteuren die de alt tags niet invullen, of je neemt een site in beheer waar dat...
  • Plugin updates mislukken, bijwerken mislukt melding

    Recentelijk kregen we op een website bij het updaten van WordPress de melding “De doelmap voor het streamen van bestanden bestaat niet of er kan niet naar worden geschreven”. Bij...
  • Je WordPress website vertalen

    Wil je je website meertalig maken? Dat is een ander onderwerp. Dit artikel gaat over het vertalen van thema’s en plugins, die vaak in het Engels zijn. Altijd die “read...

Laat een reactie achter