@blueprint.route('/settings/api/key/<string:key_id>/', methods=["GET", "POST"])
@login_required
def api_key_edit(key_id):
    key = ApiKey.objects(id=key_id).first()
    if key is None or current_user != key.owner:
        abort(401)

    form = ApiKeyEditForm()
    form.acl.choices = list()
    for access_token in access_tokens.values():
        if access_token.get("permission"):
            if not current_user.has_permission(access_token.get("permission")):
                continue
        form.acl.choices.append((access_token.get("token"), access_token.get("token")))

    if request.method == "GET":
        form.label.data = key.label
        form.acl.data = key.access

        return render_template('api_settings_edit_pane.html', settings_panels_structure=settings_panels_structure, form=form, key=key, title="Edit - API Keys - Developer - Settings")
    elif request.method == "POST":
        form.validate()

        key.label = form.label.data
        key.access = form.acl.data
        key.save()

        return redirect(url_for('api.api_key_edit', key_id=key_id))

add_settings_pane(lambda: url_for('api.api_key_settings_pane'), "Developer", "API Keys", menu_id="api_keys")
        if access_token.get("permission"):
            if not current_user.has_permission(access_token.get("permission")):
                continue
        form.acl.choices.append(
            (access_token.get("token"), access_token.get("token")))

    if request.method == "GET":
        form.label.data = key.label
        form.acl.data = key.access

        return render_template(
            'api_settings_edit_pane.html',
            settings_panels_structure=settings_panels_structure,
            form=form,
            key=key,
            title="Edit - API Keys - Developer - Settings")
    elif request.method == "POST":
        form.validate()

        key.label = form.label.data
        key.access = form.acl.data
        key.save()

        return redirect(url_for('api.api_key_edit', key_id=key_id))


add_settings_pane(lambda: url_for('api.api_key_settings_pane'),
                  "Developer",
                  "API Keys",
                  menu_id="api_keys")
示例#3
0
from wtforms.validators import InputRequired, Length, EqualTo
from flask_login import fresh_login_required, current_user, abort, login_required
from flask import request, flash, redirect, url_for, render_template
import random
import bcrypt

from models.user_model import User
from .. import blueprint
from blueprints.settings.views import add_settings_pane, settings_panels_structure


class SetPasswordForm(Form):
    password = PasswordField('New Password', [
        InputRequired("You need to enter a password."),
        Length(min=8, message="The password is too short.")])
    password_match = PasswordField('Verify Password', [EqualTo('password', message="The passwords didn't match.")])


@blueprint.route("/settings/setpassword", methods=["GET", "POST"])
@fresh_login_required
def setpassword():
    form = SetPasswordForm(request.form)
    if request.method == "POST" and form.validate():
        current_user.hash = bcrypt.hashpw(form.password.data, bcrypt.gensalt())
        current_user.save()
        flash('Your password has been changed.', category="success")
        return redirect(current_user.get_profile_url()), 303
    return render_template("setpassword_settings_pane.html", form=form, user=current_user, settings_panels_structure=settings_panels_structure, title="Change Password - Account - Settings")

add_settings_pane(lambda: url_for('auth.setpassword'), "Account", "Change Password", menu_id="setpassword")