예제 #1
0
def register():
    if flask.g.user:
        return flask.redirect(redirect_url())

    form = forms.RegisterForm(flask.request.form)
    if flask.request.method == 'POST' and form.validate():
        ip = ip_address(flask.request.remote_addr).packed

        if _check_for_multi_account(
                ip, app.config.get('PER_IP_ACCOUNT_COOLDOWN', 0)):
            flask.flash(
                'You or somebody else has already registered an account from this IP '
                'recently. You cannot register another one.', 'danger')
            return flask.render_template('register.html', form=form)

        user = models.User(username=form.username.data.strip(),
                           email=form.email.data.strip(),
                           password=form.password.data)
        user.registration_ip = ip
        user.last_login_ip = ip
        db.session.add(user)
        db.session.commit()

        if app.config['RAID_MODE_LIMIT_REGISTER']:
            flask.flash(
                flask.Markup(
                    app.config['RAID_MODE_REGISTER_MESSAGE'] + ' '
                    'Please <a href="{}">ask a moderator</a> to manually '
                    'activate your account <a href="{}">\'{}\'</a>.'.format(
                        flask.url_for('site.help') + '#irchelp',
                        flask.url_for('users.view_user',
                                      user_name=user.username), user.username)
                ), 'warning')

        elif models.RangeBan.is_rangebanned(user.registration_ip):
            flask.flash(
                flask.Markup(
                    'Your IP is blocked from creating new accounts. '
                    'Please <a href="{}">ask a moderator</a> to manually '
                    'activate your account <a href="{}">\'{}\'</a>.'.format(
                        flask.url_for('site.help') + '#irchelp',
                        flask.url_for('users.view_user',
                                      user_name=user.username),
                        user.username)), 'warning')
        else:
            if app.config[
                    'USE_EMAIL_VERIFICATION']:  # force verification, enable email
                send_verification_email(user)
                return flask.render_template('waiting.html')
            else:  # disable verification, set user as active and auto log in
                user.status = models.UserStatusType.ACTIVE
                db.session.add(user)
                db.session.commit()
                flask.g.user = user
                flask.session['user_id'] = user.id
                flask.session.permanent = True
                flask.session.modified = True
                return flask.redirect(redirect_url())

    return flask.render_template('register.html', form=form)
예제 #2
0
def register():
    if flask.g.user:
        return flask.redirect(redirect_url())

    form = forms.RegisterForm(flask.request.form)
    if flask.request.method == 'POST' and form.validate():
        user = models.User(username=form.username.data.strip(),
                           email=form.email.data.strip(), password=form.password.data)
        user.last_login_ip = ipaddress.ip_address(flask.request.remote_addr).packed
        db.session.add(user)
        db.session.commit()

        if config.USE_EMAIL_VERIFICATION:  # force verification, enable email
            activ_link = get_activation_link(user)
            send_verification_email(user.email, activ_link)
            return flask.render_template('waiting.html')
        else:  # disable verification, set user as active and auto log in
            user.status = models.UserStatusType.ACTIVE
            db.session.add(user)
            db.session.commit()
            flask.g.user = user
            flask.session['user_id'] = user.id
            flask.session.permanent = True
            flask.session.modified = True
            return flask.redirect(redirect_url())

    return flask.render_template('register.html', form=form)
예제 #3
0
파일: account.py 프로젝트: peasshoter/nyaa
def register():
    if flask.g.user:
        return flask.redirect(redirect_url())

    form = forms.RegisterForm(flask.request.form)
    if flask.request.method == 'POST' and form.validate():
        user = models.User(username=form.username.data.strip(),
                           email=form.email.data.strip(), password=form.password.data)
        user.last_login_ip = ip_address(flask.request.remote_addr).packed
        db.session.add(user)
        db.session.commit()
        if models.RangeBan.is_rangebanned(user.last_login_ip):
            flask.flash(flask.Markup('Your IP is blocked from creating new accounts. '
                                     'Please <a href="{}">ask a moderator</a> to manually '
                                     'activate your account <a href="{}">\'{}\'</a>.'
                                     .format(flask.url_for('site.help') + '#irchelp',
                                             flask.url_for('users.view_user',
                                                           user_name=user.username),
                                             user.username)), 'warning')
        else:
            if app.config['USE_EMAIL_VERIFICATION']:  # force verification, enable email
                send_verification_email(user)
                return flask.render_template('waiting.html')
            else:  # disable verification, set user as active and auto log in
                user.status = models.UserStatusType.ACTIVE
                db.session.add(user)
                db.session.commit()
                flask.g.user = user
                flask.session['user_id'] = user.id
                flask.session.permanent = True
                flask.session.modified = True
                return flask.redirect(redirect_url())

    return flask.render_template('register.html', form=form)