mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-06 13:14:29 +08:00
refactor manage repository row permissions
This commit is contained in:
parent
740ecc674b
commit
079ac7a4d3
4 changed files with 31 additions and 39 deletions
|
@ -5,10 +5,7 @@ class RepositoryRowsController < ApplicationController
|
|||
|
||||
before_action :load_vars, only: %i(edit update)
|
||||
before_action :load_repository, only: %i(create delete_records)
|
||||
|
||||
before_action :check_create_permissions, only: :create
|
||||
before_action :check_edit_permissions, only: %i(edit update)
|
||||
before_action :check_destroy_permissions, only: :delete_records
|
||||
before_action :check_permissions
|
||||
|
||||
def create
|
||||
record = RepositoryRow.new(repository: @repository,
|
||||
|
@ -172,9 +169,7 @@ class RepositoryRowsController < ApplicationController
|
|||
if params[:selected_rows]
|
||||
params[:selected_rows].each do |row_id|
|
||||
row = @repository.repository_rows.find_by_id(row_id)
|
||||
if row && can_delete_repository_record(row)
|
||||
row.destroy && deleted_count += 1
|
||||
end
|
||||
row.destroy && deleted_count += 1 if row
|
||||
end
|
||||
if deleted_count.zero?
|
||||
flash = t('repositories.destroy.no_deleted_records_flash',
|
||||
|
@ -218,16 +213,8 @@ class RepositoryRowsController < ApplicationController
|
|||
render_404 unless @repository
|
||||
end
|
||||
|
||||
def check_create_permissions
|
||||
render_403 unless can_create_repository_records(@repository)
|
||||
end
|
||||
|
||||
def check_edit_permissions
|
||||
render_403 unless can_edit_repository_record(@record)
|
||||
end
|
||||
|
||||
def check_destroy_permissions
|
||||
render_403 unless can_delete_repository_records(@repository)
|
||||
def check_permissions
|
||||
render_403 unless can_manage_repository_row?(@repository.team)
|
||||
end
|
||||
|
||||
def record_params
|
||||
|
|
|
@ -1077,35 +1077,35 @@ module PermissionHelper
|
|||
is_admin_of_team(column.repository.team)
|
||||
end
|
||||
|
||||
def can_create_repository_records(repository)
|
||||
is_normal_user_or_admin_of_team(repository.team)
|
||||
end
|
||||
# def can_create_repository_records(repository)
|
||||
# is_normal_user_or_admin_of_team(repository.team)
|
||||
# end
|
||||
|
||||
def can_import_repository_records(repository)
|
||||
is_normal_user_or_admin_of_team(repository.team)
|
||||
end
|
||||
# def can_import_repository_records(repository)
|
||||
# is_normal_user_or_admin_of_team(repository.team)
|
||||
# end
|
||||
|
||||
def can_edit_repository_record(record)
|
||||
is_normal_user_or_admin_of_team(record.repository.team)
|
||||
end
|
||||
# def can_edit_repository_record(record)
|
||||
# is_normal_user_or_admin_of_team(record.repository.team)
|
||||
# end
|
||||
|
||||
def can_delete_repository_records(repository)
|
||||
is_normal_user_or_admin_of_team(repository.team)
|
||||
end
|
||||
# def can_delete_repository_records(repository)
|
||||
# is_normal_user_or_admin_of_team(repository.team)
|
||||
# end
|
||||
|
||||
def can_delete_repository_record(record)
|
||||
team = record.repository.team
|
||||
is_admin_of_team(team) || (is_normal_user_of_team(team) &&
|
||||
record.created_by == current_user)
|
||||
end
|
||||
# def can_delete_repository_record(record)
|
||||
# team = record.repository.team
|
||||
# is_admin_of_team(team) || (is_normal_user_of_team(team) &&
|
||||
# record.created_by == current_user)
|
||||
# end
|
||||
|
||||
def can_assign_repository_records(my_module, repository)
|
||||
can_delete_repository_records(repository) &&
|
||||
is_normal_user_or_admin_of_team(repository.team) &&
|
||||
is_technician_or_higher_of_project(my_module.experiment.project)
|
||||
end
|
||||
|
||||
def can_unassign_repository_records(my_module, repository)
|
||||
can_delete_repository_records(repository) &&
|
||||
is_normal_user_or_admin_of_team(repository.team) &&
|
||||
is_technician_or_higher_of_project(my_module.experiment.project)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -34,6 +34,11 @@ Canaid::Permissions.register_for(Team) do
|
|||
can :manage_sample_elements do |user, team|
|
||||
user.is_normal_user_or_admin_of_team?(team)
|
||||
end
|
||||
|
||||
# create, import, edit, delete repository record
|
||||
can :manage_repository_row do |user, team|
|
||||
user.is_normal_user_or_admin_of_team?(team)
|
||||
end
|
||||
end
|
||||
|
||||
Canaid::Permissions.register_for(UserTeam) do
|
||||
|
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
<div id="repository-toolbar">
|
||||
|
||||
<% if can_create_repository_records(repository) %>
|
||||
<% if can_manage_repository_row?(repository.team) %>
|
||||
<button type="button" class="btn btn-default editAdd" id="addRepositoryRecord" onclick="onClickAddRecord()">
|
||||
<span class="glyphicon glyphicon-plus"></span>
|
||||
<span class="hidden-xs"><%= t("repositories.add_new_record") %></span>
|
||||
</button>
|
||||
<% end %>
|
||||
<% if can_import_repository_records(repository) %>
|
||||
<% if can_manage_repository_row?(repository.team) %>
|
||||
<button type="button" class="btn btn-default" id="importRecordsButton">
|
||||
<span class="glyphicon glyphicon-cloud-upload"></span>
|
||||
<span class="hidden-xs"><%= t('repositories.import_records.import') %></span>
|
||||
|
@ -117,7 +117,7 @@
|
|||
<span class="hidden-xs-custom"><%= t("repositories.edit_record") %></span>
|
||||
</button>
|
||||
|
||||
<% if can_delete_repository_records(repository) %>
|
||||
<% if can_manage_repository_row?(repository.team) %>
|
||||
<button type="button" class="btn btn-default"
|
||||
id="deleteRepositoryRecordsButton" data-target="#deleteRepositoryRecord" data-toggle="modal" disabled>
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
|
|
Loading…
Add table
Reference in a new issue