refactor manage repository permissions again because of addons

This commit is contained in:
mlorb 2018-01-05 11:17:01 +01:00
parent ec851caa80
commit 70ae14a9b8
3 changed files with 26 additions and 15 deletions

View file

@ -310,7 +310,7 @@ class RepositoriesController < ApplicationController
end end
def check_edit_and_destroy_permissions def check_edit_and_destroy_permissions
render_403 unless can_manage_repository?(@team) render_403 unless can_update_or_delete_repository?(@repository)
end end
def repository_params def repository_params

View file

@ -38,7 +38,7 @@ Canaid::Permissions.register_for(Team) do
user.is_normal_user_or_admin_of_team?(team) user.is_normal_user_or_admin_of_team?(team)
end end
# create, copy, edit, destroy repository # create, copy repository
can :manage_repository do |user, team| can :manage_repository do |user, team|
user.is_admin_of_team?(team) user.is_admin_of_team?(team)
end end
@ -97,6 +97,13 @@ Canaid::Permissions.register_for(CustomField) do
end end
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 Canaid::Permissions.register_for(RepositoryRow) do
# update, delete specific repository record # update, delete specific repository record
can :update_or_delete_repository_row do |user, repository_row| can :update_or_delete_repository_row do |user, repository_row|

View file

@ -43,12 +43,14 @@
<li class="dropdown-header"> <li class="dropdown-header">
<%= t("repositories.index.options_dropdown.header") %> <%= t("repositories.index.options_dropdown.header") %>
</li> </li>
<li> <% if can_update_or_delete_repository?(repository) %>
<%= link_to t('repositories.index.options_dropdown.rename'), <li>
team_repository_rename_modal_path(repository_id: repository), <%= link_to t('repositories.index.options_dropdown.rename'),
class: "rename-repo-option", team_repository_rename_modal_path(repository_id: repository),
remote: true %> class: "rename-repo-option",
</li> remote: true %>
</li>
<% end %>
<% if repository.team.repositories.count < Constants::REPOSITORIES_LIMIT %> <% if repository.team.repositories.count < Constants::REPOSITORIES_LIMIT %>
<li> <li>
<%= link_to t('repositories.index.options_dropdown.copy'), <%= link_to t('repositories.index.options_dropdown.copy'),
@ -57,13 +59,15 @@
remote: true %> remote: true %>
</li> </li>
<% end %> <% end %>
<li role="separator" class="divider"></li> <% if can_update_or_delete_repository?(repository) %>
<li> <li role="separator" class="divider"></li>
<%= link_to t('repositories.index.modal_delete.delete'), <li>
team_repository_destroy_modal_path(repository_id: repository), <%= link_to t('repositories.index.modal_delete.delete'),
class: "delete-repo-option", team_repository_destroy_modal_path(repository_id: repository),
remote: true %> class: "delete-repo-option",
</li> remote: true %>
</li>
<% end %>
</ul> </ul>
<% end %> <% end %>
</div> </div>