コード例 #1
0
    def execute(self, args):
        self._prepare(args)

        from django.contrib.auth.models import User
        from django_openid_auth.models import UserOpenID

        # Django took over logging and we need it back
        self.reset_logger(args, True)

        try:
            user = User.objects.get(username=args.username)
        except User.DoesNotExist:

            # We can only give up at that point, the user must exist.
            self.logger.error('Error: No such user [{}]'.format(args.username))
            sys.exit(self.SYS_ERROR.NO_SUCH_WEB_ADMIN_USER)

        claimed_id = getattr(args, 'claimed-id')

        try:
            user_open_id = UserOpenID.objects.get(user=user)
        except UserOpenID.DoesNotExist:
            user_open_id = UserOpenID()
            user_open_id.user = user

        user_open_id.claimed_id = claimed_id
        user_open_id.display_id = claimed_id  # Same value for display_id
        user_open_id.save()

        self._ok(args)
コード例 #2
0
ファイル: web_admin_auth.py プロジェクト: Aayush-Kasurde/zato
    def execute(self, args):
        self._prepare(args)

        from django.contrib.auth.models import User
        from django_openid_auth.models import UserOpenID

        # Django took over logging and we need it back
        self.reset_logger(args, True)

        try:
            user = User.objects.get(username=args.username)
        except User.DoesNotExist:

            # We can only give up at that point, the user must exist.
            self.logger.error('Error: No such user [{}]'.format(args.username))
            sys.exit(self.SYS_ERROR.NO_SUCH_WEB_ADMIN_USER)

        claimed_id = getattr(args, 'claimed-id')

        try:
            user_open_id = UserOpenID.objects.get(user=user)
        except UserOpenID.DoesNotExist:
            user_open_id = UserOpenID()
            user_open_id.user = user

        user_open_id.claimed_id = claimed_id
        user_open_id.display_id = claimed_id # Same value for display_id
        user_open_id.save()

        self._ok(args)
コード例 #3
0
ファイル: views.py プロジェクト: a4i/libravatar
def confirm_openid(request, openid_id):

    session = {'id': request.session.session_key}
    current_url = settings.SITE_URL + request.path

    oidutil.log = openid_logging
    openid_consumer = consumer.Consumer(session, DjangoOpenIDStore())

    if request.method == 'POST':
        info = openid_consumer.complete(request.POST, current_url)
    else:
        info = openid_consumer.complete(request.GET, current_url)

    if info.status == consumer.FAILURE:
        return render_to_response('account/openid_confirmationfailed.html',
                                  {'message': info.message},
                                  context_instance=RequestContext(request))
    elif info.status == consumer.CANCEL:
        return render_to_response('account/openid_confirmationfailed.html',
                                  {'message': '(cancelled by user)'},
                                  context_instance=RequestContext(request))
    elif info.status != consumer.SUCCESS:
        return render_to_response('account/openid_confirmationfailed.html',
                                  {'message': '(unknown verification error)'},
                                  context_instance=RequestContext(request))

    try:
        unconfirmed = UnconfirmedOpenId.objects.get(id=openid_id,
                                                    user=request.user)
    except UnconfirmedOpenId.DoesNotExist:
        return render_to_response(
            'account/openid_confirmationfailed.html',
            {'message': 'ID %s not found in the database.' % openid_id},
            context_instance=RequestContext(request))

    # TODO: check for a reasonable expiration time
    confirmed = ConfirmedOpenId()
    confirmed.user = unconfirmed.user
    confirmed.ip_address = request.META['REMOTE_ADDR']
    confirmed.openid = unconfirmed.openid
    confirmed.save()

    unconfirmed.delete()

    # if there's a single image in this user's profile, assign it to the new email
    photos = confirmed.user.photos
    if photos.count() == 1:
        confirmed.set_photo(photos.get())

    # Also allow user to login using this OpenID (if not taken already)
    if not UserOpenID.objects.filter(claimed_id=confirmed.openid).exists():
        user_openid = UserOpenID()
        user_openid.user = request.user
        user_openid.claimed_id = confirmed.openid
        user_openid.display_id = confirmed.openid
        user_openid.save()

    return HttpResponseRedirect(reverse('libravatar.account.views.profile'))
