Masquage d'actions qu'un utilisateur ne peut effectuer

Un concepteur de schéma peut masquer certaines actions pour les utilisateurs qui ne possèdent pas le droit d'effectuer une action spécifique.
Les actions d'un schéma peuvent s'afficher dans ClearQuest, même si un utilisateur ne possède pas le droit d'effectuer toutes les actions. Un concepteur de schéma peut masquer les actions contrôlées par un point d'ancrage de contrôle d'accès. Les actions masquées pour l'utilisateur ne s'affichent pas dans les menus Modifier, Changer l'état ou Utilitaires du client ClearQuest. Le masquage d'une action est déterminé par la valeur spécifiée dans Contrôle d'accès.

Masquage d'actions pour le contrôle d'accès SCRIPTS : propriété de schéma HIDE_ACTIONS

Tout d'abord, le schéma doit être activé pour masquer les actions. Exécutez la commande packageutil pour définir la propriété de schéma HIDE_ACTIONS sur 1. La propriété de schéma HIDE_ACTIONS est définie sur la dernière version du schéma. Le format de la commande est le suivant :

packageutil setproperty –dbset <dbset> <user> <password> <schema> HIDE_ACTIONS 1

Pour désactiver le masquage des actions, définissez la propriété de schéma HIDE_ACTIONS sur 0.
Remarque : La performance d'affichage du formulaire d'enregistrement peut être affectée en définissant la valeur de la variable de session HIDE_ACTIONS sur 1. Les points d'ancrage de contrôle d'accès pour toutes les actions de l'enregistrement sont exécutés pour déterminer si l'action doit être affichée pour l'utilisateur. Si le schéma possède un grand nombre d'actions, ou si le script du point d'ancrage de contrôle d'accès est lent, l'utilisateur s'aperçoit que le formulaire d'enregistrement se charge lentement.

Variable de session ratl_GetLegalAction

Lorsque la propriété de schéma HIDE_ACTIONS est définie sur 1 pour masquer les actions et que Contrôle d'accès est défini sur SCRIPTS, le point d'ancrage de contrôle d'accès peut être appelé pour déterminer si le nom de l'action doit être masqué pour l'utilisateur dans les menus du client ClearQuest ou pour vérifier si l'utilisateur est autorisé à effectuer l'action. Le concepteur de schéma peut personnaliser le point d'ancrage pour vérifier la valeur de la variable de session ratl_GetLegalAction, qui indique pourquoi le point d'ancrage est appelé.
  • Si la valeur de ratl_GetLegalAction correspond au nom affiché de l'enregistrement en cours, le point d'ancrage est appelé pour déterminer si l'action doit être masquée. Le point d'ancrage renvoie une valeur de 0 si le nom d'action doit être masqué. Le point d'ancrage renvoie une valeur de 1 si le nom d'action doit être affiché.
  • Si la valeur de ratl_GetLegalAction ne correspond pas au nom affiché de l'enregistrement en cours, le point d'ancrage est appelé pour déterminer si l'utilisateur est autorisé à exécuter cette action. L'action a été sélectionnée et est exécutée si le point d'ancrage de contrôle d'accès renvoie une valeur de 1. Même si le nom d'action est masqué pour cet utilisateur dans les menus du client ClearQuest, l'action peut être appelée par un point d'ancrage imbriqué ou un script externe. Le client ClearQuest affiche un message d'erreur générique indiquant que cette action n'est pas autorisée si le point d'ancrage de contrôle d'accès de l'action renvoie 0. Le point d'ancrage peut également afficher un message d'erreur plus descriptif en transmettant les informations à une fonction Perl die() ou à une méthode VBScript Err.Raise(). Le message peut contenir des informations sur une précondition non réalisée ou sur la raison pour laquelle l'utilisateur ne possède pas le droit d'exécuter l'action.

Exemple

L'exemple Perl suivant présente la personnalisation du point d'ancrage pour décider si l'action est masquée ou non. Vous pouvez également écrire ce type de point d'ancrage de contrôle d'accès avec VBScript.
    # Start User Code
    # Set $result to 1 if the user has permission to perform
    # this action, otherwise set it to 0.

    $result = 0;

    if ($session->IsUserSuperUser()) {
        # A super user can always do this action.
        $result = 1;
    }
    else {
        my $GLA = $session->GetNameValue("ratl_GetLegalAction");
        my $myName = $entity->GetDisplayName();
        if ($GLA eq $myName) {
            # This hook was called for hide action.
            # To hide the action, return 0 by uncommenting the following line
            # $result = 0
            # and then delete or comment out the $result = 1 below
            #
            # Or, to always show the action so the user will see 
            # a detailed message if they try to run it. 
            $result = 1;
        }
        else {
            my $user  = $session->GetUserLoginName();
            my $owner = $entity->GetFieldStringValue("Owner");
            if ($user ne $owner) {
                die "Only the owner can perform this action."; 
            }
            $result = 1;
        }
    }
    # End User Code    

Rendez-vous sur YouTube, Support d'IBM® Rational, pour en savoir plus sur le masquage d'actions.


Feedback