BSONObj validateIndexKey(const BSONObj& a, void* data) { BSONObj key = a[0].Obj(); Status indexValid = validateKeyPattern(key); if (!indexValid.isOK()) { return BSON("" << BSON("ok" << false << "errmsg" << indexValid.codeString())); } return BSON("" << BSON("ok" << true)); }
void AuthorizationManager::_acquirePrivilegesForPrincipalFromDatabase( const std::string& dbname, const PrincipalName& principal) { BSONObj privilegeDocument; Status status = getPrivilegeDocument(dbname, principal, &privilegeDocument); if (status.isOK()) { status = acquirePrivilegesFromPrivilegeDocument(dbname, principal, privilegeDocument); } if (!status.isOK() && status != ErrorCodes::UserNotFound) { log() << "Privilege acquisition failed for " << principal << " in database " << dbname << ": " << status.reason() << " (" << status.codeString() << ")" << endl; } }
void AuthorizationSession::_acquirePrivilegesForPrincipalFromDatabase( const std::string& dbname, const UserName& user) { BSONObj privilegeDocument; Status status = _externalState->getAuthorizationManager().getPrivilegeDocument( dbname, user, &privilegeDocument); if (status.isOK()) { status = acquirePrivilegesFromPrivilegeDocument(dbname, user, privilegeDocument); } if (!status.isOK() && status != ErrorCodes::UserNotFound) { log() << "Privilege acquisition failed for " << user << " in database " << dbname << ": " << status.reason() << " (" << status.codeString() << ")" << endl; } }
virtual bool run(const string &db, BSONObj &cmdObj, int options, string &errmsg, BSONObjBuilder &result, bool fromRepl) { BSONElement e = cmdObj.firstElement(); long long bps; if (e.type() == String) { Status status = BytesQuantity<long long>::fromString(e.Stringdata(), bps); if (!status.isOK()) { stringstream ss; ss << "error parsing number " << e.Stringdata() << ": " << status.codeString() << " " << status.reason(); errmsg = ss.str(); return false; } } else { if (!e.isNumber()) { errmsg = "backupThrottle argument must be a number"; return false; } bps = e.safeNumberLong(); } return Manager::throttle(bps, errmsg, result); }
void ObjectInfo::Functions::invalidForStorage::call(JSContext* cx, JS::CallArgs args) { if (args.length() != 1) uasserted(ErrorCodes::BadValue, "invalidForStorage needs 1 argument"); if (args.get(0).isNull()) { args.rval().setNull(); return; } if (!args.get(0).isObject()) uasserted(ErrorCodes::BadValue, "argument to invalidForStorage has to be an object"); Status validForStorage = ValueWriter(cx, args.get(0)).toBSON().storageValid(true); if (validForStorage.isOK()) { args.rval().setNull(); return; } std::string errmsg = str::stream() << validForStorage.codeString() << ": " << validForStorage.reason(); ValueReader(cx, args.rval()).fromStringData(errmsg); }