permissions: flush members of user groups permissions to clear caches.

- we could get into a state that permissions isn't changed/showed immidiatelly based on the
members of user groups which permissions we change.
This commit is contained in:
Marcin Kuzminski 2018-10-25 11:20:26 +02:00
parent 109cc75671
commit 3c385f97b8
3 changed files with 21 additions and 2 deletions

View file

@ -29,6 +29,8 @@ from rhodecode.lib import helpers as h
from rhodecode.lib import audit_logger
from rhodecode.lib.auth import (
LoginRequired, HasRepoGroupPermissionAnyDecorator, CSRFRequired)
from rhodecode.lib.utils2 import safe_int
from rhodecode.model.db import UserGroup
from rhodecode.model.repo_group import RepoGroupModel
from rhodecode.model.forms import RepoGroupPermsForm
from rhodecode.model.meta import Session
@ -101,6 +103,11 @@ class RepoGroupPermissionsView(RepoGroupAppView):
for change in changes['added'] + changes['updated'] + changes['deleted']:
if change['type'] == 'user':
affected_user_ids.append(change['id'])
if change['type'] == 'user_group':
user_group = UserGroup.get(safe_int(change['id']))
if user_group:
group_members_ids = [x.user_id for x in user_group.members]
affected_user_ids.extend(group_members_ids)
events.trigger(events.UserPermissionsChange(affected_user_ids))

View file

@ -29,6 +29,8 @@ from rhodecode.lib import helpers as h
from rhodecode.lib import audit_logger
from rhodecode.lib.auth import (
LoginRequired, HasRepoPermissionAnyDecorator, CSRFRequired)
from rhodecode.lib.utils2 import safe_int
from rhodecode.model.db import UserGroup
from rhodecode.model.forms import RepoPermsForm
from rhodecode.model.meta import Session
from rhodecode.model.repo import RepoModel
@ -88,6 +90,11 @@ class RepoSettingsPermissionsView(RepoAppView):
for change in changes['added'] + changes['updated'] + changes['deleted']:
if change['type'] == 'user':
affected_user_ids.append(change['id'])
if change['type'] == 'user_group':
user_group = UserGroup.get(safe_int(change['id']))
if user_group:
group_members_ids = [x.user_id for x in user_group.members]
affected_user_ids.extend(group_members_ids)
events.trigger(events.UserPermissionsChange(affected_user_ids))

View file

@ -40,8 +40,8 @@ from rhodecode.apps._base import UserGroupAppView
from rhodecode.lib.auth import (
LoginRequired, HasUserGroupPermissionAnyDecorator, CSRFRequired)
from rhodecode.lib import helpers as h, audit_logger
from rhodecode.lib.utils2 import str2bool
from rhodecode.model.db import User
from rhodecode.lib.utils2 import str2bool, safe_int
from rhodecode.model.db import User, UserGroup
from rhodecode.model.meta import Session
from rhodecode.model.user_group import UserGroupModel
@ -377,6 +377,11 @@ class UserGroupsView(UserGroupAppView):
for change in changes['added'] + changes['updated'] + changes['deleted']:
if change['type'] == 'user':
affected_user_ids.append(change['id'])
if change['type'] == 'user_group':
user_group = UserGroup.get(safe_int(change['id']))
if user_group:
group_members_ids = [x.user_id for x in user_group.members]
affected_user_ids.extend(group_members_ids)
events.trigger(events.UserPermissionsChange(affected_user_ids))