MCPcopy Create free account
hub / github.com/documentdb/documentdb / GetSingleUserInfo

Function GetSingleUserInfo

pg_documentdb/src/commands/users.c:1633–1709  ·  view source on GitHub ↗

* GetSingleUserInfo queries and processes user role information for a given user. * Returns the user info datum containing the query result. */

Source from the content-addressed store, hash-verified

1631 * Returns the user info datum containing the query result.
1632 */
1633static Datum
1634GetSingleUserInfo(const char *userName, bool returnDocuments)
1635{
1636 if (userName == NULL)
1637 {
1638 ereport(ERROR, (errcode(ERRCODE_DOCUMENTDB_INTERNALERROR),
1639 errmsg("Username is null")));
1640 }
1641
1642 const char *cmdStr;
1643
1644 if (returnDocuments)
1645 {
1646 cmdStr = FormatSqlQuery(
1647 "WITH r AS ("
1648 " SELECT child.rolname::text AS child_role, "
1649 " CASE WHEN parent.rolname = '%s' "
1650 " THEN '%s' "
1651 " ELSE parent.rolname::text "
1652 " END AS parent_role "
1653 " FROM pg_roles parent "
1654 " JOIN pg_auth_members am ON parent.oid = am.roleid "
1655 " JOIN pg_roles child ON am.member = child.oid "
1656 " WHERE child.rolcanlogin = true "
1657 " AND child.rolname = $1"
1658 " AND child.rolname NOT IN ('%s', '%s', '%s', '%s', '%s') "
1659 ") "
1660 "SELECT ARRAY_AGG(%s.row_get_bson(r) ORDER BY r.parent_role) "
1661 "FROM r;",
1662 ApiRootInternalRole, ApiRootRole,
1663 ApiAdminRole, ApiAdminRoleV2, ApiBgWorkerRole, ApiReplicationRole,
1664 ApiSettingsManagerRole,
1665 CoreSchemaName);
1666 }
1667 else
1668 {
1669 cmdStr = FormatSqlQuery(
1670 "SELECT CASE WHEN parent.rolname = '%s' "
1671 " THEN '%s' "
1672 " ELSE parent.rolname::text "
1673 " END "
1674 "FROM pg_roles parent "
1675 "JOIN pg_auth_members am ON parent.oid = am.roleid "
1676 "JOIN pg_roles child ON am.member = child.oid "
1677 "WHERE child.rolcanlogin = true "
1678 " AND child.rolname = $1 "
1679 " AND child.rolname NOT IN ('%s', '%s', '%s', '%s', '%s') "
1680 "ORDER BY parent.rolname "
1681 "LIMIT 1;",
1682 ApiRootInternalRole, ApiRootRole,
1683 ApiAdminRole, ApiAdminRoleV2, ApiBgWorkerRole, ApiReplicationRole,
1684 ApiSettingsManagerRole);
1685 }
1686
1687 int argCount = 1;
1688 Oid argTypes[1];
1689 Datum argValues[1];
1690

Callers 2

connection_statusFunction · 0.85

Calls 2

FormatSqlQueryFunction · 0.85

Tested by

no test coverage detected