permissions: flush permissions on owner changes for repo and repo groups.
This commit is contained in:
parent
c0254f7952
commit
ae9f4779d2
2 changed files with 23 additions and 2 deletions
|
|
@ -46,6 +46,7 @@ from rhodecode.model.db import (
|
|||
Session, Repository, UserRepoToPerm, UserGroupRepoToPerm,
|
||||
UserRepoGroupToPerm, UserGroupRepoGroupToPerm, User, Permission,
|
||||
Statistics, UserGroup, RepoGroup, RepositoryField, UserLog)
|
||||
from rhodecode.model.permission import PermissionModel
|
||||
from rhodecode.model.settings import VcsSettingsModel
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
|
@ -422,8 +423,15 @@ class RepoModel(BaseModel):
|
|||
try:
|
||||
cur_repo = self._get_repo(repo)
|
||||
source_repo_name = cur_repo.repo_name
|
||||
|
||||
affected_user_ids = []
|
||||
if 'user' in kwargs:
|
||||
cur_repo.user = User.get_by_username(kwargs['user'])
|
||||
old_owner_id = cur_repo.user.user_id
|
||||
new_owner = User.get_by_username(kwargs['user'])
|
||||
cur_repo.user = new_owner
|
||||
|
||||
if old_owner_id != new_owner.user_id:
|
||||
affected_user_ids = [new_owner.user_id, old_owner_id]
|
||||
|
||||
if 'repo_group' in kwargs:
|
||||
cur_repo.group = RepoGroup.get(kwargs['repo_group'])
|
||||
|
|
@ -474,6 +482,9 @@ class RepoModel(BaseModel):
|
|||
self._rename_filesystem_repo(
|
||||
old=source_repo_name, new=new_name)
|
||||
|
||||
if affected_user_ids:
|
||||
PermissionModel().trigger_permission_flush(affected_user_ids)
|
||||
|
||||
return cur_repo
|
||||
except Exception:
|
||||
log.error(traceback.format_exc())
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ from rhodecode.model import BaseModel
|
|||
from rhodecode.model.db import (_hash_key, func, or_, in_filter_generator,
|
||||
Session, RepoGroup, UserRepoGroupToPerm, User, Permission, UserGroupRepoGroupToPerm,
|
||||
UserGroup, Repository)
|
||||
from rhodecode.model.permission import PermissionModel
|
||||
from rhodecode.model.settings import VcsSettingsModel, SettingsModel
|
||||
from rhodecode.lib.caching_query import FromCache
|
||||
from rhodecode.lib.utils2 import action_logger_generic
|
||||
|
|
@ -531,8 +532,14 @@ class RepoGroupModel(BaseModel):
|
|||
|
||||
new_path = repo_group.full_path
|
||||
|
||||
affected_user_ids = []
|
||||
if 'user' in form_data:
|
||||
repo_group.user = User.get_by_username(form_data['user'])
|
||||
old_owner_id = repo_group.user.user_id
|
||||
new_owner = User.get_by_username(form_data['user'])
|
||||
repo_group.user = new_owner
|
||||
|
||||
if old_owner_id != new_owner.user_id:
|
||||
affected_user_ids = [new_owner.user_id, old_owner_id]
|
||||
|
||||
self.sa.add(repo_group)
|
||||
|
||||
|
|
@ -566,6 +573,9 @@ class RepoGroupModel(BaseModel):
|
|||
# Trigger update event.
|
||||
events.trigger(events.RepoGroupUpdateEvent(repo_group))
|
||||
|
||||
if affected_user_ids:
|
||||
PermissionModel().trigger_permission_flush(affected_user_ids)
|
||||
|
||||
return repo_group
|
||||
except Exception:
|
||||
log.error(traceback.format_exc())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue