* WriteSingleUserDocument creates and writes a BSON document for a single user * to the provided array writer. */
| 1368 | * to the provided array writer. |
| 1369 | */ |
| 1370 | static void |
| 1371 | WriteSingleUserDocument(UserRoleHashEntry *userEntry, bool showPrivileges, |
| 1372 | pgbson_array_writer *userArrayWriter) |
| 1373 | { |
| 1374 | pgbson_writer userWriter; |
| 1375 | PgbsonWriterInit(&userWriter); |
| 1376 | |
| 1377 | PgbsonWriterAppendUtf8(&userWriter, "_id", 3, psprintf( |
| 1378 | "admin.%s", |
| 1379 | userEntry->user)); |
| 1380 | PgbsonWriterAppendUtf8(&userWriter, "userId", 6, |
| 1381 | psprintf("admin.%s", userEntry->user)); |
| 1382 | PgbsonWriterAppendUtf8(&userWriter, "user", 4, userEntry->user); |
| 1383 | PgbsonWriterAppendUtf8(&userWriter, "db", 2, "admin"); |
| 1384 | |
| 1385 | pgbson_array_writer roleArrayWriter; |
| 1386 | PgbsonWriterStartArray(&userWriter, "roles", 5, |
| 1387 | &roleArrayWriter); |
| 1388 | WriteMultipleRoles(userEntry->roles, &roleArrayWriter); |
| 1389 | PgbsonWriterEndArray(&userWriter, &roleArrayWriter); |
| 1390 | |
| 1391 | if (EnableUsersInfoPrivileges && showPrivileges && userEntry->roles != NULL) |
| 1392 | { |
| 1393 | pgbson_array_writer privilegesArrayWriter; |
| 1394 | PgbsonWriterStartArray(&userWriter, "inheritedPrivileges", 19, |
| 1395 | &privilegesArrayWriter); |
| 1396 | WriteMultipleRolePrivileges(userEntry->roles, &privilegesArrayWriter); |
| 1397 | PgbsonWriterEndArray(&userWriter, &privilegesArrayWriter); |
| 1398 | } |
| 1399 | |
| 1400 | if (userEntry->isExternal) |
| 1401 | { |
| 1402 | PgbsonWriterAppendDocument(&userWriter, "customData", 10, |
| 1403 | GetUserInfoFromExternalIdentityProvider( |
| 1404 | userEntry->user)); |
| 1405 | } |
| 1406 | |
| 1407 | PgbsonArrayWriterWriteDocument(userArrayWriter, PgbsonWriterGetPgbson( |
| 1408 | &userWriter)); |
| 1409 | } |
| 1410 | |
| 1411 | |
| 1412 | /* |
no test coverage detected