diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 2519afc04..9b42c8960 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -310,7 +310,7 @@ class RepositoriesController < ApplicationController end def check_edit_and_destroy_permissions - render_403 unless can_manage_repository?(@team) + render_403 unless can_update_or_delete_repository?(@repository) end def repository_params diff --git a/app/permissions/team.rb b/app/permissions/team.rb index 24298fcb8..78f505033 100644 --- a/app/permissions/team.rb +++ b/app/permissions/team.rb @@ -38,7 +38,7 @@ Canaid::Permissions.register_for(Team) do user.is_normal_user_or_admin_of_team?(team) end - # create, copy, edit, destroy repository + # create, copy repository can :manage_repository do |user, team| user.is_admin_of_team?(team) end @@ -97,6 +97,13 @@ Canaid::Permissions.register_for(CustomField) do end end +Canaid::Permissions.register_for(Repository) do + # edit, destroy repository + can :update_or_delete_repository do |user, repository| + can_manage_repository?(user, repository.team) + end +end + Canaid::Permissions.register_for(RepositoryRow) do # update, delete specific repository record can :update_or_delete_repository_row do |user, repository_row| diff --git a/app/views/repositories/_repository.html.erb b/app/views/repositories/_repository.html.erb index c7f01d418..a9d1e1f49 100644 --- a/app/views/repositories/_repository.html.erb +++ b/app/views/repositories/_repository.html.erb @@ -43,12 +43,14 @@ -
  • - <%= link_to t('repositories.index.options_dropdown.rename'), - team_repository_rename_modal_path(repository_id: repository), - class: "rename-repo-option", - remote: true %> -
  • + <% if can_update_or_delete_repository?(repository) %> +
  • + <%= link_to t('repositories.index.options_dropdown.rename'), + team_repository_rename_modal_path(repository_id: repository), + class: "rename-repo-option", + remote: true %> +
  • + <% end %> <% if repository.team.repositories.count < Constants::REPOSITORIES_LIMIT %>
  • <%= link_to t('repositories.index.options_dropdown.copy'), @@ -57,13 +59,15 @@ remote: true %>
  • <% end %> - -
  • - <%= link_to t('repositories.index.modal_delete.delete'), - team_repository_destroy_modal_path(repository_id: repository), - class: "delete-repo-option", - remote: true %> -
  • + <% if can_update_or_delete_repository?(repository) %> + +
  • + <%= link_to t('repositories.index.modal_delete.delete'), + team_repository_destroy_modal_path(repository_id: repository), + class: "delete-repo-option", + remote: true %> +
  • + <% end %> <% end %>