Bonjour, j'ai suivi le tutoriel pour masquer une action mais cela ne fonctionne pas malgré la modification du code.
Je suis relié à mysql.
J'ai une classe membres avec refmembre(id, auto increment), login, mdp, nom, prenom, refrole et une classe roles avec refrole(id, auto increment) et role
refrole de la classe membres est relationnel avec id de la classe membre
Ex dans la classe roles :
refrole - role
1 - Administrateur
2 - Membre
J'ai ajouté deux marques spécifiques pour les actions
ROLE_ADMINISTRATEUR
ROLE_MEMBRE
Ma première question est : comment supprimer une marque ou la modifier.
D'autre part je ne trouve pas le xml où l'on voit les marques de l'action.
Extrait du fichier JAVA de comportement de session.
public boolean validateAction(LySession session, LyAction action, LyController controller)
{
int ROLE_MEMBRE = LyAction.getMark("ROLE_MEMBRE");
int ROLE_ADMINISTRATEUR = LyAction.getMark("ROLE_ADMINISTRATEUR");
if (action.hasMark(ROLE_MEMBRE))
{
// L'action a la marque spécifique ROLE_MEMBRE, autorisée si et seulement si l'utilisateur à le role membre
LyObject user = session.getUser();
if (user == null)
return false;
LyObject role = user.getRelationValue("refrole").getObject(0);
if (role == null)
return false;
String roleName = role.getName();
if ((!"Membre".equals(roleName)) && (!"Administrateur".equals(roleName)))
return false;
}
if (action.hasMark(ROLE_ADMINISTRATEUR))
{
// L'action a la marque spécifique ROLE_ADMINISTRATEUR, autorisée si et seulement si l'utilisateur à le role administrateur
LyObject user = session.getUser();
if (user == null)
return false;
LyObject role = user.getRelationValue("refrole").getObject(0);
if (role == null)
return false;
String roleName = role.getName();
if (!"Administrateur".equals(roleName))
return false;
}
return super.validateAction(session, action, controller);
}
public boolean enableAction(LySession session, LyAction action, LyController controller, LyObjectList objects, boolean showError) {
if (!validateAction(session, action, controller))
return false;
return super.enableAction(session, action, controller, objects, showError);
}
Lorsue j'éxécute en SWING, pas de problème mais quand je me connecte avec un utilisateur ayant le rôle Membre je vois quand même l'action dont la marque spécifique ROLE_ADMINISTRATEUR est cochée et pas la marque ROLE_MEMBRE.
Merci de votre aide.
Partager