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