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