def bind_email(request): openid = request.GET.get('openid', request.POST.get('openid', '')) username = request.GET.get('nickname', request.POST.get('username', '')) type = request.GET.get('type', request.POST.get('type', '')) avatar = request.GET.get('avatar', request.POST.get('avatar', '')) if request.method == 'POST': form = BindEmail(request.POST) if form.is_valid(): openid = form.cleaned_data['openid'] username = form.cleaned_data['username'] email = form.cleaned_data['email'] password = form.cleaned_data['password'] type = form.cleaned_data['type'] avatar = form.cleaned_data['avatar'] users = User.objects.filter(email=email) if users: user = users[0] else: while User.objects.filter(username=username): username = username + '*' user = User(username=username, email=email) user.set_password(password) user.is_active = True user.avatar = avatar user.oauth = True user.save() oauth_ex = OAuth_ex(user=user, openid=openid, type=type) oauth_ex.save() login(request, user, backend='django.contrib.auth.backends.ModelBackend') data = {} data['goto_url'] = '3397/' data['goto_time'] = 10000 data['goto_page'] = True data['message_title'] = '绑定账号成功' data[ 'message'] = u'绑定成功!您的用户名为:<b>%s</b>。您现在可以同时使用本站账号和此第三方账号登录本站了!' % username return render_to_response('oauth/response.html', data) else: form = BindEmail( initial={ 'openid': openid, 'nickname': username, 'type': type, 'image_url': avatar, }) return render(request, 'oauth/bind_email.html', context={ 'form': form, 'type': type })
def post(self, request): form = RegisterForm(request.POST, request.FILES) if form.is_valid(): username = form.cleaned_data['username'] password = form.cleaned_data['password'] avatar = form.cleaned_data['avatar'] email = form.cleaned_data['email'] user = User() user.username = username user.set_password(password) user.email = email user.avatar = avatar user.save() return redirect(reverse('User:login')) else: return render(request, 'user/register.html', {'msg': '請爭取輸入!'})
def github_check(request): type = '1' request_code = request.GET.get('code') oauth_git = OAuth_github(GIT_ClIENT_ID, GIT_ClIENT_SECRET, GIT_CALLBACK_URL) try: access_token = oauth_git.get_access_token(request_code) time.sleep(0.1) except: data = {} data['goto_url'] = '/' data['goto_time'] = 10000 data['goto_page'] = True data['message_title'] = '登录失败' data['message'] = '获取授权失败,请确认是否允许授权,并重试。若问题无法解决,请联系网站管理人员' return render_to_response('oauth/response.html', data) user_info = oauth_git.get_user_info() username = user_info.get('login', '') avatar = user_info.get('avatar_url', '') openid = str(oauth_git.openid) print(username, avatar, openid) # 查询是否绑定 github = OAuth_ex.objects.filter(openid=openid, type=type) if github: login(request, github[0].user) return redirect(reverse('index')) else: try: email = oauth_git.get_email() except: url = "%s?username=%s&openid=%s&type=%s&avatar=%s" % (redirect( reverse('user:bind_email')), username, openid, type, avatar) return HttpResponseRedirect(url) users = User.objects.filter(email=email) if users: user = users[0] else: while User.objects.filter(username=username): # 防止用户名重复 username = username + '*' user = User(username=username, email=email) pwd = '123456' # 随机设置用户密码 user.set_password(pwd) user.is_active = True user.avatar = avatar # 下载用户头像图片 user.oauth = 1 user.save() oauth_ex = OAuth_ex(user=user, openid=openid, type=type) oauth_ex.save() login(request, user) data = {} # 反馈登陆结果 data['goto_url'] = '/' data['goto_time'] = 10000 data['goto_page'] = True data['message_title'] = '绑定用户成功' data['message'] = u'绑定成功!您的用户名为:<b>%s</b>。您现在可以同时使用本站账号和此第三方账号登录本站了!' \ u'初始密码 123456 !' \ u'请尽快更改!' % username return render_to_response('oauth/response.html', data)