< Anterior | Próximo >

Efetuando logon em um banco de dados do usuário

Depois de criar um Session, você pode obter uma lista dos banco de dados acessíveis e precisa, então, fornecer as credenciais de logon para efetuar o logon em um banco de dados do usuário.
Para proteger os bancos de dados de usuários não-autorizados, é necessário efetuar o logo em um banco de dados antes de acessar os registros. Para ganchos, essa autenticação de usuário é tratada automaticamente pelo aplicativo cliente do Rational ClearQuest. Entretanto, os aplicativos externos devem efetuar o logon programaticamente pelo uso do objeto Session.
Para determinar em qual banco de dados efetuar o logon e executar o logon, siga estas etapas:
  1. Obtenha uma lista de banco de dados associados com um repositório de esquema chamando o método GetAccessibleDatabases do objeto Session. Esse método retorna uma coleta de objetos DatabaseDesc, cada um deles contém informações sobre um banco de dados do usuário único.
  2. Use os métodos do objeto DatabaseDesc para obter informações do banco de dados específico, como nome de um banco de dados ou conjunto de banco de dados (um repositório de esquema e os bancos de dados associados) ao qual o banco de dados pertence.
  3. Efetue logon no banco de dados chamando o método UserLogon do objeto Session.
O método UserLogon leva quatro argumentos.
$CQsession->UserLogon(login_name, password,
database_name, database_set_name); 
Todos os argumentos são cadeias: Exemplo:
$CQSession->UserLogon("admin", "", "SAMPL", "");

No seguinte exemplo de código, um usuário (admin) obtém bancos de dados acessíveis e efetua o login em um banco de dados de nome perl2:
require CQPerlExt;
$CQsession = CQSession::Build();

#Start a Rational ClearQuest session
$sessionObj = CQSession::Build();

#Get a list of accessible databases
$databases = $sessionObj->GetAccessibleDatabases("MASTR", "admin", "");
$count = $databases->Count();

$sessionObj->UserLogon("admin", "", "perl2", "");

#For each accessible database,
# get database name and login as joe with password gh36ak3:
for($x=0;$x<$count;$x++)
   { 
     $db = $databases->Item($x);
     $dbName = $db->GetDatabaseName();
     # Logon to the database
     $sessionObj->UserLogon( "joe", "gh36ak3", $dbName, "" );
     #... 
   } 

# You can also ise the GetSessionDatabase method rather than the GetAccessibleDatabases method
$dbDesc = $sessionObj->GetSessionDatabase();

# The GetSessionDatabase method returns information about the database that is being accessed
# in the current session. This method differs from the GetAccessibleDatabases method in that it
# returns the DatabaseDescription object associated with the current session. You can only call
# this method after the user has logged in to a particular database.


print "DB name = ", $dbDesc->GetDatabaseName(), "\n";
print "DB set name = ", $dbDesc->GetDatabaseSetName(), "\n";
print "DB connect string = ", $dbDesc->GetDatabaseConnectString(), "\n";
print "User login name = ", $sessionObj->GetUserLoginName(), "\n";
print "User full name = ", $sessionObj->GetUserFullName(), "\n";
print "User email = ", $sessionObj->GetUserEmail(), "\n";
print "User phone = ", $sessionObj->GetUserPhone(), "\n";
print "Misc user info = ", $sessionObj->GetUserMiscInfo(), "\n";
print "User groups: \n";
$userGroups = $sessionObj->GetUserGroups();
if (!@$userGroups)
     {  # Code to handle if no user groups exist
        print "This user does not belong to any groups\n";
     }  
else
     {  # Print out all groups
        foreach $groupname (@$userGroups)
             { print "Group $groupname\n"; }
     }  
CQSession::Unbuild($sessionObj); 

Ponto de verificação da lição

Agora, que você aprendeu como usar a API do ClearQuest para obter uma sessão e efetuar login em um banco de dados, você pode começar a aprender como executar casos de uso atuais de cliente ClearQuest, como execução e criação de consultas, gráficos e relatórios e visualização, modificação e criação de registros.
< Anterior | Próximo >

Feedback