Empecher un utilisateur d'accéder et d'éditer son profil

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

En fait, je pensais que ça aurait été simple mais ... comment empecher un utilisateur d'accéder et d'éditer son profil.
Et enfin supprimer le lien Mon Compte dans le menu.

De plus ou se situe le code qui perment de modifier l'affichage du nom d'utilisateur dans le bloc menu (je voudrais rajouter espace perso de : le_login).

D'avance merci

Jérôme

Version de Drupal : 

Bonjour,

Moi aussi j'ai le même souci, je souhaite interdire à un utilisateur d'éditer son profil, mais je n'y arrive pas. Je suis allée voir dans les contrôles d'accès il y a juste la possibilité d'empêcher un utilisateur de changer son identifiant.

Merci pour vos réponses

Coco

Bonsoir,

merci pour ta réponse, mais ça ne fait que rajouter des onglets supplémentaires où tu peux personnaliser les champs.

Comme j'ai rajouté deux blocs de menus visibles uniquement par certaines personnes, je voulais pas les utilisateurs authentifiés puissent éditer leur fiche de profil et faire afficher certains blocs de menus masqués.

Est ce que quelqu'un a déjà rencontré ce problème ?

Merci pour vos réponses

Coco

Une des solutions possible est de creer un module special a ton site et d'y utiliser le hook hook_form_alter.

Dans ton cas, le formulaire qui t'interesse est user_edit

Tu pourras ainsi modifier ce formulaire afin de rendre certains elements ineditables.

J'utilises cette methode afin d'empecher certains utilisateurs de modifier leur addresse email.

Salut tomdeb

Je te remercie pour ta réponse. J'ai essayé de comprendre ce qu'il fallait faire mais en vain je n'ai vraiment rien pigé.

Est ce qu'il faut créer un nouveau module avec les codes ci-dessous ? Que fait ce module ? J'ai activé le module, mais je ne vois rien dans les paramètres d'administration.

?php
/**
* Override the printing of the forms in the user edit page
*/
function custom_user_profile_edit_page_form_alter($form_id, &$form)
{
// Is it the user_edit form we show
if($form_id == 'user_edit')
{

// Some kind of check so we don't unset the wrong variable, probably pretty stupid..

if(is_array($form['mail']['mass_contact_optout']))
{
unset($form['mail']);
}

if(is_array($form['locale']['language']))
{
unset($form['locale']);
}

if(is_array($form['timezone']['timezone']))
{
unset($form['timezone']);
}

if(is_array($form['contact']['contact']))
{
unset($form[contact]);
}

}

// When we register a new user
if($form_id == 'user_register')
{
if(is_array($form['mail']['mass_contact_optout']))
{
unset($form['mail']);
}
}

}
?>

Merci pour vos réponses

coco