Venez baraguiner avec la communauté !
Vous n'êtes pas identifié.
Bonjour,
Je suis toujours plongé dans le code de mon module de gestion d'utilisateur. Et je souhaite toujours ajouter des membres.
Pour cela j'ai dans l'admin generator accès à la table qui contient tous les employés. Un formulaire me permet de modifier certains champs dont le champ is_admin qui est un boolean
Je voudrais que lorsque ce champ passe a TRUE l'utilisateur qui vient d'être modifié soit ajouter dans la table sfguardUser et qu'il soit associé a un certain groupe. La table Sfguard sont celle par défauts.
Pour cela j'avais voulu modifier la méthode save dans le fichie raction.class.php de mon module.
Le code est le suivant:
if ($this->getIsAdmin() == TRUE)
{
//Ajout de l'utilisateur dans sfGuard
$admin = new sfGuardUser();
$admin->setId($id);
$admin->setmatricule($username);
$admin->setIsActive(true);
$admin->setIsSuperAdmin(true);
$admin->save();
//Ajout du groupe associe à cet utilisateur
$groupe = new sfGuardUserGroup();
$groupe->setUserId($id);
$groupe->setGroupId(1);
$groupe->save();
}Cependant ce n'est pas un vif sucés. Je pas d'erreur mais je n'ai pas non plus de champ rajouté dans mes tables.
En vous remerciant d'avance de vos réponses.
Hors ligne
Pour moi :
if ($this->getIsAdmin() == TRUE)
{
//Ajout de l'utilisateur dans sfGuard
$admin = new sfGuardUser();
// $admin->setId($id); pourquoi tu cree lid ? c'est une nouvelle entree donc pas besoin normalement, tu peux supprimer cette ligne theoriquement
$admin->setmatricule($username); // pense a mettre le M de matricule en capital
$admin->setIsActive(true);
$admin->setIsSuperAdmin(true);
$admin->save();
//Ajout du groupe associe à cet utilisateur
$groupe = new sfGuardUserGroup();
$groupe->setUserId($admin->getId()); // tu recupere la valeur precedente dadmin je suppose
$groupe->setGroupId(1);
$groupe->save();
}Dernière modification par fawad (11/10/2011 09:06:51)
Hors ligne
Ca m'apprendra a ne pas tout lire.
Bon ce que je t'ai mis precedement est toujours ok.
Question :
- tu veux que lorsque un utilisateur a la case coché is_admin, celui-ci soit integrer a un groupe, outre le fait de me demander pourquoi vu que tu peux savoir qui est admin, juste en sortant uniquement les membres cochés is_admin, sachant qu'en plus cela a plein de consequences, tu dois faire une fonction, quand la case est décoché, il faut supprimer l'entree equivalente, quand la case est déja coché qu'il ne le reecrive pas, bref pas des plus interessant. Je me dis que tu dois avoir ta raison.
Par contre de memoire, je n'utilise plus l'admin generator, mais il me semble que dans le cadre de l'admin generator sur sfGuardUser, il te créé des colonnes groupes et permissions que tu peux selectionner, et du coup faire d'un utilisateur un membre d'un quelconque groupe ou permission.
Donc, Il ne faut pas tout réécrire :
Tu vas dans /lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.class.php
class sfGuardUser extends PluginsfGuardUser
{
public function postSave($event)
{
if ($this->getIsAdmin() == TRUE)
{
$groupe = new sfGuardUserGroup();
$groupe->setUserId($this->getId());
$groupe->setGroupId(1);
$groupe->save();
}
}
}Dernière modification par fawad (11/10/2011 09:24:51)
Hors ligne