コード例 #1
0
ファイル: views.py プロジェクト: saiwaiyanyu/FairyBBS
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"))
コード例 #2
0
ファイル: views.py プロジェクト: Hlymmy/dlpucsdn
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))
コード例 #3
0
ファイル: views.py プロジェクト: motea/FairyBBS
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'))
コード例 #4
0
ファイル: views.py プロジェクト: ClayMoreBoy/FairyBBS
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'))
コード例 #5
0
ファイル: views.py プロジェクト: namkim/wemake
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'))
コード例 #6
0
ファイル: views.py プロジェクト: yuzeshan/FairyBBS
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'))
コード例 #7
0
ファイル: views.py プロジェクト: ClayMoreBoy/FairyBBS
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())})
コード例 #8
0
ファイル: views.py プロジェクト: yuzeshan/FairyBBS
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())})
コード例 #9
0
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'))
コード例 #10
0
ファイル: views.py プロジェクト: Hlymmy/dlpucsdn
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'))
コード例 #11
0
ファイル: views.py プロジェクト: saiwaiyanyu/FairyBBS
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()),
        },
    )
コード例 #12
0
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'))
コード例 #13
0
ファイル: views.py プロジェクト: hizyn/FairyBBS
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'))
コード例 #14
0
ファイル: views.py プロジェクト: hizyn/FairyBBS
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'授权失败,请重试')
コード例 #15
0
ファイル: views.py プロジェクト: saiwaiyanyu/FairyBBS
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"授权失败,请重试")
コード例 #16
0
ファイル: views.py プロジェクト: ClayMoreBoy/FairyBBS
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'授权失败,请重试')