def return_callback(request): token = request.POST.get('token', None) if token is None: return http.HttpResponseBadRequest() f = urlopen('http://loginza.ru/api/authinfo?token=%s' % token) result = f.read() f.close() data = json.loads(result) if 'error_type' in data: signals.error.send(request, error=LoginzaError(data)) return redirect(_return_path(request)) identity = models.Identity.objects.from_loginza_data(data) user_map = models.UserMap.objects.for_identity(identity, request) response = redirect(_return_path(request)) if request.user.is_anonymous(): user = auth.authenticate(user_map=user_map) if user is not None: # вот это решило проблему if user.is_active: auth.login(request, user) results = signals.authenticated.send(request, user=user, identity=identity) for callback, result in results: if isinstance(result, http.HttpResponse): response = result break return response
def return_callback(request): token = request.POST.get('token', None) if token is None: return http.HttpResponseBadRequest() params = {'token': token} if settings.WIDGET_ID is not None and settings.API_SIGNATURE is not None: sig = md5(token + settings.API_SIGNATURE).hexdigest() params.update(id=settings.WIDGET_ID, sig=sig) f = urlopen('http://loginza.ru/api/authinfo?%s' % urlencode(params)) result = f.read() f.close() data = json.loads(result) if 'error_type' in data: signals.error.send(request, error=LoginzaError(data)) return redirect(_return_path(request)) identity = models.Identity.objects.from_loginza_data(data) user_map = models.UserMap.objects.for_identity(identity, request) response = redirect(_return_path(request)) if request.user.is_anonymous(): user = auth.authenticate(user_map=user_map) results = signals.authenticated.send(request, user=user, identity=identity) for callback, result in results: if isinstance(result, http.HttpResponse): response = result break return response
def render(self, context): kwargs = dict([(smart_str(k, 'ascii'), v.resolve(context)) for k, v in self.kwargs.items()]) if 'lang' not in kwargs: kwargs['lang'] = settings.DEFAULT_LANGUAGE # save current path, so if user will be logged with loginza # he will be redirected back to the page he for login _return_path(context['request'], context['request'].path) html = self.html_template(kwargs, self.caption) if self.asvar: context[self.asvar] = html html = '' return html
def complete_registration(request): if request.user.is_authenticated(): return http.HttpResponseForbidden(u"Вы попали сюда по ошибке") try: identity_id = request.session.get("users_complete_reg_id", None) user_map = models.UserMap.objects.get(identity__id=identity_id) except models.UserMap.DoesNotExist: return http.HttpResponseForbidden(u"Вы попали сюда по ошибке") if request.method == "POST": form = CompleteReg(user_map.user.id, request.POST) if form.is_valid(): user_map.user.username = form.cleaned_data["username"] user_map.user.email = form.cleaned_data["email"] user_map.user.save() user_map.verified = True user_map.save() user = auth.authenticate(user_map=user_map) auth.login(request, user) messages.info(request, u"Добро пожаловать!") del request.session["users_complete_reg_id"] return redirect(_return_path(request)) else: form = CompleteReg(user_map.user.id, initial={"username": user_map.user.username, "email": user_map.user.email}) return form
def complete_registration(request): if request.user.is_authenticated(): return http.HttpResponseForbidden(u'Вы попали сюда по ошибке') try: identity_id = request.session.get('users_complete_reg_id', None) user_map = models.UserMap.objects.get(identity__id=identity_id) except models.UserMap.DoesNotExist: return http.HttpResponseForbidden(u'Вы попали сюда по ошибке') if request.method == 'POST': form = forms.CompleteReg(user_map.user.id, request.POST) if form.is_valid(): user_map.user.username = form.cleaned_data['username'] user_map.user.email = form.cleaned_data['email'] user_map.user.save() user_map.verified = True user_map.save() user = auth.authenticate(user_map=user_map) auth.login(request, user) messages.info(request, u'Welcome!') del request.session['users_complete_reg_id'] return redirect(_return_path(request)) else: form = forms.CompleteReg(user_map.user.id, initial={ 'username': user_map.user.username, 'email': user_map.user.email, }) return render_to_response('users/complete_reg.html', {'form': form}, context_instance=RequestContext(request), )
def loginza_register(request): try: identity_id = request.session.get('users_complete_reg_id', None) user_map = UserMap.objects.select_related().get(identity__id=identity_id) except UserMap.DoesNotExist: return redirect('login') user_data = json.loads(user_map.identity.data) if request.method == 'POST': form = LoginzaRegistrationForm(request.POST, user_map=user_map) if form.is_valid(): user = form.save() # check if email if provided by loginza - no need to verify it then if user_data.get('email'): # no need to confirm email user = auth.authenticate(username=user.username, password=form.cleaned_data.get('password1','')) assert user and user.is_authenticated() auth.login(request, user) #messages.info(request, u'Добро пожаловать!') del request.session['users_complete_reg_id'] return redirect(_return_path(request)) else: return redirect('registration_completed') else: form = LoginzaRegistrationForm(user_map=user_map, initial={'email': user_map.user.email}) if 'name' in user_data: form.initial['first_name'] = user_data['name'].get('first_name', '') form.initial['last_name'] = user_data['name'].get('last_name', '') return render_to_response('registration/loginza_register.html', {'form': form}, context_instance=RequestContext(request))
def complete_registration(request): if request.user.is_authenticated(): return HttpResponseForbidden( u'Вы попали сюда по ошибке') # TODO: redirect try: identity_id = request.session.get('users_complete_reg_id', None) user_map = UserMap.objects.select_related().get( identity__id=identity_id) except UserMap.DoesNotExist: return HttpResponseForbidden(u'Вы попали сюда по ошибке') if request.method == 'POST': form = CompleteRegistrationForm(user_map.user.id, request.POST) if form.is_valid(): user_map.user.username = form.cleaned_data['username'] user_map.user.email = form.cleaned_data['email'] user_map.user.first_name = form.cleaned_data['first_name'] user_map.user.last_name = form.cleaned_data['last_name'] user_map.user.set_password(form.cleaned_data["password1"]) user_map.user.save() user_map.verified = True user_map.save() user = auth.authenticate(user_map=user_map) auth.login(request, user) messages.info(request, u'Добро пожаловать!') del request.session['users_complete_reg_id'] return redirect(_return_path(request)) else: form = CompleteRegistrationForm(user_map.user.id, initial={ 'username': user_map.user.username, 'email': user_map.user.email, }) user_map = UserMap.objects.get( user=user_map.user) # TODO: what if there are several user maps? data = json.loads(user_map.identity.data) form.initial['first_name'] = data['name']['first_name'] form.initial['last_name'] = data['name']['last_name'] return render_to_response('complete_registration.html', {'form': form}, context_instance=RequestContext(request))
def loginza_register(request): if request.user.is_authenticated(): return redirect('my_profile') try: identity_id = request.session.get('users_complete_reg_id', None) user_map = UserMap.objects.select_related().get(identity__id=identity_id) except UserMap.DoesNotExist: return redirect('main') if request.method == 'POST': form = CompleteRegistrationForm(user_map.user.id, request.POST) if form.is_valid(): user_map.user.username = form.cleaned_data['username'] user_map.user.email = form.cleaned_data['email'] user_map.user.first_name = form.cleaned_data['first_name'] user_map.user.last_name = form.cleaned_data['last_name'] user_map.user.set_password(form.cleaned_data["password1"]) user_map.user.save() user_map.verified = True user_map.save() #user = auth.authenticate(user_map=user_map) #auth.login(request, user) #messages.info(request, u'Добро пожаловать!') del request.session['users_complete_reg_id'] return redirect(_return_path(request)) else: form = CompleteRegistrationForm(user_map.user.id, initial={ 'username': user_map.user.username, 'email': user_map.user.email, }) user_map = UserMap.objects.get(user=user_map.user) # TODO: what if there are several user maps? data = json.loads(user_map.identity.data) form.initial['first_name'] = data['name']['first_name'] form.initial['last_name'] = data['name']['last_name'] return render_to_response('registration/loginza_register.html', {'form': form}, context_instance=RequestContext(request))