示例#1
0
def register_client():
    if 'username' in session:
        username = session['username']
        user = User.query.filter_by(username=username).first()
        if user is not None and user.is_admin:
            form = RegisterClientForm()
            if form.validate_on_submit():
                client = Client()
                client.user_id = user.id
                client.client_id = gen_salt(24)
                client.client_id_issued_at = int(time.time())
                client_metadata = {
                    "client_name": form.client_name.data,
                    "client_uri": form.client_uri.data,
                    "redirect_uris": split_by_crlf(form.redirect_uris.data),
                    "token_endpoint_auth_method": form.token_endpoint_auth_method.data,
                    "response_types": split_by_crlf(form.response_types.data),
                }
                client.set_client_metadata(client_metadata)

                if form.token_endpoint_auth_method.data == "none":
                    client.client_secret = ''
                else:
                    client.client_secret = gen_salt(48)

                db.session.add(client)
                db.session.commit()
                return render_template('client_register_success.html', client_id=client.client_id, client_secret=client.client_secret)
            return render_template('register_client.html', form=form)
        else:
            return "User does not have admin privileges", 403
    else:
        return "Need to be logged in", 403