Ocultando ações que um usuário não pode executar

Um Schema Designer pode ocultar ações de usuário que não têm permissão para executar a ação.
As ações em um esquema podem ser exibidas no ClearQuest mesmo se um usuário não tem permissão para executar todas as ações. Um Schema Designer pode ocultar ações que são controladas por um gancho de controle de acesso de ação. As ações que são ocultas do usuário não são exibidas nos menus Modificar, Mudar Estado ou Utilitários no cliente do ClearQuest. A ocultação de uma ação é determinada pelo valor especificado em Controle de Acesso.

Ocultando Ações para Controle de Acesso de SCRIPTS: Propriedade de Esquema HIDE_ACTIONS

Primeiro, o esquema deve ser ativado para ocultar ações. Execute o comando packageutil para configurar a propriedade de esquema HIDE_ACTIONS para 1. A propriedade de esquema HIDE_ACTIONS é configurada na versão mais recente do esquema. O formato do comando é o seguinte:

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

Para desativar a capacidade para ocultar opções, configure a propriedade de esquema HIDE_ACTIONS para 0.
Nota: O desempenho de exibição do formulário de registro pode ser afetado pela configuração do valor da variável de sessão HIDE_ACTIONS para 1. Os ganhos de controle de acesso para todas as ações no registro serão executados para determinar se a ação deve ser exibida para o usuário. Se o esquema tiver um número maior de ações, ou se o script do gancho de controle de acesso processar lentamente, então o usuário pode perceber um formulário de registro com carregamento lento.

Variável de Sessão ratl_GetLegalAction

Quando a propriedade de esquema HIDE_ACTIONS é configurada para 1 para ocultar ações e Controle de Acesso é configurado para SCRIPTS, o gancho de controle de acesso pode ser chamado para determinar se o nome da ação deve ser oculto do usuário nos menus do cliente do ClearQuest, ou para verificar se o usuário tem permissão para executar a ação. O Schema Designer pode customizar o gancho para verificar o valor da variável de sessão ratl_GetLegalAction, que indica porque o gancho está sendo chamado.
  • Se o valor de ratl_GetLegalAction corresponder ao nome de exibição do registro atual, o gancho está sendo chamado para determinar se a ação deve ser oculta. O gancho retorna um valor de 0 se o nome da ação deve ser oculto. O gancho retorna um valor de 1 se o nome da ação deve ser exibido.
  • Se o valor de ratl_GetLegalAction não corresponder ao nome de exibição do registro atual, o gancho está sendo chamado para determinar se o usuário tem permissão para executar essa ação. A ação foi selecionada e será executada se o gancho de controle de acesso retornar um valor de 1. Mesmo se o nome da ação foi oculto desse usuário nos menus do cliente do ClearQuest, a ação pode ser chamada por um gancho ou script externo aninhado. O cliente do ClearQuest exibirá uma mensagem de erro genérica de que essa ação não é permitida se o gancho de controle de acesso da ação retornar 0. Como alternativa, o gancho pode exibir uma mensagem de erro mais descritiva passando informações para uma função die() de Perl ou um método Err.Raise() de VBScript. A mensagem pode conter informações sobre uma condição prévia que não é atendida ou o motivo pelo qual o usuário não tem permissão para executar a ação.

Exemplo

O seguinte exemplo de Perl mostra como customizar o gancho para decidir se a ação será oculta ou não. Também é possível escrever esse tipo de gancho de controle de acesso com o VBScript.
    # Iniciar Código do Usuário
    # Configurar $result para 1 se o usuário tiver permissão para executar
    # essa ação, caso contrário, configurá-lo para 0.

    $result = 0;

    if ($session->IsUserSuperUser()) {
        # Um super usuário sempre pode executar essa ação.
        $result = 1;
    }
    else {
        my $GLA = $session->GetNameValue("ratl_GetLegalAction");
        my $myName = $entity->GetDisplayName();
        if ($GLA eq $myName) {
            # Esse gancho foi chamado para ocultar ação.
            # Para ocultar a ação, retorne 0 retirando o comentário da seguinte linha
            # $result = 0
            # e depois exclua ou comente o $result = 1 abaixo
            #
            # Ou para sempre mostrar a ação para que o usuário veja uma 
            # mensagem detalhada se tentar executá-la. 
            $result = 1;
        }
        else {
            my $user  = $session->GetUserLoginName();
            my $owner = $entity->GetFieldStringValue("Owner");
            if ($user ne $owner) {
                die "Somente o proprietário pode executar essa ação."; 
            }
            $result = 1;
        }
    }
    # Finalizar Código do Usuário    

Sintonize no canal do YouTube de Suporte do IBM® Rational para saber mais sobre ocultação de ações.


Feedback