Ejemplo n.º 1
0
 def create_profile(self, http_request):
     email = '*****@*****.**'
     http_request.return_value = FakeResponse(200,
                                              json.dumps({'status': 'okay',
                                                          'email': email}))
     browserid_authenticate(request=Mock(), assertion='fake-assertion')
     return UserProfile.objects.get(email=email)
Ejemplo n.º 2
0
 def create_profile(self, http_request):
     email = '*****@*****.**'
     http_request.return_value = FakeResponse(
         200, json.dumps({
             'status': 'okay',
             'email': email
         }))
     request = fake_request()
     browserid_authenticate(request=request, assertion='fake-assertion')
     return UserProfile.objects.get(email=email)
Ejemplo n.º 3
0
    def obj_create(self, bundle, request, **kwargs):
        with statsd.timer('auth.browserid.verify'):
            profile, msg = browserid_authenticate(
                request, bundle.data['assertion'],
                browserid_audience=bundle.data['audience'],
                is_native=bundle.data.get('is_native', False)
            )
        if profile is None:
            log.info('No profile: %s' % (msg or ''))
            raise http_error(http.HttpUnauthorized,
                             'No profile.')

        request.user, request.amo_user = profile.user, profile
        request.groups = profile.groups.all()

        # TODO: move this to the signal.
        profile.log_login_attempt(True)
        user_logged_in.send(sender=profile.user.__class__, request=request,
                            user=profile.user)
        bundle.data = {
            'error': None,
            'token': self.get_token(request.amo_user.email),
            'settings': {
                'display_name': request.amo_user.display_name,
                'email': request.amo_user.email,
            }
        }
        bundle.data.update(PermissionResource()
                           .dehydrate(Bundle(request=request)).data)
        return bundle
Ejemplo n.º 4
0
    def obj_create(self, bundle, request, **kwargs):
        with statsd.timer('auth.browserid.verify'):
            profile, msg = browserid_authenticate(
                request,
                bundle.data['assertion'],
                browserid_audience=bundle.data['audience'],
                is_native=bundle.data.get('is_native', False))
        if profile is None:
            log.info('No profile')
            raise http_error(http.HttpUnauthorized, 'No profile.')

        request.user, request.amo_user = profile.user, profile
        request.groups = profile.groups.all()

        # TODO: move this to the signal.
        profile.log_login_attempt(True)
        user_logged_in.send(sender=profile.user.__class__,
                            request=request,
                            user=profile.user)
        bundle.data = {
            'error': None,
            'token': self.get_token(request.user.email),
            'settings': {
                'display_name': request.amo_user.display_name,
                'email': request.user.email,
            }
        }
        bundle.data.update(PermissionResource().dehydrate(
            Bundle(request=request)).data)
        return bundle
Ejemplo n.º 5
0
    def obj_create(self, bundle, request, **kwargs):
        with statsd.timer("auth.browserid.verify"):
            profile, msg = browserid_authenticate(
                request,
                bundle.data["assertion"],
                browserid_audience=bundle.data["audience"],
                is_native=bundle.data.get("is_native", False),
            )
        if profile is None:
            log.info("No profile")
            raise http_error(http.HttpUnauthorized, "No profile.")

        request.user, request.amo_user = profile.user, profile
        request.groups = profile.groups.all()

        # TODO: move this to the signal.
        profile.log_login_attempt(True)
        user_logged_in.send(sender=profile.user.__class__, request=request, user=profile.user)
        bundle.data = {
            "error": None,
            "token": self.get_token(request.user.email),
            "settings": {"display_name": request.amo_user.display_name, "email": request.user.email},
        }
        bundle.data.update(PermissionResource().dehydrate(Bundle(request=request)).data)
        return bundle
Ejemplo n.º 6
0
    def create_action(self, request, serializer):
        with statsd.timer('auth.browserid.verify'):
            profile, msg = browserid_authenticate(
                request, serializer.data['assertion'],
                browserid_audience=serializer.data['audience'],
                is_mobile=serializer.data['is_mobile'],
            )
        if profile is None:
            # Authentication failure.
            log.info('No profile: %s' % (msg or ''))
            raise AuthenticationFailed('No profile.')

        request.user, request.amo_user = profile.user, profile
        request.groups = profile.groups.all()

        # TODO: move this to the signal.
        profile.log_login_attempt(True)
        user_logged_in.send(sender=profile.user.__class__, request=request,
                            user=profile.user)

        # We want to return completely custom data, not the serializer's.
        data = {
            'error': None,
            'token': self.get_token(request.amo_user.email),
            'settings': {
                'display_name': request.amo_user.display_name,
                'email': request.amo_user.email,
            }
        }
        permissions = PermissionsSerializer(context={'request': request})
        data.update(permissions.data)
        return data
Ejemplo n.º 7
0
    def create_action(self, request, serializer):
        with statsd.timer('auth.browserid.verify'):
            profile, msg = browserid_authenticate(
                request,
                serializer.data['assertion'],
                browserid_audience=serializer.data['audience']
                or get_audience(request),
                is_mobile=serializer.data['is_mobile'],
            )
        if profile is None:
            # Authentication failure.
            log.info('No profile: %s' % (msg or ''))
            raise AuthenticationFailed('No profile.')

        request.user, request.amo_user = profile.user, profile
        request.groups = profile.groups.all()

        auth.login(request, profile.user)
        profile.log_login_attempt(True)  # TODO: move this to the signal.
        user_logged_in.send(sender=profile.user.__class__,
                            request=request,
                            user=profile.user)

        # We want to return completely custom data, not the serializer's.
        data = {
            'error': None,
            'token': self.get_token(request.amo_user.email),
            'settings': {
                'display_name': request.amo_user.display_name,
                'email': request.amo_user.email,
            }
        }
        # Serializers give up if they aren't passed an instance, so we
        # do that here despite PermissionsSerializer not needing one
        # really.
        permissions = PermissionsSerializer(context={'request': request},
                                            instance=True)
        data.update(permissions.data)

        # Add ids of installed/purchased/developed apps.
        data['apps'] = user_relevant_apps(profile)

        return data
Ejemplo n.º 8
0
    def create_action(self, request, serializer):
        with statsd.timer('auth.browserid.verify'):
            profile, msg = browserid_authenticate(
                request, serializer.data['assertion'],
                browserid_audience=serializer.data['audience'] or
                                   get_audience(request),
                is_mobile=serializer.data['is_mobile'],
            )
        if profile is None:
            # Authentication failure.
            log.info('No profile: %s' % (msg or ''))
            raise AuthenticationFailed('No profile.')

        request.user, request.amo_user = profile, profile
        request.groups = profile.groups.all()

        auth.login(request, profile)
        profile.log_login_attempt(True)  # TODO: move this to the signal.
        user_logged_in.send(sender=profile.__class__, request=request,
                            user=profile)

        # We want to return completely custom data, not the serializer's.
        data = {
            'error': None,
            'token': self.get_token(request.amo_user.email),
            'settings': {
                'display_name': request.amo_user.display_name,
                'email': request.amo_user.email,
            }
        }
        # Serializers give up if they aren't passed an instance, so we
        # do that here despite PermissionsSerializer not needing one
        # really.
        permissions = PermissionsSerializer(context={'request': request},
                                            instance=True)
        data.update(permissions.data)

        # Add ids of installed/purchased/developed apps.
        data['apps'] = user_relevant_apps(profile)

        return data
Ejemplo n.º 9
0
    def create_action(self, request, serializer):
        with statsd.timer("auth.browserid.verify"):
            profile, msg = browserid_authenticate(
                request,
                serializer.data["assertion"],
                browserid_audience=serializer.data["audience"],
                is_mobile=serializer.data["is_mobile"],
            )
        if profile is None:
            # Authentication failure.
            log.info("No profile: %s" % (msg or ""))
            raise AuthenticationFailed("No profile.")

        request.user, request.amo_user = profile.user, profile
        request.groups = profile.groups.all()

        # TODO: move this to the signal.
        profile.log_login_attempt(True)
        user_logged_in.send(sender=profile.user.__class__, request=request, user=profile.user)

        # We want to return completely custom data, not the serializer's.
        data = {
            "error": None,
            "token": self.get_token(request.amo_user.email),
            "settings": {"display_name": request.amo_user.display_name, "email": request.amo_user.email},
        }
        # Serializers give up if they aren't passed an instance, so we
        # do that here despite PermissionsSerializer not needing one
        # really.
        permissions = PermissionsSerializer(context={"request": request}, instance=True)
        data.update(permissions.data)

        # Add ids of installed/purchased/developed apps.
        data["apps"] = user_relevant_apps(profile)

        return data
Ejemplo n.º 10
0
 def create_profile(self, http_request):
     email = "*****@*****.**"
     http_request.return_value = FakeResponse(200, json.dumps({"status": "okay", "email": email}))
     browserid_authenticate(request=Mock(), assertion="fake-assertion")
     return UserProfile.objects.get(email=email)