Lists all users who have access to a particular Essbase Server, application or database. Similar to EssListUsers, but the user list structure can include user directories and unique identity attributes.
Syntax
ESS_FUNC_M EssListUsersInfoEx (hCtx, AppName, DbName, pCount, ppUserList);
| Parameter | Data Type | Description |
|---|---|---|
hCtx | ESS_HCTX_T | API context handle (input). |
AppName | ESS_STR_T | Application name (input). If NULL, lists all users. |
DbName | ESS_STR_T | Database name (input). If NULL, lists users for all databases within the application. |
pCount | ESS_PUSHORT_T | Address of variable to receive count of users (output). |
ppUserList | ESS_PPUSERINFOID_T | Address of pointer to receive an allocated array of user info structures (output). The user list structure can include user directories and unique identity attributes. |
Return Value
If successful, returns a count of the number of users in pCount, and a list of users with access to the specified application and database in ppUserList.
Access
This function requires no special privileges.
Example
void DisplayUserInfoID2(ESS_USERINFOID_T userInfo)
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_BOOL_T isDefined = ESS_TRUE;
printf("\tUser Name: %s\n", userInfo.Name);
printf("\tProvider Name: %s\n", userInfo.ProviderName);
printf("\tConnparam: %s\n", userInfo.connparam);
printf("\tDescription: %s\n", userInfo.Description);
printf("\tEMail Identification: %s\n", userInfo.EMailID);
if (userInfo.LockedOut)
printf("\tLocked out: Yes\n");
else
printf("\tLocked out: No\n");
if (userInfo.PwdChgNow)
printf("\tChange the password now: Yes\n");
else
printf("\tChange the password now: No\n");
printf( "\tConnected Application: %s\n", userInfo.AppName);
printf( "\tConnected Database: %s\n", userInfo.DbName);
if (userInfo.Login)
printf("\tLogged in: Yes\n");
else
printf("\tLogged in: No\n");
switch(userInfo.Access)
{
case ESS_ACCESS_ADMIN:
printf("\tAccess: %d - ESS_ACCESS_ADMIN\n", userInfo.Access);
break;
case ESS_ACCESS_APPALL:
printf("\tAccess: %d - ESS_ACCESS_APPALL\n", userInfo.Access);
break;
case ESS_ACCESS_DBALL:
printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access);
break;
case ESS_ACCESS_APPCREATE:
printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access);
break;
case ESS_ACCESS_APPMANAGE:
printf("\tAccess: %d - ESS_ACCESS_APPMANAGE\n", userInfo.Access);
break;
case ESS_ACCESS_DBCREATE:
printf("\tAccess: %d - ESS_ACCESS_DBCREATE\n", userInfo.Access);
break;
case ESS_ACCESS_DBMANAGE:
printf("\tAccess: %d - ESS_ACCESS_DBMANAGE\n", userInfo.Access);
break;
case ESS_ACCESS_CALC:
printf("\tAccess: %d - ESS_ACCESS_CALC\n", userInfo.Access);
break;
case ESS_ACCESS_WRITE:
printf("\tAccess: %d - ESS_ACCESS_WRITE\n", userInfo.Access);
break;
case ESS_ACCESS_READ:
printf("\tAccess: %d - ESS_ACCESS_READ\n", userInfo.Access);
break;
case ESS_PRIV_USERCREATE:
printf("\tAccess: %d - ESS_PRIV_USERCREATE\n", userInfo.Access);
break;
case ESS_PRIV_APPCREATE:
printf("\tAccess: %d - ESS_PRIV_APPCREATE\n", userInfo.Access);
break;
case ESS_PRIV_APPMANAGE:
printf("\tAccess: %d - ESS_PRIV_APPMANAGE\n", userInfo.Access);
break;
case ESS_PRIV_APPLOAD:
printf("\tAccess: %d - ESS_PRIV_APPLOAD\n", userInfo.Access);
break;
case ESS_PRIV_DBCREATE:
printf("\tAccess: %d - ESS_PRIV_DBCREATE\n", userInfo.Access);
break;
case ESS_PRIV_DBMANAGE:
printf("\tAccess: %d - ESS_PRIV_DBMANAGE\n", userInfo.Access);
break;
case ESS_PRIV_DBLOAD:
printf("\tAccess: %d - ESS_PRIV_DBLOAD\n", userInfo.Access);
break;
case ESS_PRIV_CALC:
printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access);
break;
case ESS_PRIV_WRITE:
printf("\tAccess: %d - ESS_PRIV_WRITE\n", userInfo.Access);
break;
case ESS_PRIV_READ:
printf("\tAccess: %d - ESS_PRIV_READ\n", userInfo.Access);
break;
case ESS_PRIV_NONE:
printf("\tAccess: %d - ESS_PRIV_NONE\n", userInfo.Access);
break;
default:
printf("\tAccess: Unknown\n");
}
switch(userInfo.MaxAccess)
{
case ESS_ACCESS_ADMIN:
printf("\tMax Access: %d - ESS_ACCESS_ADMIN\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_APPALL:
printf("\tMax Access: %d - ESS_ACCESS_APPALL\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_DBALL:
printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_APPCREATE:
printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_APPMANAGE:
printf("\tMax Access: %d - ESS_ACCESS_APPMANAGE\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_DBCREATE:
printf("\tMax Access: %d - ESS_ACCESS_DBCREATE\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_DBMANAGE:
printf("\tMax Access: %d - ESS_ACCESS_DBMANAGE\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_CALC:
printf("\tMax Access: %d - ESS_ACCESS_CALC\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_WRITE:
printf("\tMax Access: %d - ESS_ACCESS_WRITE\n", userInfo.MaxAccess);
break;
case ESS_ACCESS_READ:
printf("\tMax Access: %d - ESS_ACCESS_READ\n", userInfo.MaxAccess);
break;
case ESS_PRIV_USERCREATE:
printf("\tMax Access: %d - ESS_PRIV_USERCREATE\n", userInfo.MaxAccess);
break;
case ESS_PRIV_APPCREATE:
printf("\tMax Access: %d - ESS_PRIV_APPCREATE\n", userInfo.MaxAccess);
break;
case ESS_PRIV_APPMANAGE:
printf("\tMax Access: %d - ESS_PRIV_APPMANAGE\n", userInfo.MaxAccess);
break;
case ESS_PRIV_APPLOAD:
printf("\tMax Access: %d - ESS_PRIV_APPLOAD\n", userInfo.MaxAccess);
break;
case ESS_PRIV_DBCREATE:
printf("\tMax Access: %d - ESS_PRIV_DBCREATE\n", userInfo.MaxAccess);
break;
case ESS_PRIV_DBMANAGE:
printf("\tMax Access: %d - ESS_PRIV_DBMANAGE\n", userInfo.MaxAccess);
break;
case ESS_PRIV_DBLOAD:
printf("\tMax Access: %d - ESS_PRIV_DBLOAD\n", userInfo.MaxAccess);
break;
case ESS_PRIV_CALC:
printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess);
break;
case ESS_PRIV_WRITE:
printf("\tMax Access: %d - ESS_PRIV_WRITE\n", userInfo.MaxAccess);
break;
case ESS_PRIV_READ:
printf("\tMax Access: %d - ESS_PRIV_READ\n", userInfo.MaxAccess);
break;
case ESS_PRIV_NONE:
printf("\tMax Access: %d - ESS_PRIV_NONE\n", userInfo.MaxAccess);
break;
default:
printf("\tMax Access: Unknown\n");
}
printf("\tPassword Expiration in Dates: %d\n",userInfo.Expiration);
//EssSdCTime(NULL, userInfo.LastLogin, sizeof(time_string), time_string);
//printf("\tLast Successful Login: %s\n", time_string);
printf("\tFailed Login Attempts Since Then: %d\n", userInfo.FailCount);
printf("\tLogin ID: %ld\n", userInfo.LoginId);
printf( "\n");
}
ESS_STS_T ESS_ListUsersInfo (ESS_HCTX_T hCtx, ESS_HINST_T hInst)
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_USHORT_T count, i;
ESS_PUSERINFOID_T pUserList;
sts = EssListUsersInfoEx(hCtx, AppName, "", &count, &pUserList);
printf("EssListUsersInfoEx sts: %ld\n", sts);
if(!sts)
{
printf("\tNumber of users: %d\n\n", count);
for(i = 0; i < count; i++)
{
DisplayUserInfoID2(pUserList[i]);
}
}
return (sts);
}See Also