コード例 #4
0
ファイル: views.py プロジェクト: libravatar/libravatar
def confirm_openid(request, openid_id):

    session = {'id': request.session.session_key}
    current_url = settings.SITE_URL + request.path

    oidutil.log = openid_logging
    openid_consumer = consumer.Consumer(session, DjangoOpenIDStore())

    if request.method == 'POST':
        info = openid_consumer.complete(request.POST, current_url)
    else:
        info = openid_consumer.complete(request.GET, current_url)

    if info.status == consumer.FAILURE:
        return render_to_response('account/openid_confirmationfailed.html', {'message': info.message},
                                  context_instance=RequestContext(request))
    elif info.status == consumer.CANCEL:
        return render_to_response('account/openid_confirmationfailed.html', {'message': '(cancelled by user)'},
                                  context_instance=RequestContext(request))
    elif info.status != consumer.SUCCESS:
        return render_to_response('account/openid_confirmationfailed.html', {'message': '(unknown verification error)'},
                                  context_instance=RequestContext(request))

    try:
        unconfirmed = UnconfirmedOpenId.objects.get(id=openid_id, user=request.user)
    except UnconfirmedOpenId.DoesNotExist:
        return render_to_response('account/openid_confirmationfailed.html',
                                  {'message': 'ID %s not found in the database.' % openid_id},
                                  context_instance=RequestContext(request))

    # TODO: check for a reasonable expiration time
    confirmed = ConfirmedOpenId()
    confirmed.user = unconfirmed.user
    confirmed.ip_address = '0.0.0.0'
    confirmed.openid = unconfirmed.openid
    confirmed.save()

    unconfirmed.delete()

    # if there's a single image in this user's profile, assign it to the new email
    photos = confirmed.user.photos
    if photos.count() == 1:
        confirmed.set_photo(photos.get())

    # Also allow user to login using this OpenID (if not taken already)
    if not UserOpenID.objects.filter(claimed_id=confirmed.openid).exists():
        user_openid = UserOpenID()
        user_openid.user = request.user
        user_openid.claimed_id = confirmed.openid
        user_openid.display_id = confirmed.openid
        user_openid.save()

    return HttpResponseRedirect(reverse('libravatar.account.views.profile'))
コード例 #5
0
    def do_request(self, data, *args, **kwargs):  # pylint: disable=unused-argument
        '''
        Handle request, called by get() or post()
        '''
        session = {'id': self.request.session.session_key}
        current_url = self.request.build_absolute_uri('/')[:-1] + \
            self.request.path
        openid_consumer = consumer.Consumer(session, DjangoOpenIDStore())
        info = openid_consumer.complete(data, current_url)
        if info.status == consumer.FAILURE:
            messages.error(
                self.request,
                _('Confirmation failed: "') + str(info.message) + '"')
            return HttpResponseRedirect(reverse_lazy('profile'))

        if info.status == consumer.CANCEL:
            messages.error(self.request, _('Cancelled by user'))
            return HttpResponseRedirect(reverse_lazy('profile'))

        if info.status != consumer.SUCCESS:
            messages.error(self.request, _('Unknown verification error'))
            return HttpResponseRedirect(reverse_lazy('profile'))

        try:
            unconfirmed = self.model.objects.get(  # pylint: disable=no-member
                user=self.request.user, id=kwargs['openid_id'])
        except self.model.DoesNotExist:  # pylint: disable=no-member
            messages.error(self.request, _('ID does not exist'))
            return HttpResponseRedirect(reverse_lazy('profile'))

        # TODO: Check for a reasonable expiration time
        confirmed = self.model_confirmed()
        confirmed.user = unconfirmed.user
        confirmed.ip_address = get_client_ip(self.request)[0]
        confirmed.openid = unconfirmed.openid
        confirmed.save()

        unconfirmed.delete()

        # If there is a single image in this user's profile
        # assign it to the new id
        if self.request.user.photo_set.count() == 1:
            confirmed.set_photo(self.request.user.photo_set.first())

        # Also allow user to login using this OpenID (if not already taken)
        if not UserOpenID.objects.filter(claimed_id=confirmed.openid).exists():  # pylint: disable=no-member
            user_openid = UserOpenID()
            user_openid.user = self.request.user
            user_openid.claimed_id = confirmed.openid
            user_openid.display_id = confirmed.openid
            user_openid.save()
        return HttpResponseRedirect(reverse_lazy('profile'))