コード例 #1
0
ファイル: views.py プロジェクト: mamachengcheng/CatReating
    def get(self, request):
        phone = request.GET.get("phone")
        send_captcha = request.GET.get("captcha")
        pageSate = int(request.GET.get("pageState"))

        captcha = Captcha(request)

        if not captcha.check(send_captcha):
            message = "验证码错误"
            print message
            return shortcuts.error_response(message)
        else:
            # 号码存在
            if CheckPhone(phone):
                # 页面为找回
                if pageSate == 1:
                    return SendMessageBefore(phone, request)
                # 页面为注册
                else:
                    message = "手机号已注册"
                    print message
                    return shortcuts.error_response(message)
            # 号码不存在
            else:
                # 页面为注册
                if pageSate == 0:
                    return SendMessageBefore(phone, request)
                # 页面为找回0
                else:
                    message = "用户不存在"
                    return shortcuts.error_response(message)
コード例 #2
0
 def post(self, request):
     if request.user.is_authenticated:
         return self.error(
             "You have already logged in, are you kidding me? ")
     data = request.data
     captcha = Captcha(request)
     if not captcha.check(data["captcha"]):
         return self.error("Invalid captcha")
     try:
         user = User.objects.get(email__iexact=data["email"])
     except User.DoesNotExist:
         return self.error("User does not exist")
     if user.reset_password_token_expire_time and 0 < int(
         (user.reset_password_token_expire_time -
          now()).total_seconds()) < 20 * 60:
         return self.error(
             "You can only reset password once per 20 minutes")
     user.reset_password_token = rand_str()
     user.reset_password_token_expire_time = now() + timedelta(minutes=20)
     user.save()
     render_data = {
         "username":
         user.username,
         "website_name":
         SysOptions.website_name,
         "link":
         f"{SysOptions.website_base_url}/reset-password/{user.reset_password_token}"
     }
     email_html = render_to_string("reset_password_email.html", render_data)
     send_email_async.send(from_name=SysOptions.website_name_shortcut,
                           to_email=user.email,
                           to_name=user.username,
                           subject=f"Reset your password",
                           content=email_html)
     return self.success("Succeeded")
コード例 #3
0
ファイル: views.py プロジェクト: adamwen829/OnlineJudge
    def post(self, request):
        """
        提交请求重置密码
        ---
        request_serializer: ApplyResetPasswordSerializer
        """
        serializer = ApplyResetPasswordSerializer(data=request.data)
        if serializer.is_valid():
            data = serializer.data
            captcha = Captcha(request)
            if not captcha.check(data["captcha"]):
                return error_response(u"验证码错误")
            try:
                user = User.objects.get(email=data["email"])
            except User.DoesNotExist:
                return error_response(u"用户不存在")
            if user.reset_password_token_create_time and (now() - user.reset_password_token_create_time).total_seconds() < 20 * 60:
                return error_response(u"20分钟内只能找回一次密码")
            user.reset_password_token = rand_str()
            user.reset_password_token_create_time = now()
            user.save()
            email_template = codecs.open(settings.TEMPLATES[0]["DIRS"][0] + "utils/reset_password_email.html", "r", "utf-8").read()

            email_template = email_template.replace("{{ username }}", user.username).\
                replace("{{ website_name }}", settings.WEBSITE_INFO["website_name"]).\
                replace("{{ link }}", request.scheme + "://" + request.META['HTTP_HOST'] + "/reset_password/t/" + user.reset_password_token)

            send_email(settings.WEBSITE_INFO["website_name"],
                       user.email,
                       user.username,
                       settings.WEBSITE_INFO["website_name"] + u" 登录信息找回邮件",
                       email_template)
            return success_response(u"邮件发送成功,请前往您的邮箱查收")
        else:
            return serializer_invalid_response(serializer)
コード例 #4
0
ファイル: oj.py プロジェクト: oneofsunshine/OUCOJ
    def post(self, request):
        """
        User register api
        """
        if not SysOptions.allow_register:
            return self.error("Register function has been disabled by admin")

        data = request.data
        data["username"] = data["username"].lower()
        data["email"] = data["email"].lower()
        if not data["sno"].isdigit():
            return self.error("SNo be digital")
        captcha = Captcha(request)
        if not captcha.check(data["captcha"]):
            return self.error("Invalid captcha")
        if User.objects.filter(username=data["username"]).exists():
            return self.error("Username already exists")
        if User.objects.filter(email=data["email"]).exists():
            return self.error("Email already exists")
        if User.objects.filter(sno=data["sno"]).exists():
            return self.error("Student ID already exists")
        user = User.objects.create(username=data["username"],
                                   email=data["email"],
                                   sno=data["sno"])
        user.set_password(data["password"])
        user.save()
        UserProfile.objects.create(user=user)
        return self.success("Succeeded")
