Ejemplo n.º 1
0
def handle_social_data(event):
    social_data = event.social_data
    request = event.request

    if not social_data['user']['id']:
        request.session.flash(
            _('No external user id found? Perhaps permissions for '
              'authentication are set incorrectly'), 'error')
        return False

    extng_id = ExternalIdentityService.by_external_id_and_provider(
        social_data['user']['id'],
        social_data['credentials'].provider_name,
        db_session=request.dbsession
    )
    update_identity = False
    # if current token doesn't match what we have in db - remove old one
    if extng_id and extng_id.access_token != social_data['credentials'].token:
        extng_id.delete()
        update_identity = True

    if not extng_id or update_identity:
        if not update_identity:
            request.session.flash({'msg': _('Your external identity is now '
                                            'connected with your account'),
                                   'level': 'warning'})
        ex_identity = ExternalIdentity()
        ex_identity.external_id = social_data['user']['id']
        ex_identity.external_user_name = social_data['user']['user_name']
        ex_identity.provider_name = social_data['credentials'].provider_name
        ex_identity.access_token = social_data['credentials'].token
        ex_identity.token_secret = social_data['credentials'].token_secret
        ex_identity.alt_token = social_data['credentials'].refresh_token
        event.user.external_identities.append(ex_identity)
        request.session.pop('zigg.social_auth', None)
Ejemplo n.º 2
0
 def test_by_external_id_and_provider(self, db_session):
     user = add_user(db_session)
     identity = ExternalIdentity(
         external_user_name="foo", external_id="foo", provider_name="facebook"
     )
     user.external_identities.append(identity)
     # db_session.flush()
     found = ExternalIdentityService.by_external_id_and_provider(
         provider_name="facebook", external_id="foo", db_session=db_session
     )
     assert identity == found
    def by_external_id_and_provider(cls, external_id, provider_name,
                                    db_session=None):
        """
        Backwards compatible alias to
        :class:`ziggurat_foundations.models.services.external_identity.ExternalIdentityService.by_external_id_and_provider`

        .. deprecated:: 0.8

        :param external_id:
        :param provider_name:
        :param db_session:
        :return: ExternalIdentity
        """
        db_session = get_db_session(db_session)
        return ExternalIdentityService.by_external_id_and_provider(
            external_id=external_id, provider_name=provider_name,
            db_session=db_session)