diff --git a/pagure/templates/admin_index.html b/pagure/templates/admin_index.html index 6ccf0c3..4b341e6 100644 --- a/pagure/templates/admin_index.html +++ b/pagure/templates/admin_index.html @@ -23,6 +23,19 @@ {{ form.csrf_token }} +
  • +
    + + {{ form.csrf_token }} +
    +

    + This action can be used in case you need to change the hook-token for + *all* the projects hosted on this pagure instance. This can be due to + security reason. Beware that using it will break every web-hook + consumer of every project hosted. +

    +
  • {% if config['PAGURE_AUTH'] == 'local' %}
  • diff --git a/pagure/ui/admin.py b/pagure/ui/admin.py index a26f36b..beaba6d 100644 --- a/pagure/ui/admin.py +++ b/pagure/ui/admin.py @@ -13,7 +13,7 @@ from functools import wraps import flask import pagure.forms -from pagure import (APP, +from pagure import (APP, SESSION, generate_gitolite_acls, generate_authorized_key_file, is_admin, admin_session_timedout) @@ -72,3 +72,14 @@ def admin_refresh_ssh(): generate_authorized_key_file() flask.flash('Authorized file updated') return flask.redirect(flask.url_for('admin_index')) + + +@APP.route('/admin/hook_token', methods=['POST']) +@admin_required +def admin_generate_hook_token(): + """ Regenerate the hook_token for each projects in the DB. """ + form = pagure.forms.ConfirmationForm() + if form.validate_on_submit(): + pagure.lib.generate_hook_token(SESSION) + flask.flash('Hook token all re-generated') + return flask.redirect(flask.url_for('admin_index'))