コード例 #5
0
ファイル: views.py プロジェクト: veritastry/ebuy_demo
 def post(self, request):
     serializer = UserRegisterSerializer(data=request.POST)
     if serializer.is_valid():
         data = serializer.data
         captcha = Captcha(request)
         if not captcha.check(data["captcha"]):
             return error_response(u"验证码错误")
         try:
             User.objects.get(username=data["username"])
             return error_response(u"用户名已存在")
         except User.DoesNotExist:
             pass
         try:
             User.objects.get(email=data["email"])
             return error_response(u"该邮箱已被注册,请换其他邮箱进行注册")
         except User.DoesNotExist:
             user = User.objects.create(username=data["username"],
                                        email=data["email"])
             user.set_password(data["password"])
             user.save()
             cart = Cart.objects.create()  #初始化购物车
             UserProfile.objects.create(user=user, cart=cart)
             return success_response(u"注册成功!")
     else:
         return serializer_invalid_response(serializer)
コード例 #6
0
ファイル: oj.py プロジェクト: skkuse/2019spring_01class_team4
    def post(self, request):
        """
        User register api
        """
        if not SysOptions.allow_register:
            return self.error("Register function has been disabled by admin")

        data = request.data
        data["username"] = data["username"].lower()
        data["bj_username"] = data["bj_username"].strip()
        data["hr_username"] = data["hr_username"].strip()
        data["email"] = data["email"].lower()
        captcha = Captcha(request)
        if not captcha.check(data["captcha"]):
            return self.error("Invalid captcha")

        # 백준 체크
        response = requests.get('https://www.acmicpc.net/user/' +
                                data["bj_username"])
        if response.status_code != 200:
            return self.error("Baekjoon username not found")

        if User.objects.filter(username=data["username"]).exists():
            return self.error("Username already exists")
        if User.objects.filter(email=data["email"]).exists():
            return self.error("Email already exists")

        user = User.objects.create(username=data["username"],
                                   email=data["email"])
        user.set_password(data["password"])
        user.save()
        UserProfile.objects.create(user=user,
                                   bj_username=data["bj_username"],
                                   hr_username=data["hr_username"])
        return self.success("Succeeded")
コード例 #7
0
ファイル: oj.py プロジェクト: lvku/OnlineJudge
    def post(self, request):
        """
        User register api
        """
        if not SysOptions.allow_register:
            return self.error("Register function has been disabled by admin")

        data = request.data
        data["username"] = data["username"].lower()
        data["email"] = data["email"].lower()
        is_vip = False
        if 'vipcode' in data and data['vipcode'] == '4088760021':
            is_vip = True
        captcha = Captcha(request)
        if not captcha.check(data["captcha"]):
            return self.error("Invalid captcha")
        if User.objects.filter(username=data["username"]).exists():
            return self.error("Username already exists")
        if User.objects.filter(email=data["email"]).exists():
            return self.error("Email already exists")
        user = User.objects.create(username=data["username"],
                                   email=data["email"],
                                   is_vip=is_vip)
        user.set_password(data["password"])
        user.save()
        UserProfile.objects.create(user=user)
        return self.success("Succeeded")
コード例 #8
0
    def post(self, request):

        data = request.data
        # 判断验证码是否正确
        captcha = Captcha(request)
        if not captcha.check(data.get('captcha')):
            return self.error("Invalid captcha")

        # 判断用户名和邮箱是否存在
        # 用户名和邮箱都保存小写
        data['username'] = data['username'].lower()
        data['email'] = request.data['email'].lower()
        if User.objects.filter(username=data.get('username')).exists():
            return self.error(msg="Username already exists")
        if User.objects.filter(username=data.get('email')).exists():
            return self.error(msg="Email already exists")

        # 创建用户

        user = User.objects.create(username=data['username'],
                                   email=data['email'])
        user.set_password(data['password'])
        user.save()

        # UserProfile.objects.create(user=user)

        res = self.success("Succeeded")
        return res
