From 7be3641d8124b163d16b3889d189569f81e8d120 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Sep 29 2015 08:33:08 +0000 Subject: Add the option to disable managing users and groups in the UI This is necessary if we want to deploy pagure in a configuration where users and groups are managed in gitolite thus outside of pagure itself. In this case, we do not want to give the possibility to change who can do what via the web UI. --- diff --git a/pagure/default_config.py b/pagure/default_config.py index f454b32..e855ee7 100644 --- a/pagure/default_config.py +++ b/pagure/default_config.py @@ -43,6 +43,9 @@ ENABLE_NEW_PROJECTS = True # Enables / Disables deleting projects on this pagure instance ENABLE_DEL_PROJECTS = True +# Enables / Disables managing access to the repos +ENABLE_USER_MNGT = True + # The URL to use to clone the git repositories. GIT_URL_SSH = 'ssh://git@pagure.org/' GIT_URL_GIT = 'git://pagure.org/' diff --git a/pagure/templates/master.html b/pagure/templates/master.html index ecc4985..884d6fe 100644 --- a/pagure/templates/master.html +++ b/pagure/templates/master.html @@ -49,9 +49,11 @@
  • Users
  • + {% if config.get('ENABLE_USER_MNGT', True) %}
  • Groups
  • + {% endif %} {% if admin %}
  • Admin diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html index 877fdbe..fa76eb0 100644 --- a/pagure/templates/settings.html +++ b/pagure/templates/settings.html @@ -217,6 +217,7 @@ +{% if config.get('ENABLE_USER_MNGT', True) %}

    Users and Groups

    @@ -269,6 +270,7 @@ {% endfor %}
    +{% endif %} {% if plugins %} diff --git a/pagure/ui/groups.py b/pagure/ui/groups.py index 7e3c5ca..a4d16e2 100644 --- a/pagure/ui/groups.py +++ b/pagure/ui/groups.py @@ -24,6 +24,9 @@ import pagure.lib.git @pagure.APP.route('/groups') def group_lists(): ''' List all the groups associated with all the projects. ''' + if not pagure.APP.config.get('ENABLE_USER_MNGT', True): + flask.abort(404) + group_type = 'user' if pagure.is_admin(): group_type = None @@ -52,6 +55,8 @@ def group_lists(): @pagure.APP.route('/group/', methods=['GET', 'POST']) def view_group(group): ''' Displays information about this group. ''' + if not pagure.APP.config.get('ENABLE_USER_MNGT', True): + flask.abort(404) group_type = 'user' if pagure.is_admin(): @@ -113,6 +118,9 @@ def view_group(group): def group_user_delete(user, group): """ Delete an user from a certain group """ + if not pagure.APP.config.get('ENABLE_USER_MNGT', True): + flask.abort(404) + form = pagure.forms.ConfirmationForm() if form.validate_on_submit(): @@ -152,6 +160,9 @@ def group_user_delete(user, group): def group_delete(group): """ Delete a certain group """ + if not pagure.APP.config.get('ENABLE_USER_MNGT', True): + flask.abort(404) + form = pagure.forms.ConfirmationForm() if form.validate_on_submit(): group_obj = pagure.lib.search_groups( @@ -187,6 +198,9 @@ def group_delete(group): def add_group(): """ Endpoint to create groups """ + if not pagure.APP.config.get('ENABLE_USER_MNGT', True): + flask.abort(404) + user = pagure.lib.search_user( pagure.SESSION, username=flask.g.fas_user.username) if not user: # pragma: no cover diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index 44878fb..50ff49b 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -1074,6 +1074,9 @@ def remove_user(repo, userid, username=None): def add_user(repo, username=None): """ Add the specified user from the project. """ + if not pagure.APP.config.get('ENABLE_USER_MNGT', True): + flask.abort(404) + if admin_session_timedout(): if flask.request.method == 'POST': flask.flash('Action canceled, try it again', 'error') @@ -1130,6 +1133,9 @@ def add_user(repo, username=None): def add_group_project(repo, username=None): """ Add the specified group from the project. """ + if not pagure.APP.config.get('ENABLE_USER_MNGT', True): + flask.abort(404) + if admin_session_timedout(): if flask.request.method == 'POST': flask.flash('Action canceled, try it again', 'error')