Skip to content

Commit

Permalink
SPC-140 Allow collaborators to delete themselves
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathansberry committed Oct 12, 2023
1 parent d6e7a9a commit c96170c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
18 changes: 17 additions & 1 deletion ckanext/spectrum/authz.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,27 @@ def creators_manage_collaborators(next_auth, context, data_dict):

if package.creator_user_id == user_obj.id:
return {'success': True}

else:
return next_auth(context, data_dict)


@toolkit.chained_auth_function
def package_collaborator_delete(next_auth, context, data_dict):
"""
Explicitly ensures that dataset collaborators can delete themselves.
"""
model = context['model']
current_user = context['user']
requested_user = toolkit.get_or_bust(data_dict, 'user_id')
current_user_obj = model.User.get(current_user)
requested_user_obj = model.User.get(requested_user)

if current_user_obj.id == requested_user_obj.id:
return {'success': True}
else:
return creators_manage_collaborators(next_auth, context, data_dict)


@toolkit.auth_disallow_anonymous_access
def package_update(context, data_dict):
"""
Expand Down
4 changes: 2 additions & 2 deletions ckanext/spectrum/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ def get_auth_functions(self):
return {
'package_update': spectrum_authz.package_update,
'package_collaborator_create': spectrum_authz.creators_manage_collaborators,
'package_collaborator_delete': spectrum_authz.creators_manage_collaborators,
'package_collaborator_list': spectrum_authz.creators_manage_collaborators
'package_collaborator_list': spectrum_authz.creators_manage_collaborators,
'package_collaborator_delete': spectrum_authz.package_collaborator_delete
}

# IActions
Expand Down

0 comments on commit c96170c

Please sign in to comment.