Example #1
0
def login():
    error = None
    form = LoginForm()
    if form.validate_on_submit() and request.method == "POST":
        print('hello')
        return jsonify(judge=False, error=_('The validate code is error'))
        # validate_code = session['validate_code']
        # validate = form.code.data
        # if validate.lower() != validate_code.lower():
        #     return jsonify(judge=False, error=_('The validate code is error'))
        # else:
        #     name = form.name.data
        #     passwd = form.passwd.data
        #     remember = form.remember.data
        #     # remember = request.get_json()["remember"]
        #     user = User.load_by_name(name)
        #     if user and User.check_password(user.passwd, passwd):
        #         if remember:
        #             session.permanent = True

        #         login_user(user, remember=remember)

        #         identity_changed.send(current_app._get_current_object(),
        #                               identity=Identity(user.id))
        #         flash(_('You have logined in'))
        #         return jsonify(judge=True, error=error)
        #     else:
        #         error = _('Name or Password is error')
        #         return jsonify(judge=False, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('auth/login.html', form=form, error=error)
Example #2
0
def forget():
    '''忘记密码'''
    error = None
    form = ForgetPasswdForm()
    if form.validate_on_submit() and request.method == "POST":
        validate_code = session['validate_code']
        validate = form.code.data
        if validate.lower() != validate_code.lower():
            return jsonify(judge=False, error=u'验证码错误')
        else:
            exsited_email = User.query.filter_by(
                email=form.confirm_email.data).first()
            if exsited_email:
                '''email模板'''
                from random import sample
                from string import ascii_letters, digits
                npasswd = ''.join(sample(ascii_letters + digits, 8))
                exsited_email.passwd = generate_password_hash(npasswd)
                db.session.commit()
                html = render_template('templet/forget.html',
                                       confirm_url=npasswd)
                subject = "请及时修改你的密码"
                email_send(form.confirm_email.data, html, subject)
                flash(u'邮件已发送到你的邮箱,请及时查收并修改密码')
                return jsonify(judge=True, error=error)
            else:
                error = u'邮箱未注册'
                return jsonify(judge=False, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('auth/forget.html', form=form)
Example #3
0
def forget():
    '''忘记密码'''
    error = None
    form = ForgetPasswdForm()
    if form.validate_on_submit() and request.method == "POST":
        validate_code = session['validate_code']
        validate = form.code.data
        if validate.lower() != validate_code.lower():
            return jsonify(judge=False, error=_('The validate code is error'))
        else:
            exsited_email = User.query.filter_by(
                email=form.confirm_email.data).first()
            if exsited_email:
                '''email模板'''
                from random import sample
                from string import ascii_letters, digits
                npasswd = ''.join(sample(ascii_letters + digits, 8))
                exsited_email.passwd = generate_password_hash(npasswd)
                db.session.commit()
                html = render_template('templet/forget.html',
                                       confirm_url=npasswd)
                subject = "Please update your password in time"
                email_send(form.confirm_email.data, html, subject)
                flash(_(
                    'An email has been sent to you.Please receive and update your password in time'))
                return jsonify(judge=True, error=error)
            else:
                error = _('The email is error')
                return jsonify(judge=False, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('auth/forget.html', form=form)
Example #4
0
def forget():
    '''忘记密码'''
    error = None
    form = ForgetPasswdForm()
    if form.validate_on_submit() and request.method == "POST":
        validate_code = session['validate_code']
        validate = form.code.data
        if validate.lower() != validate_code.lower():
            return jsonify(judge=False, error=_('The validate code is error'))
        else:
            exsited_email = User.query.filter_by(
                email=form.confirm_email.data).first()
            if exsited_email:
                '''email模板'''
                from random import sample
                from string import ascii_letters, digits
                npasswd = ''.join(sample(ascii_letters + digits, 8))
                exsited_email.passwd = generate_password_hash(npasswd)
                db.session.commit()
                html = render_template('templet/forget.html',
                                       confirm_url=npasswd)
                subject = "Please update your password in time"
                email_send(form.confirm_email.data, html, subject)
                flash(_(
                    'An email has been sent to you.Please receive and update your password in time'))
                return jsonify(judge=True, error=error)
            else:
                error = _('The email is error')
                return jsonify(judge=False, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('auth/forget.html', form=form)
Example #5
0
def login():
    error = None
    form = LoginForm()
    if form.validate_on_submit() and request.method == "POST":
        print('hello')
        return jsonify(judge=False, error=_('The validate code is error'))
        # validate_code = session['validate_code']
        # validate = form.code.data
        # if validate.lower() != validate_code.lower():
        #     return jsonify(judge=False, error=_('The validate code is error'))
        # else:
        #     name = form.name.data
        #     passwd = form.passwd.data
        #     remember = form.remember.data
        #     # remember = request.get_json()["remember"]
        #     user = User.load_by_name(name)
        #     if user and User.check_password(user.passwd, passwd):
        #         if remember:
        #             session.permanent = True

        #         login_user(user, remember=remember)

        #         identity_changed.send(current_app._get_current_object(),
        #                               identity=Identity(user.id))
        #         flash(_('You have logined in'))
        #         return jsonify(judge=True, error=error)
        #     else:
        #         error = _('Name or Password is error')
        #         return jsonify(judge=False, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('auth/login.html', form=form, error=error)
Example #6
0
def user_passwd_edit(post_id):
    error = None
    # if not writer_permission.can():
    #     error = u'你没有验证账户,不能修改密码,请尽快验证账户.'
    #     return jsonify(judge=False, error=error)
    form = EditPasswdForm()
    action = EditManager(post_id, form)
    if form.validate_on_submit() and request.method == "POST":
        user = User.query.filter_by(id=post_id).first()
        if check_password_hash(user.password, form.passwd.data):
            action.edit_user_passwd()
            flash('密码修改成功,请重新登陆')
            logout_user()
            for key in ('identity.id', 'identity.auth_type'):
                session.pop(key, None)
            identity_changed.send(current_app._get_current_object(),
                                  identity=AnonymousIdentity())
            error = "密码修改"
            return jsonify(judge=True, error=error)
        else:
            error = u'密码错误,请重新输入'
            return jsonify(judge=False, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return redirect(url_for('index.index'))
Example #7
0
def login():
    error = None
    form = LoginForm()
    if form.validate_on_submit() and request.method == "POST":
        validate_code = session['validate_code']
        validate = form.code.data
        if validate.lower() != validate_code.lower():
            return jsonify(judge=False, error=u'验证码错误')
        else:
            name = form.name.data
            passwd = form.passwd.data
            remember = request.get_json()["remember"]
            user = User.load_by_name(name)
            if user and User.check_password(user.passwd, passwd):
                if remember:
                    session.permanent = True

                login_user(user, remember=remember)

                identity_changed.send(current_app._get_current_object(),
                                      identity=Identity(user.id))
                flash(u'你已成功登陆')
                return jsonify(judge=True, error=error)
            else:
                error = u'用户名或密码错误'
                return jsonify(judge=False, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('auth/login.html', form=form, error=error)
Example #8
0
def privacy():
    error = None
    form = PrivacyForm()
    if form.validate_on_submit() and request.method == "POST":
        online_status = form.online_status.data
        topic_list = form.topic_list.data
        rep_list = form.rep_list.data
        ntb_list = form.ntb_list.data
        collect_list = form.collect_list.data
        current_user.setting.online_status = online_status
        current_user.setting.topic_list = topic_list
        current_user.setting.rep_list = rep_list
        current_user.setting.ntb_list = ntb_list
        current_user.setting.collect_list = collect_list
        db.session.commit()
        flash('更新成功')
        return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        form.online_status.data =  current_user.setting.online_status
        form.topic_list.data = current_user.setting.topic_list
        form.rep_list.data = current_user.setting.rep_list
        form.ntb_list.data = current_user.setting.ntb_list
        form.collect_list.data = current_user.setting.collect_list
        return render_template('user/user_privacy.html', form=form)
Example #9
0
def privacy():
    error = None
    form = PrivacyForm()
    if form.validate_on_submit() and request.method == "POST":
        online_status = form.online_status.data
        topic_list = form.topic_list.data
        rep_list = form.rep_list.data
        ntb_list = form.ntb_list.data
        collect_list = form.collect_list.data
        current_user.setting.online_status = online_status
        current_user.setting.topic_list = topic_list
        current_user.setting.rep_list = rep_list
        current_user.setting.ntb_list = ntb_list
        current_user.setting.collect_list = collect_list
        db.session.commit()
        flash('更新成功')
        return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        form.online_status.data = current_user.setting.online_status
        form.topic_list.data = current_user.setting.topic_list
        form.rep_list.data = current_user.setting.rep_list
        form.ntb_list.data = current_user.setting.ntb_list
        form.collect_list.data = current_user.setting.collect_list
        return render_template('user/user_privacy.html', form=form)
Example #10
0
def setting():
    '''用户设置'''
    error = None
    form = SettingForm()
    passwd_form = NewPasswdForm()
    mode = request.args.get('mode')
    if mode == 'setting':
        if form.validate_on_submit() and request.method == "POST":
            introduce = form.introduce.data
            school = form.school.data
            word = form.word.data
            current_user.infor.introduce = introduce
            current_user.infor.school = school
            current_user.infor.word = word
            db.session.commit()
            flash('资料更新成功')
            return jsonify(judge=True, error=error)
        else:
            if form.errors:
                return return_errors(form)
            else:
                pass
            return redirect(url_for('user.setting'))
    elif mode == 'password':
        if passwd_form.validate_on_submit() and request.method == "POST":
            user = User.query.filter_by(name=current_user.name).first()
            passwd = passwd_form.passwd.data
            rpasswd = passwd_form.rpasswd.data
            if not User.check_password(user.passwd, passwd):
                error = u'密码错误'
                return jsonify(judge=False, error=error)
            else:
                user.passwd = generate_password_hash(rpasswd)
                db.session.commit()
                logout_user()
                session.clear()
                for key in ('identity.id', 'identity.auth_type'):
                    session.pop(key, None)
                identity_changed.send(current_app._get_current_object(),
                                      identity=AnonymousIdentity())
                flash('密码修改成功,请重新登陆')
                return jsonify(judge=True, error=error)
        else:
            if passwd_form.passwd.errors:
                error = passwd_form.passwd.errors
                return jsonify(judge=False, error=error)
            elif passwd_form.npasswd.errors:
                error = passwd_form.npasswd.errors
                return jsonify(judge=False, error=error)
            else:
                return redirect(url_for('user.setting'))
    else:
        form.school.data = current_user.infor.school
        form.word.data = current_user.infor.word
        form.introduce.data = current_user.infor.introduce
        return render_template('user/user_settings.html',
                               category=category,
                               passwd_form=passwd_form,
                               form=form)
Example #11
0
def setting():
    '''用户设置'''
    error = None
    form = SettingForm()
    passwd_form = NewPasswdForm()
    mode = request.args.get('mode')
    if mode == 'setting':
        if form.validate_on_submit() and request.method == "POST":
            introduce = form.introduce.data
            school = form.school.data
            word = form.word.data
            current_user.infor.introduce = introduce
            current_user.infor.school = school
            current_user.infor.word = word
            db.session.commit()
            flash('资料更新成功')
            return jsonify(judge=True, error=error)
        else:
            if form.errors:
                return return_errors(form)
            else:
                pass
            return redirect(url_for('user.setting'))
    elif mode == 'password':
        if passwd_form.validate_on_submit() and request.method == "POST":
            user = User.query.filter_by(name=current_user.name).first()
            passwd = passwd_form.passwd.data
            rpasswd = passwd_form.rpasswd.data
            if not User.check_password(user.passwd, passwd):
                error = u'密码错误'
                return jsonify(judge=False, error=error)
            else:
                user.passwd = generate_password_hash(rpasswd)
                db.session.commit()
                logout_user()
                session.clear()
                for key in ('identity.id', 'identity.auth_type'):
                    session.pop(key, None)
                identity_changed.send(current_app._get_current_object(),
                                      identity=AnonymousIdentity())
                flash('密码修改成功,请重新登陆')
                return jsonify(judge=True, error=error)
        else:
            if passwd_form.passwd.errors:
                error = passwd_form.passwd.errors
                return jsonify(judge=False, error=error)
            elif passwd_form.npasswd.errors:
                error = passwd_form.npasswd.errors
                return jsonify(judge=False, error=error)
            else:
                return redirect(url_for('user.setting'))
    else:
        form.school.data = current_user.infor.school
        form.word.data = current_user.infor.word
        form.introduce.data = current_user.infor.introduce
        return render_template('user/user_settings.html',
                               category=category,
                               passwd_form=passwd_form,
                               form=form)
Example #12
0
def register():
    error = None
    form = RegisterForm()
    if form.validate_on_submit() and request.method == "POST":
        validate_code = session['validate_code']
        validate = form.code.data
        if validate.lower() != validate_code.lower():
            return jsonify(judge=False, error=_('The validate code is error'))
        else:
            useremail = User.load_by_email(form.email.data)
            username = User.load_by_name(form.name.data)
            if username is not None:
                error = _('The name has been registered')
                return jsonify(judge=False, error=error)
            elif useremail is not None:
                error = _('The email has been registered')
                return jsonify(judge=False, error=error)
            else:
                account = User()
                account.name = form.name.data,
                account.email = form.email.data,
                account.passwd = form.passwd.data,
                account.roles = 'visitor'
                account.registered_time = datetime.now()
                '''邮箱验证'''
                token = email_token(account.email)
                confirm_url = url_for('auth.confirm',
                                      token=token,
                                      _external=True)
                html = render_template('templet/email.html',
                                       confirm_url=confirm_url)
                subject = _("Please confirm  your email")
                # email_send(account.email, html, subject)

                account.send_email_time = datetime.now()
                db.session.add(account)
                db.session.commit()

                login_user(account)
                identity_changed.send(current_app._get_current_object(),
                                      identity=Identity(account.id))
                flash(_('An email has been sent to your.Please receive'))
                return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('auth/register.html', form=form)
Example #13
0
def register():
    error = None
    form = RegisterForm()
    if form.validate_on_submit() and request.method == "POST":
        validate_code = session['validate_code']
        validate = form.code.data
        if validate.lower() != validate_code.lower():
            return jsonify(judge=False, error=_('The validate code is error'))
        else:
            useremail = User.load_by_email(form.email.data)
            username = User.load_by_name(form.name.data)
            if username is not None:
                error = _('The name has been registered')
                return jsonify(judge=False, error=error)
            elif useremail is not None:
                error = _('The email has been registered')
                return jsonify(judge=False, error=error)
            else:
                account = User()
                account.name = form.name.data,
                account.email = form.email.data,
                account.passwd = form.passwd.data,
                account.roles = 'visitor'
                account.registered_time = datetime.now()
                '''邮箱验证'''
                token = email_token(account.email)
                confirm_url = url_for('auth.confirm',
                                      token=token,
                                      _external=True)
                html = render_template('templet/email.html',
                                       confirm_url=confirm_url)
                subject = _("Please confirm  your email")
                # email_send(account.email, html, subject)

                account.send_email_time = datetime.now()
                db.session.add(account)
                db.session.commit()

                login_user(account)
                identity_changed.send(current_app._get_current_object(),
                                      identity=Identity(account.id))
                flash(_('An email has been sent to your.Please receive'))
                return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('auth/register.html', form=form)
Example #14
0
def question(class_url):
    error = None
    form = QuestionForm()
    fileform = PhotoForm()
    if form.validate_on_submit():
        title = form.title.data
        content = form.content.data
        choice = form.choice.data
        tags = form.tags.data
        tags = sp(',|;|,|;| ', tags)
        tags = list(set(tags))[:4]
        post_tags = []
        for tag in tags:
            if tag != '':
                t = Tags(author=current_user.name, name=tag)
                post_tags.append(t)
        question = Questions(title=title, content=content, kind=g.forums_url)
        question.tags = post_tags
        if choice == 'Markdown':
            question.is_markdown = True
        board = Board_S.load_by_name(class_url)
        board.count.topic += 1
        board.count.all_topic += 1
        board.board_f.count.topic += 1
        board.board_f.count.all_topic += 1
        question.board_id = board.id
        question.author_id = current_user.id
        current_user.infor.score -= 5
        '''随机赠送'''
        random_gift()
        db.session.add(question)
        db.session.commit()
        '''使用redis记录'''
        RedisData.set_question()
        RedisData.set_user()
        return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        board = Board_S.query.join(Board_F).\
            filter(Board_F.enname_f == g.forums_url).\
            filter(Board_S.enname_s == class_url).first_or_404()
        return render_template('question/question.html',
                               fileform=fileform,
                               form=form,
                               board=board)
Example #15
0
def question(group):
    group = Group.load_by_name(group)
    form = QuestionForm()
    fileform = PhotoForm()
    error = None
    if form.validate_on_submit():
        title = form.title.data
        content = form.content.data
        choice = form.choice.data
        tags = form.tags.data
        tags = sp(',|;|,|;| ', tags)
        tags = list(set(tags))[:4]
        post_tags = []
        for tag in tags:
            if tag != '':
                t = Tags(author=current_user.name, name=tag)
                post_tags.append(t)
        question = Questions(title=title, content=content, kind=group.kind)
        question.tags = post_tags
        if choice == 'Markdown':
            question.is_markdown = True
        question.is_group = True
        question.group_id = group.id
        question.author_id = current_user.id
        group.count.topic += 1
        group.count.all_topic += 1
        current_user.infor.score -= 5
        '''随机赠送'''
        random_gift()
        db.session.add(question)
        db.session.commit()
        '''使用redis记录'''
        RedisData.set_question()
        RedisData.set_user()
        return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('group/question.html',
                               group=group,
                               form=form,
                               fileform=fileform)
Example #16
0
def question(group):
    group = Group.load_by_name(group)
    form = QuestionForm()
    fileform = PhotoForm()
    error = None
    if form.validate_on_submit():
        title = form.title.data
        content = form.content.data
        choice = form.choice.data
        tags = form.tags.data
        tags = sp(',|;|,|;| ', tags)
        tags = list(set(tags))[:4]
        post_tags = []
        for tag in tags:
            if tag != '':
                t = Tags(author=current_user.name, name=tag)
                post_tags.append(t)
        question = Questions(title=title, content=content, kind=group.kind)
        question.tags = post_tags
        if choice == 'Markdown':
            question.is_markdown = True
        question.is_group = True
        question.group_id = group.id
        question.author_id = current_user.id
        group.count.topic += 1
        group.count.all_topic += 1
        current_user.infor.score -= 5
        '''随机赠送'''
        random_gift()
        db.session.add(question)
        db.session.commit()
        '''使用redis记录'''
        RedisData.set_question()
        RedisData.set_user()
        return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return render_template('group/question.html',
                               group=group,
                               form=form,
                               fileform=fileform)
Example #17
0
def user_infor_edit(post_id):
    error = None
    form = EditUserInforForm()
    action = EditManager(post_id, form)
    user = User.query.filter_by(id=post_id).first()
    if not form.school.data:
        form.school.data = user.school
    if not form.introduce.data:
        form.introduce.data = user.introduce
    if form.validate_on_submit() and request.method == "POST":
        action.edit_user_infor()
        error = u'资料更新成功'
        return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        return redirect(url_for('index.index'))
Example #18
0
def register():
    error = None
    form = RegisterForm()
    if form.validate_on_submit() and request.method == "POST":
        validate_code = session['validate_code']
        validate = form.code.data
        if validate.lower() != validate_code.lower():
            return jsonify(judge=False, error=u'验证码错误')
        else:
            useremail = User.load_by_email(form.email.data)
            username = User.load_by_name(form.name.data)
            if username is not None:
                error = u'用户名已存在'
                return jsonify(judge=False, error=error)
            elif useremail is not None:
                error = u'邮箱已被注册'
                return jsonify(judge=False, error=error)
            else:
                account = User(name=form.name.data,
                               email=form.email.data,
                               passwd=form.passwd.data)
                userinfor = UserInfor()
                usersetting = UserSetting()
                roles = Role(name='unconfirmed', rank=1)
                account.infor = userinfor
                account.setting = usersetting
                account.roles.append(roles)
                '''邮箱验证'''
                token = email_token(account.email)
                confirm_url = url_for('auth.confirm',
                                      token=token,
                                      _external=True)
                html = render_template('templet/email.html',
                                       confirm_url=confirm_url)
                subject = "请验证你的邮箱"
                email_send(account.email, html, subject)

                db.session.add(account)
                db.session.commit()
                '''记录用户数'''
                redis_data.hincrby('user', 'all:count', 1)

                login_user(account)
                identity_changed.send(current_app._get_current_object(),
                                      identity=Identity(account.id))
                '''发送邮件时间'''
                from time import time
                time = int(time()) + 28800
                user = '******' % str(current_user.id)
                redis_data.hset(user, 'send_email_time', time)
                flash(u'一封验证邮件已发往你的邮箱,請查收.')
                return jsonify(judge=True, error=error)
    else:
        if form.errors:
            return return_errors(form)
        else:
            pass
        if request.args.get('mode') == 'agree':
            return render_template('auth/register.html',
                                   form=form,
                                   error=error)
        else:
            return render_template('auth/register_service.html',
                                   form=form,
                                   error=error)