def reg(request): if request.method == "GET": return render_to_response( "account/reg.html", {"conf": conf, "title": _("register")}, context_instance=RequestContext(request) ) elif request.method == "POST": username = request.POST["username"] email = request.POST["email"] password = request.POST["password"] password2 = request.POST["password2"] try: alphanumeric(username) except: messages.add_message( request, messages.WARNING, _("username can only contain letters digits and underscore") ) return HttpResponseRedirect(reverse("reg")) if User.objects.filter(username=username).exists(): messages.add_message(request, messages.WARNING, _("username already exists")) return HttpResponseRedirect(reverse("reg")) if password != password2 or password == "" or password2 == "": messages.add_message(request, messages.WARNING, _("passwords don't match, or are blank")) return HttpResponseRedirect(reverse("reg")) user = User.objects.create_user(username, email, password) user = authenticate(username=username, password=password) login(request, user) p = profile() p.user = user p.save() return HttpResponseRedirect(reverse("index"))
def teacher_signup(request): if request.method == 'GET': return render_to_response('account/teacher-signup.html', {'title': '教师注册--工大CSDN俱乐部'}, context_instance=RequestContext(request)) elif request.method == 'POST': username = request.POST['username'] email = request.POST['email'] password1 = request.POST['password1'] password2 = request.POST['password2'] email = '*****@*****.**' % (email) if len(password1) <= 5 : messages.add_message(request, messages.WARNING, _(u'密码过短,至少6位')) return render_to_response('account/teacher-signup.html', context_instance=RequestContext(request)) if password1 == password2: user = User.objects.create_user(username=username, password=password1, email=email) u = authenticate(username=username, password=password1) else: messages.add_message(request, messages.WARNING, _(u'输入的密码不一致 !')) return render_to_response('account/teacher-signup.html', context_instance=RequestContext(request)) login(request, u) p = profile() p.user = user p.username = username p.identity = 0 p.temp = '%s %s %s' % (username, password1, email) p.save() url = base64.encodestring(p.temp) send_mail(u'教师身份验证', u'尊敬的老师,点击后面的链接验证您在工大CSDN的教师身份,以便您能正常的使用作业发布等功能。' u'http://dlpucsdn.com/confirm/%s' % (url), '*****@*****.**', [email]) messages.add_message(request, messages.WARNING, _(u'已经向您的邮箱%s发送了验证邮件,请注意查收!' % (email))) return render_to_response('index.html', context_instance=RequestContext(request))
def reg(request): if request.method == 'GET': return render_to_response('reg.html', {'conf': conf, 'title':u'注册'}, context_instance=RequestContext(request)) elif request.method == 'POST': username = request.POST['username'] try: alphanumeric(username) except: return error(request, '用户名只允许英文字母、数字及下划线"_"(QQ登陆用户不受此限制)') try: User.objects.get(username=username) except: pass else: return error(request, '用户已存在') password = request.POST['password'] email = request.POST['email'] user = User.objects.create_user(username, email, password) user = authenticate(username=username, password=password) login(request, user) p = profile() p.user = user p.save() return HttpResponseRedirect(reverse('index'))
def reg(request): if request.method == 'GET': return render_to_response('reg.html', {'conf': conf, 'title': u'注册'}, context_instance=RequestContext(request)) elif request.method == 'POST': username = request.POST['username'] email = request.POST['email'] password = request.POST['password'] password2 = request.POST['password2'] try: alphanumeric(username) except: messages.add_message(request, messages.WARNING, u'用户名只允许英文字母、数字及下划线"_"(QQ登陆用户不受此限制)') return HttpResponseRedirect(reverse('reg')) if User.objects.filter(username=username).exists(): messages.add_message(request, messages.WARNING, u'用户已存在') return HttpResponseRedirect(reverse('reg')) # TODO: 密码强度测试 if password != password2 or password == '' or password2 == '': messages.add_message(request, messages.WARNING, u'两次输入的密码不一致或者为空') return HttpResponseRedirect(reverse('reg')) user = User.objects.create_user(username, email, password) user = authenticate(username=username, password=password) login(request, user) p = profile() p.user = user p.save() return HttpResponseRedirect(reverse('index'))
def reg(request): if request.method == 'GET': return render_to_response('account/reg.html', {'conf': conf, 'title': _('register')}, context_instance=RequestContext(request)) elif request.method == 'POST': username = request.POST['username'] email = request.POST['email'] password = request.POST['password'] password2 = request.POST['password2'] try: alphanumeric(username) except: messages.add_message(request, messages.WARNING,_('username can only contain letters digits and underscore')) return HttpResponseRedirect(reverse('reg')) if User.objects.filter(username=username).exists(): messages.add_message(request, messages.WARNING, _('username already exists')) return HttpResponseRedirect(reverse('reg')) if password != password2 or password == '' or password2 == '': messages.add_message(request, messages.WARNING, _('passwords don\'t match, or are blank')) return HttpResponseRedirect(reverse('reg')) user = User.objects.create_user(username, email, password) user = authenticate(username=username, password=password) login(request, user) p = profile() p.user = user p.save() return HttpResponseRedirect(reverse('index'))
def user_info(request, user_id): u = User.objects.get(id=user_id) if not profile.objects.filter(user_id=u.id).exists(): p = profile() p.user = u p.save() return render_to_response('user-info.html', {'request': request, 'title': u'用户信息', 'user': u, 'conf': conf, 'topics': u.profile.latest_activity()['topic'], 'post_list_title': u'用户%s的最新主题' % (u.profile.username())})
def user_info(request, user_id): u = User.objects.get(id=user_id) if not profile.objects.filter(user_id=u.id).exists(): p = profile() p.user = u p.save() return render_to_response('account/user-info.html', {'request': request, 'title': _('user info'), 'user': u, 'conf': conf, 'topics': u.profile.latest_activity()['topic'], 'post_list_title': _('%s\'s topics') % (u.profile.username())})
def user_signup(request): if request.method == 'GET': return render_to_response('account/signup.html', {'title': u'学生注册--工大CSDN俱乐部'}, context_instance=RequestContext(request)) elif request.method == 'POST': username = request.POST['username'] number = request.POST['number'] password1 = request.POST['password1'] password2 = request.POST['password2'] email = request.POST['email'] if len(username) < 6: messages.add_message(request, messages.WARNING, _(u'用户名长度不能少于6位,请重新输入')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if not len(number) == 10: messages.add_message(request, messages.WARNING, _(u'输入的学号有误,请重新输入')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if len(password1) <= 5: messages.add_message(request, messages.WARNING, _(u'密码过短,至少6位')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if profile.objects.filter(number=number).exists(): messages.add_message(request, messages.WARNING, _(u'输入的学号已被注册,请重新输入或联系作者')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if password1 == '123456': messages.add_message(request, messages.WARNING, _(u'输入的密码过于简单,请重新输入')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if password1 == password2: user = User.objects.create_user(username=username, password=password1, email=email) u = authenticate(username=username, password=password1) messages.add_message(request, messages.WARNING, _(u'注册成功')) else: messages.add_message(request, messages.WARNING, _(u'密码不一致,请重新输入')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) login(request, u) p = profile() p.number = number p.username = username p.user = user p.save() return HttpResponseRedirect(reverse('index'))
def user_signup(request): if request.method == 'GET': return render_to_response('account/signup.html', {'title': u'学生注册--工大CSDN俱乐部'}, context_instance=RequestContext(request)) elif request.method == 'POST': username = request.POST['username'] number = request.POST['number'] password1 = request.POST['password1'] password2 = request.POST['password2'] email = request.POST['email'] if len(username) < 6: messages.add_message(request, messages.WARNING, _(u'用户名长度不能少于6位,请重新输入')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if not len(number) == 10: messages.add_message(request, messages.WARNING, _(u'输入的学号有误,请重新输入')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if len(password1) <= 5 : messages.add_message(request, messages.WARNING, _(u'密码过短,至少6位')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if profile.objects.filter(number = number).exists(): messages.add_message(request, messages.WARNING, _(u'输入的学号已被注册,请重新输入或联系作者')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if password1 == '123456': messages.add_message(request, messages.WARNING, _(u'输入的密码过于简单,请重新输入')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) if password1 == password2: user = User.objects.create_user(username=username, password=password1,email=email) u = authenticate(username=username, password=password1) messages.add_message(request, messages.WARNING, _(u'注册成功')) else: messages.add_message(request, messages.WARNING, _(u'密码不一致,请重新输入')) return render_to_response('account/signup.html', context_instance=RequestContext(request)) login(request, u) p = profile() p.number = number p.username = username p.user = user p.save() return HttpResponseRedirect(reverse('index'))
def user_info(request, user_id): u = User.objects.get(id=user_id) if not profile.objects.filter(user_id=u.id).exists(): p = profile() p.user = u p.save() return render_to_response( "account/user-info.html", { "request": request, "title": _("user info"), "user": u, "conf": conf, "topics": u.profile.latest_activity()["topic"], "post_list_title": _("%s's topics") % (u.profile.username()), }, )
def reg(request): if request.method == 'GET': return render_to_response('account/reg.html', { 'conf': conf, 'title': "注册" }, context_instance=RequestContext(request)) elif request.method == 'POST': username = request.POST['username'] email = request.POST['email'] password = request.POST['password'] password2 = request.POST['password2'] # try: # alphanumeric(username) # except: # messages.add_message(request, messages.WARNING,_('username can only contain letters digits and underscore')) # return HttpResponseRedirect(reverse('reg')) pattern = re.compile(u"^[_a-zA-Z0-9\u4e00-\u9fa5]+$") match = pattern.match(username) if not match: messages.add_message(request, messages.WARNING, "用户名只能包含中文、字母和数字") return HttpResponseRedirect(reverse('reg')) if User.objects.filter(username=username).exists(): messages.add_message(request, messages.WARNING, "用户名已存在") return HttpResponseRedirect(reverse('reg')) if User.objects.filter(email=email).exists(): messages.add_message(request, messages.WARNING, "该邮箱已被注册") return HttpResponseRedirect(reverse('reg')) if password != password2 or password == '' or password2 == '': messages.add_message(request, messages.WARNING, "密码不匹配或为空") return HttpResponseRedirect(reverse('reg')) user = User.objects.create_user(username, email, password) user = authenticate(username=username, password=password) login(request, user) p = profile() p.user = user p.save() return HttpResponseRedirect(reverse('index'))
def reg(request): if request.method == 'GET': return render_to_response('reg.html', { 'conf': conf, 'title': u'注册' }, context_instance=RequestContext(request)) elif request.method == 'POST': username = request.POST['username'] email = request.POST['email'] password = request.POST['password'] password2 = request.POST['password2'] try: alphanumeric(username) except: messages.add_message(request, messages.WARNING, u'用户名只允许英文字母、数字及下划线"_"(QQ登陆用户不受此限制)') return HttpResponseRedirect(reverse('reg')) if User.objects.filter(username=username).exists(): messages.add_message(request, messages.WARNING, u'用户已存在') return HttpResponseRedirect(reverse('reg')) # TODO: 密码强度测试 if password != password2 or password == '' or password2 == '': messages.add_message(request, messages.WARNING, u'两次输入的密码不一致或者为空') return HttpResponseRedirect(reverse('reg')) user = User.objects.create_user(username, email, password) user = authenticate(username=username, password=password) login(request, user) p = profile() p.user = user p.save() return HttpResponseRedirect(reverse('index'))
def qq_oauth(request): if request.method == 'GET': if (not request.GET['code']) or (request.GET['state'] != 'fairybbs'): return error(request, '请求错误') code = request.GET['code'] url = 'https://graph.qq.com/oauth2.0/token' data = { 'grant_type': 'authorization_code', 'client_id': '', 'client_secret': '', 'code': code, 'redirect_uri': '' } req = urllib2.Request(url, urllib.urlencode(data)) res = urllib2.urlopen(req) try: access_token = re.findall(r'access_token=(.*?)&', res.read())[0] except: return error(request, u'抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试\n') url_openid = 'https://graph.qq.com/oauth2.0/me' data_openid = {'access_token': access_token} req_openid = urllib2.Request(url_openid, urllib.urlencode(data_openid)) res_openid = urllib2.urlopen(req_openid) try: JSON_openid = json.loads(res_openid.read()[10:-3]) except: return error(request, u'抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试') openid = JSON_openid['openid'] try: u = social.objects.get(openid=openid).user except: url_info = 'https://graph.qq.com/user/get_user_info' data_info = { 'oauth_consumer_key': '', 'access_token': access_token, 'openid': openid } req_info = urllib2.Request(url_info, urllib.urlencode(data_info)) res_info = urllib2.urlopen(req_info) JSON_info = json.loads(res_info.read()) username = JSON_info['nickname'] nickname = username if JSON_info['figureurl_qq_2']: avatar = JSON_info['figureurl_qq_2'] else: avatar = JSON_info['figureurl_2'] password = User.objects.make_random_password() try: u = User.objects.get(username=username) except: pass else: username = GenerateUsername(nickname) u = User(username=username) u.set_password(password) u.save() p = profile( user=u, #avatar=avatar, nickname=nickname, avatar_url=avatar, use_gravatar=False) p.save() s = social( user=u, access_token=access_token, openid=openid, avatar=avatar, ) s.save() user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: auth.login(request, user) return HttpResponseRedirect(reverse('index')) #login succeed else: u.social.access_token = access_token u.social.save() u.backend = 'django.contrib.auth.backends.ModelBackend' if u is not None and u.is_active: auth.login(request, u) return HttpResponseRedirect(reverse('index')) #login succeed else: return error(request, u'授权失败,请重试')
def qq_oauth(request): if request.method == "GET": if (not request.GET["code"]) or (request.GET["state"] != "fairybbs"): return error(request, "请求错误") code = request.GET["code"] url = "https://graph.qq.com/oauth2.0/token" data = { "grant_type": "authorization_code", "client_id": "", "client_secret": "", "code": code, "redirect_uri": "", } req = urllib2.Request(url, urllib.urlencode(data)) res = urllib2.urlopen(req) try: access_token = re.findall(r"access_token=(.*?)&", res.read())[0] except: return error(request, u"抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试\n") url_openid = "https://graph.qq.com/oauth2.0/me" data_openid = {"access_token": access_token} req_openid = urllib2.Request(url_openid, urllib.urlencode(data_openid)) res_openid = urllib2.urlopen(req_openid) try: JSON_openid = json.loads(res_openid.read()[10:-3]) except: return error(request, u"抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试") openid = JSON_openid["openid"] try: u = social.objects.get(openid=openid).user except: url_info = "https://graph.qq.com/user/get_user_info" data_info = {"oauth_consumer_key": "", "access_token": access_token, "openid": openid} req_info = urllib2.Request(url_info, urllib.urlencode(data_info)) res_info = urllib2.urlopen(req_info) JSON_info = json.loads(res_info.read()) username = JSON_info["nickname"] nickname = username if JSON_info["figureurl_qq_2"]: avatar = JSON_info["figureurl_qq_2"] else: avatar = JSON_info["figureurl_2"] password = User.objects.make_random_password() try: u = User.objects.get(username=username) except: pass else: username = GenerateUsername(nickname) u = User(username=username) u.set_password(password) u.save() p = profile( user=u, # avatar=avatar, nickname=nickname, avatar_url=avatar, use_gravatar=False, ) p.save() s = social(user=u, access_token=access_token, openid=openid, avatar=avatar) s.save() user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: auth.login(request, user) return HttpResponseRedirect(reverse("index")) # login succeed else: u.social.access_token = access_token u.social.save() u.backend = "django.contrib.auth.backends.ModelBackend" if u is not None and u.is_active: auth.login(request, u) return HttpResponseRedirect(reverse("index")) # login succeed else: return error(request, u"授权失败,请重试")
def qq_oauth(request): if request.method == 'GET': if (not request.GET['code']) or (request.GET['state'] != 'fairybbs'): return error(request, '请求错误') code = request.GET['code'] url = 'https://graph.qq.com/oauth2.0/token' data = {'grant_type': 'authorization_code', 'client_id': '', 'client_secret': '', 'code': code, 'redirect_uri': ''} req = urllib2.Request(url, urllib.urlencode(data)) res = urllib2.urlopen(req) try: access_token = re.findall(r'access_token=(.*?)&', res.read())[0] except: return error(request, u'抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试\n') url_openid = 'https://graph.qq.com/oauth2.0/me' data_openid = {'access_token': access_token} req_openid = urllib2.Request(url_openid, urllib.urlencode(data_openid)) res_openid = urllib2.urlopen(req_openid) try: JSON_openid = json.loads(res_openid.read()[10:-3]) except: return error(request, u'抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试') openid = JSON_openid['openid'] try: u = social.objects.get(openid=openid).user except: url_info = 'https://graph.qq.com/user/get_user_info' data_info = {'oauth_consumer_key': '', 'access_token': access_token, 'openid': openid} req_info = urllib2.Request(url_info, urllib.urlencode(data_info)) res_info = urllib2.urlopen(req_info) JSON_info = json.loads(res_info.read()) username = JSON_info['nickname'] nickname = username if JSON_info['figureurl_qq_2']: avatar = JSON_info['figureurl_qq_2'] else: avatar = JSON_info['figureurl_2'] password = User.objects.make_random_password() try: u = User.objects.get(username=username) except: pass else: username = GenerateUsername(nickname) u = User(username=username) u.set_password(password) u.save() p = profile(user=u, #avatar=avatar, nickname=nickname, avatar_url=avatar, use_gravatar=False) p.save() s = social(user=u, access_token=access_token, openid=openid, avatar=avatar, ) s.save() user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: auth.login(request, user) return HttpResponseRedirect(reverse('index')) #login succeed else: u.social.access_token = access_token u.social.save() u.backend = 'django.contrib.auth.backends.ModelBackend' if u is not None and u.is_active: auth.login(request, u) return HttpResponseRedirect(reverse('index')) #login succeed else: return error(request, u'授权失败,请重试')