コード例 #9
0
ファイル: oj.py プロジェクト: Gumbeat/Olymp
 def post(self, request):
     if request.user.is_authenticated():
         return self.error("Вы уже вошли в систему, у вас всё норм? ")
     data = request.data
     captcha = Captcha(request)
     if not captcha.check(data["captcha"]):
         return self.error("Неверная капча")
     try:
         user = User.objects.get(email__iexact=data["email"])
     except User.DoesNotExist:
         return self.error("Пользователь не существует")
     if user.reset_password_token_expire_time and 0 < int(
         (user.reset_password_token_expire_time -
          now()).total_seconds()) < 20 * 60:
         return self.error(
             "Вы можете сбросить пароль не больше раза за 20 минут")
     user.reset_password_token = rand_str()
     user.reset_password_token_expire_time = now() + timedelta(minutes=20)
     user.save()
     render_data = {
         "username":
         user.username,
         "website_name":
         SysOptions.website_name,
         "link":
         f"{SysOptions.website_base_url}/reset-password/{user.reset_password_token}"
     }
     email_html = render_to_string("reset_password_email.html", render_data)
     send_email_async.delay(from_name=SysOptions.website_name_shortcut,
                            to_email=user.email,
                            to_name=user.username,
                            subject=f"Reset your password",
                            content=email_html)
     return self.success("Успешно")
コード例 #10
0
    def post(self, request):
        """
        提交请求重置密码
        ---
        request_serializer: ApplyResetPasswordSerializer
        """
        serializer = ApplyResetPasswordSerializer(data=request.data)
        if serializer.is_valid():
            data = serializer.data
            captcha = Captcha(request)
            if not captcha.check(data["captcha"]):
                return error_response(u"验证码错误")
            try:
                user = User.objects.get(username=data["username"], email=data["email"])
            except User.DoesNotExist:
                return error_response(u"用户不存在")
            if user.reset_password_token_create_time and (now() - user.reset_password_token_create_time).total_seconds() < 20 * 60:
                return error_response(u"20分钟内只能找回一次密码")
            user.reset_password_token = rand_str()
            user.reset_password_token_create_time = now()
            user.save()
            email_template = codecs.open(settings.TEMPLATES[0]["DIRS"][0] + "utils/reset_password_email.html", "r", "utf-8").read()

            email_template = email_template.replace("{{ username }}", user.username).\
                replace("{{ website_name }}", settings.WEBSITE_INFO["website_name"]).\
                replace("{{ link }}", request.scheme + "://" + request.META['HTTP_HOST'] + "/reset_password/?token=" + user.reset_password_token)

            send_email(settings.WEBSITE_INFO["website_name"],
                       user.email,
                       user.username,
                       settings.WEBSITE_INFO["website_name"] + u" 密码找回邮件",
                       email_template)
            return success_response(u"邮件发送成功")
        else:
            return serializer_invalid_response(serializer)
コード例 #11
0
ファイル: views.py プロジェクト: mwangzhy/OnlineJudge
 def post(self, request):
     """
     用户注册json api接口
     ---
     request_serializer: UserRegisterSerializer
     """
     serializer = UserRegisterSerializer(data=request.data)
     if serializer.is_valid():
         data = serializer.data
         captcha = Captcha(request)
         if not captcha.check(data["captcha"]):
             return error_response(u"验证码错误")
         try:
             User.objects.get(username=data["username"])
             return error_response(u"用户名已存在")
         except User.DoesNotExist:
             pass
         try:
             User.objects.get(email=data["email"])
             return error_response(u"该邮箱已被注册,请换其他邮箱进行注册")
         # 兼容部分老数据,有邮箱重复的
         except MultipleObjectsReturned:
             return error_response(u"该邮箱已被注册,请换其他邮箱进行注册")
         except User.DoesNotExist:
             user = User.objects.create(username=data["username"],
                                        real_name=data["real_name"],
                                        email=data["email"])
             user.set_password(data["password"])
             user.save()
             UserProfile.objects.create(user=user,
                                        school=data["school"],
                                        student_id=data["student_id"])
             return success_response(u"注册成功!")
     else:
         return serializer_invalid_response(serializer)
