    Status checkAuthForOperation(OperationContext* opCtx,
                                 const std::string& dbname,
                                 const BSONObj& cmdObj) override {
        AuthorizationSession* authSession = AuthorizationSession::get(opCtx->getClient());

        if (!authSession->isAuthorizedToParseNamespaceElement(cmdObj.firstElement())) {
            return Status(ErrorCodes::Unauthorized, "Unauthorized");
        }
        const NamespaceString nss(parseNsOrUUID(opCtx, dbname, cmdObj));
        auto hasTerm = cmdObj.hasField(kTermField);
        return authSession->checkAuthForFind(nss, hasTerm);
    }
    Status checkAuthForOperation(OperationContext* opCtx,
                                 const std::string& dbname,
                                 const BSONObj& cmdObj) override {
        AuthorizationSession* authSession = AuthorizationSession::get(opCtx->getClient());

        if (!authSession->isAuthorizedToParseNamespaceElement(cmdObj.firstElement())) {
            return Status(ErrorCodes::Unauthorized, "Unauthorized");
        }
        const NamespaceString nss(parseNsOrUUID(opCtx, dbname, cmdObj));
        auto hasTerm = cmdObj.hasField(kTermField);
        return authSession->checkAuthForFind(nss, hasTerm);
    }