Ejemplo n.º 1
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)
Ejemplo n.º 2
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)
Ejemplo n.º 3
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)
Ejemplo n.º 4
0
 def get_signup_form( self ):
     user_details = self.user_details
     initial = dict(
         username=user_details.get('username', user_details.get('name')),
         email=user_details.get('email'),
     )
     return SSORegistrationForm( initial=initial, request=self.request )
Ejemplo n.º 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)
Ejemplo n.º 6
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,
    })
Ejemplo n.º 7
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))
Ejemplo n.º 8
0
    def post( self, request, *args, **kw ):
        user_details = self.user_details
        is_signup = 'signup' in request.POST

        tmp_user = request.unique_user

        if is_signup:
            self.form = SSORegistrationForm(self.request.POST, request=self.request)
            self.signup_form = self.form
            self.login_form = self.get_login_form()
        else:
            self.form = LoginForm( self.request.POST )
            self.login_form = self.form
            self.signup_form = self.get_signup_form()
        
        context = self.get_context_data(*args, **kw)

        if self.form.is_valid():
            if is_signup:
                user = self.form.save()
            else:
                user = self.form.user

            fb_user = FBUser.create_or_update(user_details)
            FBAssociation.objects.create(
                    fb_uid = fb_user.id,
                    fb_user = fb_user,
                    user = user)
            user = auth.authenticate(fb_uid=fb_user.id)
            auth.login(self.request, user)
            participation = ContestParticipation.objects.get(contest=self.contest, fb_user=fb_user)
            participation.user = user
            participation.save()

            if not is_signup and tmp_user and tmp_user.username.startswith('fb-'):
                # user logged in, remove temporary user
                tmp_user.delete()

            return http.HttpResponseRedirect(reverse(self.on_success_view))

        return self.render_to_response(context)
Ejemplo n.º 9
0
            user = None

    is_new = not bool(user)

    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 ""),
Ejemplo n.º 10
0
            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)
    else:
        logger.debug(user_info)
        initial = dict(
            next=next,
            username=user_info.get('username'),
            email=user_info.get('email'),
        )
        form = SSORegistrationForm(initial=initial, request=request)
    return direct_to_template(request, "account/sso_registration.html", {
        'form':form,
        'user_info':user_info,
    })

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 )
Ejemplo n.º 11
0
            user = None

    is_new = not bool(user)

    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,
                )