コード例 #12
0
ファイル: views.py プロジェクト: eduStack/OnlineJudge
    def post(self, request):
        """
        提交请求重置密码
        ---
        request_serializer: ApplyResetPasswordSerializer
        """
        serializer = ApplyResetPasswordSerializer(data=request.data)
        if serializer.is_valid():
            data = serializer.data
            captcha = Captcha(request)
            if not captcha.check(data["captcha"]):
                return error_response(u"验证码错误")
            try:
                user = User.objects.get(username=data["username"], email=data["email"])
            except User.DoesNotExist:
                return error_response(u"用户不存在")
            user.reset_password_token = rand_str()
            user.save()
            email_template = codecs.open(settings.TEMPLATES[0]["DIRS"][0] + "utils/reset_password_email.html", "r", "utf-8").read()

            email_template = email_template.replace("{{ username }}", user.username).replace("{{ link }}", request.scheme + "://" + request.META['HTTP_HOST'] + "/reset_password/?token=" + user.reset_password_token)

            send_email(user.email, user.username, u"qduoj 密码找回邮件", email_template)
            return success_response(u"邮件发生成功")
        else:
            return serializer_invalid_response(serializer)
コード例 #13
0
ファイル: oj.py プロジェクト: joeyac/OnlineJudge
 def post(self, request):
     if request.user.is_authenticated():
         return self.error("You have already logged in, are you kidding me? ")
     data = request.data
     captcha = Captcha(request)
     if not captcha.check(data["captcha"]):
         return self.error("Invalid captcha")
     try:
         user = User.objects.get(email__iexact=data["email"])
     except User.DoesNotExist:
         return self.error("User does not exist")
     if user.reset_password_token_expire_time and 0 < int(
             (user.reset_password_token_expire_time - now()).total_seconds()) < 20 * 60:
         return self.error("You can only reset password once per 20 minutes")
     user.reset_password_token = rand_str()
     user.reset_password_token_expire_time = now() + timedelta(minutes=20)
     user.save()
     render_data = {
         "username": user.username,
         "website_name": SysOptions.website_name,
         "link": f"{SysOptions.website_base_url}/reset-password/{user.reset_password_token}"
     }
     email_html = render_to_string("reset_password_email.html", render_data)
     send_email_async.delay(from_name=SysOptions.website_name_shortcut,
                            to_email=user.email,
                            to_name=user.username,
                            subject=f"Reset your password",
                            content=email_html)
     return self.success("Succeeded")
コード例 #14
0
ファイル: views.py プロジェクト: hujingguang/OnlineJudge
 def post(self, request):
     """
     用户注册json api接口
     ---
     request_serializer: UserRegisterSerializer
     """
     serializer = UserRegisterSerializer(data=request.data)
     if serializer.is_valid():
         data = serializer.data
         captcha = Captcha(request)
         if not captcha.check(data["captcha"]):
             return error_response(u"验证码错误")
         try:
             User.objects.get(username=data["username"])
             return error_response(u"用户名已存在")
         except User.DoesNotExist:
             pass
         try:
             User.objects.get(email=data["email"])
             return error_response(u"该邮箱已被注册,请换其他邮箱进行注册")
         except User.DoesNotExist:
             user = User.objects.create(username=data["username"], real_name=data["real_name"],
                                        email=data["email"])
             user.set_password(data["password"])
             user.save()
             return success_response(u"注册成功!")
     else:
         return serializer_invalid_response(serializer)
コード例 #15
0
ファイル: views.py プロジェクト: veritastry/ebuy_demo
    def post(self, request):
        serializer = ApplyResetPasswordSerializer(data=request.data)
        if serializer.is_valid():
            data = serializer.data
            captcha = Captcha(request)
            if not captcha.check(data["captcha"]):
                return error_response(u"验证码错误")
            try:
                user = User.objects.get(email=data["email"])
            except User.DoesNotExist:
                return error_response(u"用户不存在")
            rand_str_ = rand_str()
            user.reset_password_token = rand_str_
            user.reset_password_token_create_time = timezone.now()
            user.save()
            email_template = codecs.open(
                settings.TEMPLATES[0]["DIRS"][0] +
                "/account/reset_password_email.html", "r", "utf-8").read()

            email_template = email_template.replace("{{ username }}", user.username). \
                replace("{{ website_name }}", settings.WEBSITE_INFO["website_name"]). \
                replace("{{ link }}", settings.WEBSITE_INFO["url"] + "/apply_reset_password/" +
                        user.reset_password_token)

            send_email(settings.WEBSITE_INFO["website_name"], user.email,
                       user.username,
                       settings.WEBSITE_INFO["website_name"] + u" 登录信息找回邮件",
                       email_template)
            return success_response(u"邮件发送成功,请前往您的邮箱查收")
        else:
            return serializer_invalid_response(serializer)
