Drupal 7 – Jak programově upravit uživatelské role?
Dnes jsem pro jeden projekt dokončil modul, pomocí kterého může uživatel požádat o ověření svého účtu. Funguje podobně, jak to má zařízeno například Aukro.cz. Jakmile uživatel o toto ověření požádá, je mu zaslán na uvedenou adresu dopis s ověřovacím kódem, který následně vyplní v administraci. Jak jsem to řešil?
Nejprve jsem potřeboval vybraná políčka uživateli znepřístupnit, jakmile požádá o ověření (nedávalo by smysl, aby si mohl měnit adresu, když požádá o ověření adresy). Vymýšlel jsem různá vlastní řešení, ale nakonec jsem skončil u modulu Field Permissions , který dokáže znepřístupnit políčka pro jednotlivé role. Vytvořil jsem si tedy potřebné role (neověřený, požádal o ověření, ověřený), které následně programově přiděluji dle toho, jak uživatel postupně prochází jednotlivé kroky. Níže je ukázka možností modulu Field Permissions, která je k dispozici u každého políčka. Jednotlivé úkony lze následně přiřazovat na stránce Oprávnění.
Modul je psaný čistě na míru, takže zveřejním akorát některé zajímavé části kódu. Věděli jste jak programově přidávat/ubírat role uživateli?
global $user; //operace provádíme nad aktivním uživatelem
$roles_list = $user->roles; //načteme si role do pole
unset($roles_list[7]); odstraníme roli dle ID. Pokud známe jen jméno, použijeme cyklus foreach
$roles_list[8] = 'pre-verified'; //přidáme roli
$fields['roles'] = $roles_list; //přidáme do pole úprav
user_save($user, $fields); //uložíme
Pokud se nepletu, v Drupal 6 to funguje shodně.
Přidej vlastní názor
Ty