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)
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, })
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)
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)
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))
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():
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()