コード例 #16
0
ファイル: views.py プロジェクト: eduStack/OnlineJudge
    def post(self, request):
        """
        用户登录json api接口
        ---
        request_serializer: UserLoginSerializer
        """
        serializer = UserLoginSerializer(data=request.data)
        if serializer.is_valid():
            data = serializer.data

            if "captcha" not in data:
                return error_response(u"请填写验证码!")
            captcha = Captcha(request)
            if not captcha.check(data["captcha"]):
                return error_response(u"验证码错误")

            user = auth.authenticate(username=data["username"], password=data["password"])
            # 用户名或密码错误的话 返回None
            if user:
                auth.login(request, user)
                return success_response(u"登录成功")
            else:
                return error_response(u"用户名或密码错误")
        else:
            return serializer_invalid_response(serializer)
コード例 #17
0
def create_app():
    app = Flask(__name__)
    app.config.from_object(config)
    app.register_blueprint(cms_bp)
    app.register_blueprint(front_bp)
    app.register_blueprint(common_bp)
    app.register_blueprint(ueditor_bp)
    mail.init_app(app)
    db.init_app(app)
    CSRFProtect(app)
    Captcha.gene_graph_captcha()
    return app
コード例 #18
0
 def post(self, request):
     data = request.data
     captcha = Captcha(request)
     if not captcha.check(data["captcha"]):
         return self.error("Invalid captcha")
     try:
         user = User.objects.get(reset_password_token=data["token"])
     except User.DoesNotExist:
         return self.error("Token does not exist")
     if user.reset_password_token_expire_time < now():
         return self.error("Token has expired")
     user.reset_password_token = None
     user.two_factor_auth = False
     user.set_password(data["password"])
     user.save()
     return self.success("Succeeded")
コード例 #19
0
ファイル: oj.py プロジェクト: joeyac/OnlineJudge
 def post(self, request):
     data = request.data
     captcha = Captcha(request)
     if not captcha.check(data["captcha"]):
         return self.error("Invalid captcha")
     try:
         user = User.objects.get(reset_password_token=data["token"])
     except User.DoesNotExist:
         return self.error("Token does not exist")
     if user.reset_password_token_expire_time < now():
         return self.error("Token has expired")
     user.reset_password_token = None
     user.two_factor_auth = False
     user.set_password(data["password"])
     user.save()
     return self.success("Succeeded")
コード例 #20
0
def sms_captcha():
    '''
    实现:
    1. telephone
    2. timestamp
    3. md5(ts+telephone+salt)
    :return:
    '''
    # 1. 申明验证表单验证对象
    form = SMSCaptchaForm(request.form)
    # 2. 通过验证
    if form.validate():
        # 2.1 拿到手机号
        telephone = form.telephone.data
        # 2.2 生成验证码
        captcha = Captcha.gene_text(number=4)
        print('发送的短信验证码是:', captcha)
        # 2.3 发送验证码,成功时:
        if alidayu.send_sms(telephone, code=captcha):

            # ⚠️:这里将验证码保存在缓存服务器中
            zlcache.set(telephone, captcha, timeout=60)

            return restful.success()
        # 发送验证码,失败时:
        else:
            return restful.params_error()
    else:
        return restful.params_error(message='参数错误!')
コード例 #21
0
ファイル: oj.py プロジェクト: Gumbeat/Olymp
 def post(self, request):
     data = request.data
     captcha = Captcha(request)
     if not captcha.check(data["captcha"]):
         return self.error("Неверная капча")
     try:
         user = User.objects.get(reset_password_token=data["token"])
     except User.DoesNotExist:
         return self.error("Токен не существует")
     if user.reset_password_token_expire_time < now():
         return self.error("Токен истёк")
     user.reset_password_token = None
     user.two_factor_auth = False
     user.set_password(data["password"])
     user.save()
     return self.success("Успешно")
