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
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

View file

@ -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|

View file

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