MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / mapUser

Method mapUser

src/jrd/Mapping.cpp:1454–1654  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1452
1453
1454ULONG Mapping::mapUser(string& name, string& trustedRole)
1455{
1456 AuthReader::Info info;
1457
1458 if (flags & MAP_ERROR_HANDLER)
1459 {
1460 // We are in the error handler - perform minimum processing
1461 trustedRole = "";
1462 name = "<Unknown>";
1463
1464 if (authBlock)
1465 {
1466 for (AuthReader rdr(*authBlock); rdr.getInfo(info); rdr.moveNext())
1467 {
1468 if (info.type == NM_USER && info.name.hasData())
1469 {
1470 name = info.name.ToString();
1471 break;
1472 }
1473 }
1474 }
1475
1476 return 0;
1477 }
1478
1479 // Create new writer
1480 AuthWriter newBlock;
1481
1482 // Map it only when needed
1483 if (authBlock && authBlock->hasData() && (dbCache || secCache))
1484 {
1485 ExtInfo info;
1486
1487 // Caches are ready somehow - proceed with analysis
1488 AuthReader auth(*authBlock);
1489
1490 // Map in simple mode first main, next security db
1491 if (!(dbCache && dbCache->map4(false, internalFlags & FLAG_DB, auth, info, newBlock)))
1492 {
1493 if (!(secCache && secCache->map4(false, internalFlags & FLAG_SEC, auth, info, newBlock)))
1494 {
1495 // Map in wildcard mode first main, next security db
1496 if (!(dbCache && dbCache->map4(true, internalFlags & FLAG_DB, auth, info, newBlock)))
1497 {
1498 if (secCache)
1499 secCache->map4(true, internalFlags & FLAG_SEC, auth, info, newBlock);
1500 }
1501 }
1502 }
1503 }
1504
1505 for (AuthReader rdr(newBlock); rdr.getInfo(info); rdr.moveNext())
1506 {
1507 if (mainDb && info.secDb == mainDb)
1508 internalFlags |= FLAG_DB;
1509 if (info.secDb == secExpanded.c_str())
1510 internalFlags |= FLAG_SEC;
1511 }

Callers 4

getUserInfoFunction · 0.80
ServiceMethod · 0.80
checkPrivilegesMethod · 0.80
update_sessionMethod · 0.80

Calls 15

GdsClass · 0.85
map4Method · 0.80
getInfoMethod · 0.45
moveNextMethod · 0.45
hasDataMethod · 0.45
ToStringMethod · 0.45
c_strMethod · 0.45
addMethod · 0.45
appendMethod · 0.45
setMethod · 0.45
raiseMethod · 0.45
shrinkMethod · 0.45

Tested by

no test coverage detected