< Indietro | Avanti >

Accesso a un database utente

Una volta creata una sessione è possibile ottenere un elenco di database accessibili ed è necessario fornire le credenziali per accedere a uno di essi.
Per proteggere i database da utenti non autorizzati, è necessario accedere a un database prima di accedere ai relativi record. Per gli hook, questa autenticazione dell'utente viene gestita automaticamente dall'applicazione Rational ClearQuest Client. Tuttavia, le applicazioni esterne devono accedere in modo programmatico utilizzando l'oggetto Session.
Per determinare a quale database accedere e per effettuare l'accesso, attenersi alla seguente procedura:
  1. Ottenere un elenco dei database associati ad un repository di schemi richiamando il metodo GetAccessibleDatabases dell'oggetto Session. Tale metodo restituisce una raccolta di oggetti DatabaseDesc, ognuno dei quali contiene informazioni relative ad un singolo database utente.
  2. Utilizzare i metodi dell'oggetto DatabaseDesc per ottenere informazioni su un database specifico come il nome o il gruppo di database (un repository di schemi e i relativi database associati) al quale appartiene.
  3. Accedere a un database richiamando il metodo UserLogon dell'oggetto Session.
Il metodo UserLogon richiede quattro argomenti.
$CQsession->UserLogon(login_name, password, database_name, database_set_name); 
Tutti gli argomenti sono stringhe: Ad esempio:
$CQSession->UserLogon("admin", "", "SAMPL", ""); 

Nel seguente esempio di codice, un utente (admin) ottiene i database accessibili e accede a un database denominato perl2:
require CQPerlExt; 
$CQsession = CQSession::Build();  

#Avviare una sessione Rational ClearQuest 
$sessionObj = CQSession::Build(); 

#Chiamare un elenco di database utente accessibili 
$databases = $sessionObj->GetAccessibleDatabases("MASTR", "admin", ""); 
$count = $databases->Count(); 

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

#Per ogni database accessibile, 
# chiamare il nome database e accedere come joe con password gh36ak3: 
for($x=0;$x<$count;$x++)
   { 
     $db = $databases->Item($x); 
     $dbName = $db->GetDatabaseName(); 
     # Accedere al database 
     $sessionObj->UserLogon( "joe", "gh36ak3", $dbName, "" ); 
     #... 
   } 

# È anche possibile usare il metodo GetSessionDatabase invece di GetAccessibleDatabases
$dbDesc = $sessionObj->GetSessionDatabase();  

# Il metodo GetSessionDatabase restituisce informazioni sul database a cui si accede 
# nella sessione corrente. Questo metodo è diverso da GetAccessibleDatabases perché 
# restituisce l'oggetto DatabaseDescription associato alla sessione corrente. È possibile chiamare solo
# questo metodo dopo che l'utente è entrato in uno specifico 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) 
     {  # Codice da gestire se non esistono gruppi di utenti 
        print "This user does not belong to any groups\n"; 
     }  
else 
     {  # Stampare tutti i gruppi 
        foreach $groupname (@$userGroups) 
             { print "Group $groupname\n"; }
     }  
CQSession::Unbuild($sessionObj); 

Punto di controllo della lezione

Ora che si conosce come utilizzare l'API ClearQuest per ottenere una sessione e accedere a un database, è possibile passare ad imparare come eseguire reali casi di utilizzo ClearQuest, come l'esecuzione e la creazione di query, grafici e report, e la visualizzazione, la modifica e la creazione di record.
< Indietro | Avanti >

Feedback