diff --git a/kallithea/controllers/admin/repos.py b/kallithea/controllers/admin/repos.py --- a/kallithea/controllers/admin/repos.py +++ b/kallithea/controllers/admin/repos.py @@ -318,6 +318,7 @@ class ReposController(BaseRepoController encoding="UTF-8", force_defaults=False) + @HasRepoPermissionLevelDecorator('admin') def edit_permissions_update(self, repo_name): form = RepoPermsForm()().to_python(request.POST) RepoModel()._update_permissions(repo_name, form['perms_new'], @@ -329,6 +330,7 @@ class ReposController(BaseRepoController h.flash(_('Repository permissions updated'), category='success') raise HTTPFound(location=url('edit_repo_perms', repo_name=repo_name)) + @HasRepoPermissionLevelDecorator('admin') def edit_permissions_revoke(self, repo_name): try: obj_type = request.POST.get('obj_type') diff --git a/kallithea/tests/functional/test_admin_permissions.py b/kallithea/tests/functional/test_admin_permissions.py --- a/kallithea/tests/functional/test_admin_permissions.py +++ b/kallithea/tests/functional/test_admin_permissions.py @@ -82,8 +82,7 @@ class TestAdminPermissionsController(Tes def test_edit_permissions_permissions(self): user = User.get_by_username(TEST_USER_REGULAR_LOGIN) - # Test unauthenticated access - # FIXME: access without authentication + # Test unauthenticated access - it will redirect to login page response = self.app.post( url('edit_repo_perms_update', repo_name=HG_REPO), params=dict( @@ -93,17 +92,18 @@ class TestAdminPermissionsController(Tes _authentication_token=self.authentication_token()), status=302) - assert response.location.endswith(url('edit_repo_perms_update', repo_name=HG_REPO)) + assert not response.location.endswith(url('edit_repo_perms_update', repo_name=HG_REPO)) + assert response.location.endswith(url('login_home', came_from=url('edit_repo_perms_update', repo_name=HG_REPO))) - # FIXME: access without authentication response = self.app.post( url('edit_repo_perms_revoke', repo_name=HG_REPO), params=dict( obj_type='user', user_id=user.user_id, _authentication_token=self.authentication_token()), - status=204) # success has no content - assert not response.body + status=302) + + assert response.location.endswith(url('login_home', came_from=url('edit_repo_perms_revoke', repo_name=HG_REPO))) # Test authenticated access self.log_user()