permissions: flush all user permissions in case of default user permission changes.

- this is a special case that due to inheritance we need to flush ALL users permissions
- before the default permission changes didn't flush the caches result in cached values beeing present until the cache expires
This commit is contained in:
Daniel Dourvaris 2020-01-10 15:51:14 +01:00
parent c599b25174
commit 0beeba3cdc
4 changed files with 40 additions and 4 deletions

View file

@ -28,6 +28,7 @@ from rhodecode.lib import helpers as h
from rhodecode.lib import audit_logger
from rhodecode.lib.auth import (
LoginRequired, HasRepoPermissionAnyDecorator, CSRFRequired)
from rhodecode.model.db import User
from rhodecode.model.forms import RepoPermsForm
from rhodecode.model.meta import Session
from rhodecode.model.permission import PermissionModel
@ -89,7 +90,12 @@ class RepoSettingsPermissionsView(RepoAppView):
Session().commit()
h.flash(_('Repository access permissions updated'), category='success')
PermissionModel().flush_user_permission_caches(changes)
affected_user_ids = None
if changes.get('default_user_changed', False):
# if we change the default user, we need to flush everyone permissions
affected_user_ids = [x.user_id for x in User.get_all()]
PermissionModel().flush_user_permission_caches(
changes, affected_user_ids=affected_user_ids)
raise HTTPFound(
h.route_path('edit_repo_perms', repo_name=self.db_repo_name))