@defer.inlineCallbacks
    def add_oob_auth(self, stagetype, authdict, clientip):
        if stagetype not in self.checkers:
            raise LoginError(400, "", Codes.MISSING_PARAM)
        if 'session' not in authdict:
            raise LoginError(400, "", Codes.MISSING_PARAM)

        sess = self._get_session_info(
            authdict['session']
        )
        if 'creds' not in sess:
            sess['creds'] = {}
        creds = sess['creds']

        result = yield self.checkers[stagetype](authdict, clientip)
        if result:
            creds[stagetype] = result
            self._save_session(sess)
            defer.returnValue(True)
        defer.returnValue(False)
Returns the type of the given object based on datastore profile and inferrence from object
dataset/ETHPy150Open matrix-org/synapse/synapse/handlers/auth.py/AuthHandler.add_oob_auth--crossover with--dataset/ETHPy150Open ooici/pyon/pyon/datastore/postgresql/base_store.py/PostgresDataStore._get_obj_type