Submitted by LaZ on
Bonjour amis drupaliens =)
J'ai un petit soucis avec la gestion des profils utilisateur, un champ est réservé à l'administrateur pour communiquer une information particulière (désolé vous n'en saurez pas plus :p) et j'aimerais que l'utilisateur ne puisse éditer ce champ.
J'ai tenté d'utiliser le module 'profile permission', mais le champ en plus d'être impossible à éditer n'était pas non plus visible. Comment faire ?
Bonjour, Je suppose que ce
Permalien Soumis par 8corey le 6 Octobre, 2009 - 12:38
Bonjour,
Je suppose que ce champ a été crée à l'aide de CCK ?
Dans ce cas dans ta liste des modules dans le groupe CCK tu en as un qui s'appelle "Content Permissions" => il te permet d'ajuster l'accès des utilisateurs pour chaque champ CCK.
Non je n'ai pas utiliser CCK
Permalien Soumis par LaZ le 6 Octobre, 2009 - 12:54
Non je n'ai pas utiliser CCK j'ai simplement rajouter des champs dans 'user management/profile'. L'utilisation de CCK fait un peu usine à gaz pour ajouter un simple champ dans un profil non ?
arf, j'ai mal supposé... Du
Permalien Soumis par 8corey le 6 Octobre, 2009 - 14:38
arf, j'ai mal supposé...
Du coup je ne sais pas trop comment faire, peut-être quelqu'un de plus doué que moi pourras t'éclairer.
Mais tu n'utilises pas du tout CCK sur ton site ? Si tu l'utilises ailleurs, l'ajout d'un simple champ dans un profil n'est pas un problème, le module est fait pour ça !
Sinon, à moins que tu veuilles à tout prix éviter d'ajouter un module peu utile pour ton usage, je ne peux que te conseiller de l'installer.
Mais pour ajouter un champ
Permalien Soumis par LaZ le 6 Octobre, 2009 - 15:13
Mais pour ajouter un champ dans un profil il faut d'abord y attacher un type de contenu non ? C'est ce que j'ai tenté de faire et le résultat n'a pas été terrible...
Tu as raison, j'ai
Permalien Soumis par 8corey le 6 Octobre, 2009 - 15:18
Tu as raison, j'ai l'habitude d'utiliser Content Profile, alors pour moi un utilisateur est un node comme un autre...
Du coup de cette façon aucun problème pour utiliser cck.
J'ai utilisé cette
Permalien Soumis par LaZ le 6 Octobre, 2009 - 17:22
J'ai utilisé cette technique, mais plusieurs choses m'ont déplus :
C'est certes une solution, mais la mise en œuvre est bien plus complexe et fastidieuse à mon sens. Aussi si il existe une autre solution je suis tout ouïe =).
Normalement, avec le module
Permalien Soumis par emerya le 6 Octobre, 2009 - 17:47
Normalement, avec le module Profile, on peut créer un champs privé invisible pour l'utilisateur. C'est natif. Donc je ne vois pas bien la difficulté...
Oui mais mon soucis c'est
Permalien Soumis par LaZ le 6 Octobre, 2009 - 17:55
Oui mais mon soucis c'est que je souhaite empêcher son édition ! Le rendre visible ou non ça n'est pas (plus) mon soucis =).
Pourquoi, quand on choisit
Permalien Soumis par emerya le 6 Octobre, 2009 - 21:16
Pourquoi, quand on choisit "Champ de profil masqué, accessible uniquement aux administrateurs, modules et thèmes." l'utilisateur peut quand même modifier le champ??
Mais l'utilisateur aussi
Permalien Soumis par LaZ le 6 Octobre, 2009 - 21:38
Mais l'utilisateur aussi doit pouvoir voir ce que contient ce champ, pas seulement l'admin. Ce que je souhaite c'est que les 2 puisse voir ce champ mais que seul l'admin puisse le modifier.
Ben moi j'avais un peu le
Permalien Soumis par ReKoNE le 26 Mars, 2010 - 17:05
Ben moi j'avais un peu le même soucis que toi et après plusieurs prises de tête, je me suis créer un petit module pour modifier le formulaire...
En partant du principe que mon module se nomme "monmodule" et que dans le module "Profile" j'ai créer un champ "profile_soldepoints" dans la catégorie "Informations Club", voici le bout de code à insérer dans le fichier "monmodule.module".
/**
* Implementation of hook_form_alter().
* @ingroup form
*/
function monmodule_form_alter(&$form, &$form_state, $form_id) {
switch ($form_id) {
case 'user_profile_form':
if ($form['Informations Club']) {
// Gestion des droits d'accès
foreach($form['_account']['#value']->roles as $key => $value) {
switch($key) {
// Rôle superadmin
case 3:
$allow_to_see = 1;
break;
default:
$allow_to_see = 0;
break;
}
}
// Désactivation du champ "Nombre de points club"
if ($form['Informations Club']['profile_soldepoints']) {
if (!$allow_to_see) {
$form['Informations Club']['profile_soldepoints']['#attributes'] = array('disabled' => 'disabled');
}
}
}
break;
default:
break;
}
}
Ainsi mon champ est visible quelque soit le rôle mais il est grisé (désactivé) si la personne n'a pas le rôle de superadmin (rôle 3 sur mon site) => Seuls les admins peuvent éditer ce champ.
Après je ne te cache pas qu'un petit malin qui utiliserait firebug ou un outil similaire pourrait aisément levé cette protection... Soucis sur lequel il va falloir que je me penche maintenant que je viens de m'en apercevoir !