コード例 #22
0
def house_invite(request, pk):
    house = get_object_or_404(House, pk=pk)
    if request.user.id != house.user.id:
        raise Http404
    captcha = Captcha()
    if request.method == 'POST':
        if 'email' not in request.POST:
            return render(
                request, 'houses/house_invite.html', {
                    'house': house,
                    'captcha': captcha,
                    'error': 'Please enter a valid email address'
                })
        else:
            invitation = Invitation()
            invitation.house = house
            invitation.sender = request.user
            invitation.target = request.POST['email']
            invitation.save()
            send_invite_email(request.POST['email'], invitation)

        return redirect('house_detail', pk=pk)
    return render(request, 'houses/house_invite.html', {
        'house': house,
        'captcha': captcha
    })
コード例 #23
0
def sms_captcha():
    form = SMSCaptchaForm(request.form)
    if form.validate():
        telephone = form.telephone.data
        code = Captcha.gene_text()
        cache.set(key=telephone, value=code)
        send_sms_captcha(telephone=telephone, message=code)
        return restful.success(message='短信发送成功')  #Celery 异步发送
コード例 #24
0
ファイル: views.py プロジェクト: shaoeric/flask
def graph_captcha():
    text, image = Captcha.gene_graph_captcha()
    out = BytesIO()
    image.save(out, 'png')
    out.seek(0)
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    return resp
コード例 #25
0
    def post(self, request):
        """
        User register api
        """
        if not SysOptions.allow_register:
            return self.error("Register function has been disabled by admin")

        data = request.data
        data["username"] = data["username"].lower()
        data["email"] = data["email"].lower()
        captcha = Captcha(request)
        if not captcha.check(data["captcha"]):
            return self.error("Invalid captcha")
        if User.objects.filter(username=data["username"]).exists():
            return self.error("Username already exists")
        if not data["email"].endswith("@shanghaitech.edu.cn"):
            return self.error("Email not in shanghaitech")
        if User.objects.filter(email=data["email"]).exists():
            return self.error("Email already exists")
        user = User.objects.create(username=data["username"],
                                   email=data["email"])
        data["password"] = rand_str()
        user.set_password(data["password"])
        user.save()
        UserProfile.objects.create(user=user)

        user.reset_password_token = rand_str()
        user.reset_password_token_expire_time = now() + timedelta(minutes=20)
        user.save()
        render_data = {
            "username":
            user.username,
            "website_name":
            SysOptions.website_name,
            "link":
            f"{SysOptions.website_base_url}/reset-password/{user.reset_password_token}"
        }
        email_html = render_to_string("reset_password_email.html", render_data)
        send_email_async.send(from_name=SysOptions.website_name_shortcut,
                              to_email=user.email,
                              to_name=user.username,
                              subject=f"Reset your password",
                              content=email_html)

        return self.success("Succeeded, 但是请找回密码:)")
コード例 #26
0
ファイル: views.py プロジェクト: zcboys/flask_bbs
def get_captcha():
    text, image = Captcha.gene_graph_captcha()
    memcaches.set(text.lower(), text.lower())
    out = BytesIO()
    image.save(out, 'png')
    out.seek(0)
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    return resp
コード例 #27
0
def sms_captcha():
    telephone = request.args.get('telephone')
    if not telephone:
        return restful.parmaserror(message='请传入手机号码!')
    captcha = Captcha.gene_text(number=4)
    if alidayu.send_sms(telephone, code=captcha):
        return restful.success()
    else:
        return restful.parmaserror(message='短信验证码发送失败!')
コード例 #28
0
def graph_captcha():
    text, image = Captcha.gene_graph_captcha()
    zlcache.set(text, text)
    out = BytesIO()
    image.save(out, "png")
    out.seek(0)
    res = make_response(out.read())
    res.content_type = "image/png"
    return res
コード例 #29
0
def graph_captcha():
    text, image = Captcha.gene_code()
    cache.set(key=text.lower(), value=text.lower())
    out = BytesIO()  #数据保存在内存中
    image.save(out, 'png')
    out.seek(0)  #指针归0
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    return resp
コード例 #30
0
ファイル: views.py プロジェクト: XiongYN/cnblog_bbs
def graph_captcha():
    text, image = Captcha.gene_graph_captcha()
    out = BytesIO()
    image.save(out, 'png')
    out.seek(0)
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    xcache.set(text.lower(),text.lower()) #图片验证码这里,不好设置一个唯一的key,索性直接也用验证码的值作为key
    return resp
