コード例 #1
0
ファイル: views.py プロジェクト: injetlee/maple-bbs
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)
コード例 #2
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)
コード例 #3
0
 def user_loader_from_request(request):
     from maple.user.models import User
     token = request.args.get('token')
     if token is not None:
         user = User.check_token(token)
         if user:
             return user
コード例 #4
0
ファイル: views.py プロジェクト: shiguol/maple-bbs
def load_token(token):
    max_age = app.config["REMEMBER_COOKIE_DURATION"].total_seconds()
    data = login_serializer.loads(token, max_age=max_age)
    user = User.load_by_name(data[0])
    if user and data[1] == user.password:
        return user
    return None
コード例 #5
0
ファイル: views.py プロジェクト: shiguol/maple-bbs
def collect():
    if request.method == "POST":
        qid = request.values.get('qid')
        collect = Collector.load(qid, current_user.id)
        if collect is not None:
            db.session.delete(collect)
            db.session.commit()
            RedisData.set_collect(current_user, -1)
            return jsonify(judge=True)
        else:
            collect = Collector()
            collect.question_id = qid
            collect.user_id = current_user.id
            db.session.add(collect)
            db.session.commit()
            user = User.load_by_id(collect.user_id)
            if current_user.name != user.name:
                message = Message(send_user=current_user.name,
                                  rece_user=user.name,
                                  kind='collect',
                                  content='a')
                message.question_id = qid
                db.session.add(message)
                db.session.commit()
                RedisData.set_notice(user, 1)
            else:
                pass
            RedisData.set_collect(current_user, 1)
            return jsonify(judge=True)
    else:
        abort(404)
コード例 #6
0
ファイル: views.py プロジェクト: shiguol/maple-bbs
def love():
    '''点赞'''
    if request.method == "POST":
        rid = request.values.get('rid')
        print(rid)
        love = Lover.load(rid, current_user.id)
        if love is not None:
            db.session.delete(love)
            db.session.commit()
            RedisData.set_love(current_user, -1)
            flash('成功取消赞')
            return jsonify(judge=True)
        else:
            love = Lover()
            love.reply_id = rid
            love.user_id = current_user.id
            db.session.add(love)
            db.session.commit()
            user = User.load_by_id(love.user_id)
            if current_user.name != user.name:
                message = Message(send_user=current_user.name,
                                  rece_user=user.name,
                                  kind='love',
                                  content='a')
                message.reply_id = rid
                db.session.add(message)
                db.session.commit()
                RedisData.set_notice(user, 1)
            else:
                pass
            RedisData.set_love(current_user, 1)
            flash('赞成功')
            return jsonify(judge=True)
    else:
        abort(404)
コード例 #7
0
ファイル: views.py プロジェクト: injetlee/maple-bbs
def load_token(token):
    max_age = app.config["REMEMBER_COOKIE_DURATION"].total_seconds()
    data = login_serializer.loads(token, max_age=max_age)
    user = User.load_by_name(data[0])
    if user and data[1] == user.password:
        return user
    return None
コード例 #8
0
ファイル: views.py プロジェクト: shiguol/maple-bbs
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)
コード例 #9
0
ファイル: views.py プロジェクト: shiguol/maple-bbs
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)
コード例 #10
0
ファイル: manager.py プロジェクト: KohTseh/maple-blog
def create_user(username, email, password):
    if username == 'admin':
        username = input('Username(default admin):')
    if email is None:
        email = input('Email:')
    if password is None:
        password = getpass('Password:'******'super'
    user.registered_time = datetime.utcnow()
    user.confirmed_time = datetime.utcnow()
    db.session.add(user)
    db.session.commit()
コード例 #11
0
ファイル: views.py プロジェクト: RayYu03/maple-blog
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)
コード例 #12
0
ファイル: forms.py プロジェクト: KohTseh/maple-blog
    def validate(self):
        rv = BaseForm.validate(self)
        if not rv:
            return False

        user = User.query.filter_by(name=self.name.data).first()
        print(user)
        if user is None:
            self.name.errors.append('Unknown username')
            return False

        a = User()
        if not user.check_password(self.passwd.data):
            self.passwd.errors.append('Invalid password')
            return False

        self.user = user
        return True
コード例 #13
0
def create_user(username, email, password):
    if username == 'admin':
        username = input('Username(default admin):')
    if email is None:
        email = input('Email:')
    if password is None:
        password = getpass('Password:'******'super').first()
    if role is None:
        role = Role()
        role.rolename = 'super'
    user.roles.append(role)
    db.session.add(user)
    db.session.commit()
コード例 #14
0
ファイル: manager.py プロジェクト: 0xsKu/maple-bbs
def create_user(username, email, password):
    if username == 'admin':
        username = input('Username(default admin):')
    if email is None:
        email = input('Email:')
    if password is None:
        password = getpass('Password:'******'super').first()
    if role is None:
        role = Role()
        role.rolename = 'super'
    user.roles.append(role)
    db.session.add(user)
    db.session.commit()
コード例 #15
0
 def create_model(self, form):
     form.password.data = User.set_password(form.password.data)
     super(UserModelView, self).create_model(form)
コード例 #16
0
ファイル: views.py プロジェクト: shiguol/maple-bbs
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)
コード例 #17
0
ファイル: extensions.py プロジェクト: honmaple/maple-blog
 def user_loader_from_request(request):
     token = request.args.get('token')
     if token is not None:
         user = User.check_token(token)
         if user:
             return user