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)
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)
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)
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'))
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)
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)
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)
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)
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)
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)
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'))
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)