コード例 #31
0
def graph_captcha():
    text, image = Captcha.gene_graph_captcha()
    mbcache.set(text.lower(), text.lower())
    out = BytesIO()  # 二进制流对象
    image.save(out, 'png')  # 保存在out中
    out.seek(0)  # 文件流的指针放在0位置
    resp = make_response(out.read())  # 读出来
    resp.content_type = 'image/png'  # 指定数据类型
    return resp
コード例 #32
0
ファイル: views.py プロジェクト: spxfen17/xfbbs
def graph_captcha():
    text,image = Captcha.gene_grap_captcha()
    xfcache.set(text.lower(),text.lower())
    out = BytesIO()
    image.save(out,'png') #指定格式为png
    out.seek(0)           #把指针指到开始位置
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    return resp
コード例 #33
0
ファイル: views.py プロジェクト: caoyingfeng/BBS
def graph_captcha():
    text, image = Captcha.gene_graph_captcha()
    mycache.set(text.lower(), text.lower())
    out = BytesIO()
    image.save(out, 'png')
    out.seek(0)
    resp = make_response(out.read())
    resp.content_type = "image/png"
    return resp
コード例 #34
0
def graph_captcha():
    text, image = Captcha.gene_graph_captcha()
    zlcache.set(text.lower(), text.lower())  # 存储到memcached
    out = BytesIO()
    image.save(out, 'png')
    out.seek(0)  # 将文件指针设置为0
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    return resp
コード例 #35
0
    def post(self, request):
        data = request.data
        hide_id = False
        if data.get("contest_id"):
            try:
                contest = Contest.objects.get(id=data["contest_id"],
                                              visible=True)
            except Contest.DoesNotExist:
                return self.error("Contest doesn't exist.")
            if contest.status == ContestStatus.CONTEST_ENDED:
                return self.error("The contest have ended")
            if not request.user.is_contest_admin(contest):
                if contest.status == ContestStatus.CONTEST_NOT_START:
                    return self.error("Contest have not started")
                user_ip = ipaddress.ip_address(request.session.get("ip"))
                if contest.allowed_ip_ranges:
                    if not any(
                            user_ip in ipaddress.ip_network(cidr, strict=False)
                            for cidr in contest.allowed_ip_ranges):
                        return self.error(
                            "Your IP is not allowed in this contest")

            if not contest.problem_details_permission(request.user):
                hide_id = True

        if data.get("captcha"):
            if not Captcha(request).check(data["captcha"]):
                return self.error("Invalid captcha")
        error = self.throttling(request)
        if error:
            return self.error(error)

        try:
            problem = Problem.objects.get(id=data["problem_id"],
                                          contest_id=data.get("contest_id"),
                                          visible=True)
        except Problem.DoesNotExist:
            return self.error("Problem not exist")
        if data["language"] not in problem.languages:
            return self.error(
                f"{data['language']} is now allowed in the problem")
        submission = Submission.objects.create(
            user_id=request.user.id,
            username=request.user.username,
            language=data["language"],
            code=data["code"],
            problem_id=problem.id,
            ip=request.session["ip"],
            contest_id=data.get("contest_id"))
        # use this for debug
        # JudgeDispatcher(submission.id, problem.id).judge()
        judge_task.delay(submission.id, problem.id)
        if hide_id:
            return self.success()
        else:
            return self.success({"submission_id": submission.id})
コード例 #36
0
ファイル: views.py プロジェクト: Timeship/OnlineJudge-QDU
 def post(self, request):
     serializer = ApplyResetPasswordSerializer(data=request.data)
     if serializer.is_valid():
         data = serializer.data
         captcha = Captcha(request)
         if not captcha.check(data["captcha"]):
             return error_response(u"验证码错误")
         try:
             user = User.objects.get(username=data["username"], email=data["email"])
         except User.DoesNotExist:
             return error_response(u"用户不存在")
         user.reset_password_token = rand_str()
         user.save()
         # todo
         email_template = open(settings.TEMPLATES[0]["DIRS"][0] + "utils/reset_password_email.html", "r").read()
         email_template.replace("{{ username }}", user.username).replace("{{ link }}", "/reset_password/?token=" + user.reset_password_token)
         return success_response(u"邮件发生成功")
     else:
         return serializer_invalid_response(serializer)
