Elfelejtett jelszó funkció korlátozása/letiltása

[Ezt a cikket 4 perc elolvasni.]

A WordPress alapértelmezetten lehetőséget nyújt jelszavunk megváltoztatására, abban az esetben ha elfelejtenénk. Ehhez a bejelentkező képernyő alján található “Elfelejtett jelszó?” linkre kell kattintani, majd a profilunkhoz társított e-mail címünk/felhasználónevünk megadására lesz szükség. Ezután kiküldésre kerül egy üzenet, amelyben egy linkre kattintva új jelszót generálhatunk magunknak, így ismét képesek leszünk belépni. Ez a legtöbb esetben egy hasznos és szükséges funkció, de előfordulhatnak olyan felhasználási területek is, ahol erre egyáltalán nincs szükség.

Ilyen lehet például, ha egy demo oldalt futtatunk, ahova általunk megadott felhasználónév-jelszó párossal lehet bejelentkezni és nem szeretnénk, ha ezt bárki is meg tudná változtatni. A másik eshetőség, ha létrehoztunk valaki számára egy ideiglenes felhasználót, de nem engedélyeznénk neki a jelszó változtatást. Két módszer is van ennek kikapcsolására. Az egyik egy globális, minden felhasználó és szerepkör számára egyaránt érvényes, kódrészlettel operáló megoldás, a másik pedig egy bővítmény használata, ahol szerepkörönként vagy éppen felhasználónként tudjuk engedélyezni/tiltani a jelszó megváltoztatását.

A bővítmény a “Plainview Protect Passwords” nevet viseli, telepítése és aktiválása után a “Beállítások / Protect Passwords” szekcióban tudjuk konfigurálni.

A “Protected Roles” mellett láthatjuk az elérhető szerepköröket, amelyiket itt kijelöljük, az(ok) számára tiltva lesz a jelszó megváltoztatása a bejelentkező képernyőn és a saját profiljukon keresztül is. Természetesen több szerepkör is kijelölhető.

A “Protected Users” ugyanezen az elven működik, csak itt megadott felhasználók számára tilthatjuk a jelszó megváltoztatását.

A “User Exceptions” a kivételeket kezeli, azaz itt választhatunk ki olyan felhasználót, aki hiába tartozik a fentebb kiválasztott szerepkör(ök)be, mégis képes lesz jelszót változtatni.

A bővítmény nem tünteti el a bejelentkező képernyőn található “Elfelejtett jelszó?” linket, de ha a felhasználó a tiltás alá került, akkor képtelen lesz jelszót változtatni, helyette egy hibaüzenetet kap, miszerint ez számára nem engedélyezett.

Ha mindenki számára, globálisan szeretnénk tiltani a jelszavak cseréjét, akkor a következő kódrészletre lesz szükségünk:

<?php
/*
* Plugin Name: Jelszóváltoztatás Tiltása
* Description: Letiltja a jelszóváltoztatás funkciót. Csak az adminisztrátor szerepkörrel rendelkező felhasználók lesznek képesek jelszót változtatni a vezérlőpulton keresztül.
* Version: 1.0
* Author: WPSzaki
* Author URI: https://wpszaki.hu
*/

class Password_Reset_Removed
{

function __construct()
{
add_filter( 'show_password_fields', array( $this, 'disable' ) );
add_filter( 'allow_password_reset', array( $this, 'disable' ) );
add_filter( 'gettext', array( $this, 'remove' ) );
}

function disable()
{
if ( is_admin() ) {
$userdata = wp_get_current_user();
$user = new WP_User($userdata->ID);
if ( !empty( $user->roles ) && is_array( $user->roles ) && $user->roles[0] == 'administrator' )
return true;
}
return false;
}

function remove($text)
{
return str_replace( array('Elfelejtett jelszó?', 'Elfelejtett jelszó'), '', trim($text, '?') );
}
}

$pass_reset_removed = new Password_Reset_Removed();
?>

Ez az eddigiektől eltérően nem a sablon “functions.php” fáljába kerül mivel ez egy nagyon egyszerű bővítmény, így miután létrehoztuk (bemásoltuk egy üres szöveges fájlba), nevezzük el például “jelszovaltoztatas-tiltasa.php” néven és töltsük fel a “/wp-content/plugins” mappába. Nem szükséges neki új könyvtárat létrehozni, egyszerűen csak tegyük a “plugins” mappa gyökerébe az “index.php” mellé. Ezután lépjünk be a vezérlőpultba, nyissuk meg a “Bővítmények” lapot és aktiváljuk a “Jelszóváltoztatás tiltása” nevű bővítményt.

Ha tetszik, mutasd meg másoknak is: