Example #1
0
def fb_register_user(request):
    from film20.account.views import get_next, new_user_registered_redirect
    from film20.account.forms import SSORegistrationForm
    reg_data = request.session.get('facebook_reg_data')
    if not reg_data:
        return HttpResponse("No reg data", status=400)
    user_details = reg_data['user_details']
    access_token = reg_data['access_token']

    fb_user = FBUser.create_or_update(user_details)
    user_details['avatar_url'] = fb_user.picture_url('large')

    uid = user_details['uid']
    next = get_next(request)
    if request.POST:
        form = SSORegistrationForm(request.POST, request=request)
        if form.is_valid():
            user = form.save()
            assoc = FBAssociation(user=user,
                                  fb_uid=uid,
                                  is_new=True,
                                  is_from_facebook=True,
                                  access_token=access_token)
            assoc.save()
            try:
                Avatar.create_from_url(user, user_details['avatar_url'])
            except Exception, e:
                logger.debug(e)
            user = authenticate(fb_uid=uid)
            login(request, user)
            return new_user_registered_redirect(request, next)
Example #2
0
def openid_new_user(request):
    next = get_next(request)
    if request.method == 'POST':
        form = SSORegistrationForm(request.POST, request=request)

        if form.is_valid():
            from django_openidauth.models import associate_openid
            from django.contrib.auth import load_backend
            new_user = form.save()
            associate_openid( new_user, request.openid )
            backend = load_backend('django.contrib.auth.backends.ModelBackend')
            new_user.backend = '%s.%s' % (
                backend.__module__, backend.__class__.__name__
            )
            auth_login(request, new_user)
            return new_user_registered_redirect(request, next or '/')
    else:
        initial = dict(
            next=next,
        )
        form = SSORegistrationForm(initial=initial, request=request)

    return direct_to_template(request, "account/sso_registration.html", {
        'form':form,
    })
Example #3
0
def oauth_new_user(request, name):
    from film20.utils.utils import direct_to_template

    logger.info("registering new %s user", name)
    
    reg_data = request.session.get('oauth_reg_data')
    access_token = reg_data['access_token']
    user_info = reg_data['user_info']
    next = reg_data['next'] or '/'
    service = OAuthService.get_by_name(name)
    
    if request.POST:
        form = SSORegistrationForm(request.POST, request=request)
        if form.is_valid():
            user = form.save()
            service.set_access_token(user, access_token, user_info['user_id'])
            try:
                Avatar.create_from_url(user, user_info['avatar_url'])
            except Exception, e:
                logger.warning(e)
            user = authenticate(service=service, user_id=user_info['user_id'])
            if user:
                auth_login_and_stats(request, user)
                logger.info("%s user (%s) authenticated and logged in, redirecting to %r", name, user, next)
                return new_user_registered_redirect(request, next)
            logger.error("Can't login to new created user %s" % user)
            assert False, "Can't login to new created user %s" % user
        else:
            logger.warning("invalid sso form: %s", form.errors)
Example #4
0
def fb_register_user(request):
    from film20.account.views import get_next, new_user_registered_redirect
    from film20.account.forms import SSORegistrationForm
    reg_data = request.session.get('facebook_reg_data')
    if not reg_data:
        return HttpResponse("No reg data", status=400)
    user_details = reg_data['user_details']
    access_token = reg_data['access_token']

    fb_user = FBUser.create_or_update(user_details)
    user_details['avatar_url'] = fb_user.picture_url('large')
    
    uid = user_details['uid']
    next = get_next(request)
    if request.POST:
        form = SSORegistrationForm(request.POST, request=request)
        if form.is_valid():
            user = form.save()
            assoc = FBAssociation(user=user, fb_uid=uid, is_new=True, is_from_facebook=True, access_token=access_token)
            assoc.save()
            try:
                Avatar.create_from_url(user, user_details['avatar_url'])
            except Exception, e:
                logger.debug(e)
            user = authenticate(fb_uid=uid)
            login(request, user)
            return new_user_registered_redirect(request, next)
Example #5
0
def fb_register_user(request, details):
    from film20.account.views import get_next, new_user_registered_redirect
    from film20.account.forms import SSORegistrationForm
    user_details = pickle.loads(base64.decodestring(details))
    uid = user_details['uid']
    next = get_next(request)
    if request.POST:
        form = SSORegistrationForm(request.POST, request=request)
        if form.is_valid():
            user = form.save()
            assoc = FBAssociation(user=user, fb_uid=uid, is_new=True, is_from_facebook=True)
            assoc.save()
            try:
                Avatar.create_from_url(user, user_details['avatar_url'])
            except Exception, e:
                logger.debug(e)
            user = authenticate(user_id=user.id, fb_uid=uid)
            login(request, user)
            return new_user_registered_redirect(request, next)
Example #6
0
def register(request, success_url='/accounts/register/complete/',
        template_name='openid_register.html', already_registered_url='/'):
    """
    Allows a new user to register an account. A customised variation of the
    view of the same name from django-registration.

    Context::
        form
            The registration form

    Template::
        registration/registration_form.html (or template_name argument)

    """
    if request.method == 'POST':
        form = SSORegistrationForm(request.POST)

        if form.is_valid():
            new_user = form.save()
            associate_openid( new_user, request.openid )
            next = form.cleaned_data['next']
            print 'next',next

            # Unfortunately we have to annotate the user with the
            # 'django.contrib.auth.backends.ModelBackend' backend, or stuff breaks
            backend = load_backend('django.contrib.auth.backends.ModelBackend')
            new_user.backend = '%s.%s' % (
                backend.__module__, backend.__class__.__name__
            )
            log_user_in(request, new_user)

            return HttpResponseRedirect(next or success_url)
    else:
        if request.user.is_authenticated():
            return HttpResponseRedirect( already_registered_url )
        form = SSORegistrationForm(initial={'next':request.GET.get('next','')})

    return render_to_response(template_name, { 'form': form },
                              context_instance=RequestContext(request))
Example #7
0
    if user:
        # check if user associated with email from fb has association already
        try:
            assoc = FBAssociation.objects.get(user=user)
            return user
        except FBAssociation.DoesNotExist, e:
            pass

    if not user:
        if username:
            data = dict(username=username, email=email)
            form = SSORegistrationForm(data, request=request)
            if not form.is_valid():
                raise AutoCreateException('invalid registration data: %r' %
                                          form.errors)
            user = form.save()
        else:
            username = user_details.get('username') or user_details.get(
                'name', '')

            username = username and clean_username(username)

            try_cnt = 0

            while try_cnt < 100:
                data = dict(
                    username=username + (try_cnt and str(try_cnt) or ""),
                    email=email,
                )
                form = SSORegistrationForm(data, request=request)
                if form.is_valid():
Example #8
0
    if user:
        # check if user associated with email from fb has association already
        try:
            assoc = FBAssociation.objects.get(user=user)
            return user
        except FBAssociation.DoesNotExist, e:
            pass

    if not user:
        if username:
            data = dict(username=username, email=email)
            form = SSORegistrationForm(data, request=request)
            if not form.is_valid():
                raise AutoCreateException('invalid registration data: %r' % form.errors)
            user = form.save()
        else:
            username = user_details.get('username') or user_details.get('name', '')

            username = username and clean_username(username)

            try_cnt = 0

            while try_cnt < 100:
                data = dict(
                        username=username + (try_cnt and str(try_cnt) or ""),
                        email=email,
                )
                form = SSORegistrationForm(data, request=request)
                if form.is_valid():
                    user = form.save()