コード例 #37
0
def graph_captcha():
    from utils import zlcache
    text, image = Captcha.gene_graph_captcha()
    zlcache.set(text.lower(), text.lower())
    out = BytesIO()
    image.save(out, 'png')
    out.seek(0)
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    return resp
コード例 #38
0
 def post(self, request):
     serializer = ResetPasswordSerializer(data=request.data)
     if serializer.is_valid():
         data = serializer.data
         captcha = Captcha(request)
         if not captcha.check(data["captcha"]):
             return error_response(u"验证码错误")
         try:
             user = User.objects.get(reset_password_token=data["token"])
         except User.DoesNotExist:
             return error_response(u"token 不存在")
         if (now() - user.reset_password_token_create_time).total_seconds() > 30 * 60:
             return error_response(u"token 已经过期,请在30分钟内重置密码")
         user.reset_password_token = None
         user.set_password(data["password"])
         user.save()
         return success_response(u"密码重置成功")
     else:
         return serializer_invalid_response(serializer)
コード例 #39
0
ファイル: views.py プロジェクト: ArchFeh/OnlineJudge
 def post(self, request):
     serializer = ResetPasswordSerializer(data=request.data)
     if serializer.is_valid():
         data = serializer.data
         captcha = Captcha(request)
         if not captcha.check(data["captcha"]):
             return error_response(u"验证码错误")
         try:
             user = User.objects.get(reset_password_token=data["token"])
         except User.DoesNotExist:
             return error_response(u"token 不存在")
         if (now() - user.reset_password_token_create_time).total_seconds() > 30 * 60:
             return error_response(u"token 已经过期,请在30分钟内重置密码")
         user.reset_password_token = None
         user.set_password(data["password"])
         user.save()
         return success_response(u"密码重置成功")
     else:
         return serializer_invalid_response(serializer)
コード例 #40
0
ファイル: oj.py プロジェクト: joeyac/OnlineJudge
    def post(self, request):
        """
        User register api
        """
        if not SysOptions.allow_register:
            return self.error("Register function has been disabled by admin")

        data = request.data
        data["username"] = data["username"].lower()
        data["email"] = data["email"].lower()
        captcha = Captcha(request)
        if not captcha.check(data["captcha"]):
            return self.error("Invalid captcha")
        if User.objects.filter(username=data["username"]).exists():
            return self.error("Username already exists")
        if User.objects.filter(email=data["email"]).exists():
            return self.error("Email already exists")
        user = User.objects.create(username=data["username"], email=data["email"])
        user.set_password(data["password"])
        user.save()
        UserProfile.objects.create(user=user)
        return self.success("Succeeded")
コード例 #41
0
ファイル: views.py プロジェクト: hujingguang/OnlineJudge
 def post(self, request):
     """
     用户修改密码json api接口
     ---
     request_serializer: UserChangePasswordSerializer
     """
     serializer = UserChangePasswordSerializer(data=request.data)
     if serializer.is_valid():
         data = serializer.data
         captcha = Captcha(request)
         if not captcha.check(data["captcha"]):
             return error_response(u"验证码错误")
         username = request.user.username
         user = auth.authenticate(username=username, password=data["old_password"])
         if user:
             user.set_password(data["new_password"])
             user.save()
             return success_response(u"用户密码修改成功!")
         else:
             return error_response(u"密码不正确,请重新修改!")
     else:
         return serializer_invalid_response(serializer)
コード例 #42
0
ファイル: views.py プロジェクト: spxcds/ElecMall
 def post(self, request):
     form = UserRegisterForm(request.POST)
     if form.is_valid():
         data = form.cleaned_data
         captcha = Captcha(request)
         if not captcha.check(data['captcha']):
             return info_page(request, '验证码错误')
         try:
             Customer.objects.get(Username=data['Username'])
             return info_page(request, '用户已经存在')
         except Customer.DoesNotExist:
             pass
         try:
             Customer.objects.get(Email=data['Email'])
             return info_page(request, '该邮件已经注册')
         except Customer.DoesNotExist:
             pass
         user = Customer.objects.create(Username=data['Username'], Email=data['Email'], Balance=0,
                                        Telephone=data['Telephone'], Nickname=data['Nickname'], Password=data['Password'])
         request.user = user
         request.session['user_id'] = user.id
         return info_page(request, "注册成功")
     else:
         return info_page(request, "数据格式不合法")