Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Construire une chaîne de caractères contenant les droits d'une action

0000002927     -      14/09/2023

Le code ci-dessous permet de composer une chaîne de caractères utilisable en tant que "droits" dans les actions (ID_DROITSP, ID_DROITSM, ID_DROITSV de la table ACTIONS).

Il faut d'abord prendre en compte le fait que si on souhaite accorder des droits à tous, il suffit de renvoyer une chaîne de caractères vide. Si tel n'est pas le cas, on peut utiliser ce code.

Zoom
private string getDroits()
{
    using (MercatorUi._BaseClasses.DroitsStandAlone droits = new MercatorUi._BaseClasses.DroitsStandAlone())
    {
        var group_tech = droits.Tree.Nodes.FirstOrDefault(n => n.Text == "Tech");
        if (group_tech != null)
        {
            var node_guy = group_tech.Nodes.FirstOrDefault(n => n.Text == "Guy");
            if (node_guy != null)
                node_guy.Checked = true;
        }
        var group_comm = droits.Tree.Nodes.FirstOrDefault(n => n.Text == "Comm");
        if (group_comm != null)
        {
            var node_wim = group_comm.Nodes.FirstOrDefault(n => n.Text == "Wim");
            if (node_wim != null)
                node_wim.Checked = true;
        }
        var group_hors = droits.Tree.Nodes.FirstOrDefault(n => n.DataKeyString == "GROUP_??????????");
        if (group_hors != null)
        {
            var node_stephane = group_hors.Nodes.FirstOrDefault(n => n.Text == "Stephane");
            if (node_stephane != null)
                node_stephane.Checked = true;
        }
        return droits.Value;
    }
}

 

Notez qu'il n'est jamais nécessaire de cocher un nœud de groupe. Le statut de ces nœuds est géré automatiquement par Mercator.

En ce qui concerne "Droits pour" (ID_DROITSP), il faut fixer au préalable la propriété IdProprio

Zoom
private string getDroits()
{
    using (MercatorUi._BaseClasses.DroitsStandAlone droits = new MercatorUi._BaseClasses.DroitsStandAlone())
    {
        droits.IdProprio = "..."; // id user
        ...
    }
}

Il est aussi possible de modifier une chaîne existante (et valide) avec un code tel que celui-ci. Dans le groupe "Tech", cocher "Guy2" et dans le groupe "Comm", décocher "Wim"

Zoom
var s = getDroits();

using (MercatorUi._BaseClasses.DroitsStandAlone droits = new MercatorUi._BaseClasses.DroitsStandAlone())
{
    droits.Value = s;

    var group_tech = droits.Tree.Nodes.FirstOrDefault(n => n.Text == "Tech");
    if (group_tech != null)
    {
        var node_guy2 = group_tech.Nodes.FirstOrDefault(n => n.Text == "Guy2");
        if (node_guy2 != null)
            node_guy2.Checked = true;
    }
    var group_comm = droits.Tree.Nodes.FirstOrDefault(n => n.Text == "Comm");
    if (group_comm != null)
    {
        var node_wim = group_comm.Nodes.FirstOrDefault(n => n.Text == "Wim");
        if (node_wim != null)
            node_wim.Checked = false;
    }
    s = droits.Value;
}

 

Les nœuds peuvent être identifiés par leur propriété DataKeyString (comme le nœud du groupe "Hors groupe" dans le premier code). Cette propriété est construite comme ceci :

  • Nœud "Tous" : "EVERYONE"
  • Nœud "Propriétaire" : "CREATOR_" + IdProprio
  • Nœud de groupe : "GROUP_" + id du groupe
  • Nœud du groupe "Hors groupe" : "GROUP_??????????"
  • Nœud utilisateur : "USER_" + id du groupe+ "_" + id  de l'utilisateur