# HG changeset patch # User Marcin Kuzminski # Date 2018-11-28 12:40:34 # Node ID be2709fe3e63a04ee55ffa6113440583813aa5a7 # Parent 7ab39ef0ec16647f5411c6d75d6cc4ba0badc274 db-models: added some helpers for auth, and external identity code. diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -377,6 +377,12 @@ class RhodeCodeSetting(Base, BaseModel): % (self.SETTINGS_TYPES.keys(), val)) self._app_settings_type = val + @classmethod + def get_by_prefix(cls, prefix): + return RhodeCodeSetting.query()\ + .filter(RhodeCodeSetting.app_settings_name.startswith(prefix))\ + .all() + def __unicode__(self): return u"<%s('%s:%s[%s]')>" % ( self.__class__.__name__, @@ -4143,20 +4149,16 @@ class ExternalIdentity(Base, BaseModel): base_table_args ) - external_id = Column('external_id', Unicode(255), default=u'', - primary_key=True) + external_id = Column('external_id', Unicode(255), default=u'', primary_key=True) external_username = Column('external_username', Unicode(1024), default=u'') - local_user_id = Column('local_user_id', Integer(), - ForeignKey('users.user_id'), primary_key=True) - provider_name = Column('provider_name', Unicode(255), default=u'', - primary_key=True) + local_user_id = Column('local_user_id', Integer(), ForeignKey('users.user_id'), primary_key=True) + provider_name = Column('provider_name', Unicode(255), default=u'', primary_key=True) access_token = Column('access_token', String(1024), default=u'') alt_token = Column('alt_token', String(1024), default=u'') token_secret = Column('token_secret', String(1024), default=u'') @classmethod - def by_external_id_and_provider(cls, external_id, provider_name, - local_user_id=None): + def by_external_id_and_provider(cls, external_id, provider_name, local_user_id=None): """ Returns ExternalIdentity instance based on search params @@ -4198,6 +4200,13 @@ class ExternalIdentity(Base, BaseModel): query = query.filter(cls.local_user_id == local_user_id) return query + @classmethod + def load_provider_plugin(cls, plugin_id): + from rhodecode.authentication.base import loadplugin + _plugin_id = 'egg:rhodecode-enterprise-ee#{}'.format(plugin_id) + auth_plugin = loadplugin(_plugin_id) + return auth_plugin + class Integration(Base, BaseModel): __tablename__ = 'integrations'