Come nascondere le azioni che un utente non può eseguire

Un designer di schemi può nascondere le azioni agli utenti che non dispongono dell'autorizzazione per eseguire l'azione.
Le azioni in uno schema possono essere visualizzate in ClearQuest anche se un utente non dispone dell'autorizzazione per eseguire tutte le azioni. Un designer di schemi può nascondere le azioni che sono controllate da un hook di controllo accessi azione. Le azioni che vengono nascoste all'utente non vengono visualizzate nei menu Modifica, Modifica stato o Programmi di utilità nel client ClearQuest. Se un'azione viene nascosta o meno viene determinato dal valore specificato in Controllo accesso.

Come nascondere le azioni per il controllo accesso SCRIPTS: proprietà dello schema HIDE_ACTIONS

In primo luogo, lo schema deve essere abilitato per nascondere le azioni. Eseguire il comando packageutil per impostare la proprietà dello schema HIDE_ACTIONS su 1. La proprietà dello schema HIDE_ACTIONS è impostata sull'ultima versione dello schema. Il formato del comando è il seguente:

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

Per disabilitare la possibilità di nascondere le azioni, impostare la proprietà dello schema HIDE_ACTIONS su 0.
Nota: le prestazioni di visualizzazione del modulo del record possono essere influenzate impostando il valore della variabile della sessione HIDE_ACTIONS su 1. Gli hook di controllo accesso per tutte le azioni nel record verranno eseguiti per determinare se l'azione deve essere visualizzata all'utente. Se lo schema ha molte azioni o se l'elaborazione dello script dell'hook di controllo accessi è lenta, l'utente può percepire che il caricamento del modulo del record è lenta.

Variabile della sessione ratl_GetLegalAction

Quando la proprietà dello schema HIDE_ACTIONS è impostata su 1 per nascondere le azioni e l'opzione Controllo accesso è impostata su SCRIPTS, l'hook di controllo accessi può essere richiamato per determinare se il nome dell'azione deve essere nascosto all'utente nel menu del client ClearQuest o per verificare se all'utente è consentito eseguire l'azione. Il designer di schemi può personalizzare gli hook per controllare il valore della variabile della sessione ratl_GetLegalAction, che indica il motivo per cui viene richiamato l'hook.
  • Se il valore di ratl_GetLegalAction corrisponde al nome di visualizzazione del record corrente, l'hook viene richiamato per determinare se l'azione deve essere nascosta. L'hook restituisce un valore 0 se il nome dell'azione deve essere nascosto. L'hook restituisce un valore 1 se il nome dell'azione deve essere visualizzato.
  • Se il valore di ratl_GetLegalAction non corrisponde al nome di visualizzazione del record corrente, l'hook viene richiamato per determinare se all'utente è consentito eseguire questa azione. L'azione è stata selezionata e verrà eseguita se l'hook di controllo accessi restituisce un valore di 1. Anche se il nome dell'azione è stato nascosto a questo utente nei menu del client ClearQuest, l'azione può essere richiamata da un hook nidificato o da uno script esterno. Il client ClearQuest visualizza un messaggio di errore generico per indicare che questa azione non è consentita se l'hook controllo accessi dell'azione restituisce 0. In alternativa, l'hook può visualizzare un messaggio di errore più descrittivo trasferendo le informazioni a una funzione die() Perl o a un metodo Err.Raise() VBScript. Il messaggio può contenere informazioni su una precondizione che non è soddisfatta o sul perché l'utente non dispone dell'autorizzazione per eseguire l'azione.

Esempio

Il seguente esempio Perl mostra come personalizzare l'hook per decidere se l'azione viene nascosta o meno. È anche possibile scrivere questo tipo di hook di controllo accessi con 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    

Per ulteriori informazioni su come nascondere le azioni, accedere al canale IBM® Rational Support YouTube.


Feedback