refactor update protocol type in repository

This commit is contained in:
mlorb 2017-12-06 18:40:49 +01:00
parent 806fcbce36
commit f6d36ae6a2
5 changed files with 42 additions and 32 deletions

View file

@ -1,9 +1,9 @@
GIT
remote: https://github.com/biosistemika/canaid
revision: 8014ee3f017fe2446b74121fdbd3253aec645932
revision: 96366be967aa9770ea23f606ded803233913557e
branch: master
specs:
canaid (0.0.1)
canaid (1.0.0)
devise (>= 3.4.1)
rails (>= 4)

View file

@ -1014,7 +1014,8 @@ class ProtocolsController < ApplicationController
def check_make_private_permissions
@protocols = Protocol.where(id: params[:protocol_ids])
@protocols.find_each do |protocol|
unless can_make_protocol_private(protocol) then
if !protocol.in_repository_public? ||
!can_update_protocol_type_in_repository?(protocol)
respond_to { |f| f.json { render json: {}, status: :unauthorized } }
return
end
@ -1024,7 +1025,8 @@ class ProtocolsController < ApplicationController
def check_publish_permissions
@protocols = Protocol.where(id: params[:protocol_ids])
@protocols.find_each do |protocol|
unless can_publish_protocol(protocol) then
if !protocol.in_repository_private? ||
!can_update_protocol_type_in_repository?(protocol)
respond_to { |f| f.json { render json: {}, status: :unauthorized } }
return
end
@ -1034,7 +1036,8 @@ class ProtocolsController < ApplicationController
def check_archive_permissions
@protocols = Protocol.where(id: params[:protocol_ids])
@protocols.find_each do |protocol|
unless can_archive_protocol(protocol) then
if protocol.in_repository_archived? ||
!can_update_protocol_type_in_repository?(protocol)
respond_to { |f| f.json { render json: {}, status: :unauthorized } }
return
end
@ -1044,7 +1047,8 @@ class ProtocolsController < ApplicationController
def check_restore_permissions
@protocols = Protocol.where(id: params[:protocol_ids])
@protocols.find_each do |protocol|
unless can_restore_protocol(protocol) then
if protocol.in_repository_active? ||
!can_update_protocol_type_in_repository?(protocol)
respond_to { |f| f.json { render json: {}, status: :unauthorized } }
return
end

View file

@ -7,10 +7,7 @@ class ProtocolsDatatable < CustomDatatable
def_delegator :@view, :edit_protocol_path
def_delegator :@view, :can_clone_protocol
def_delegator :@view, :clone_protocol_path
def_delegator :@view, :can_make_protocol_private
def_delegator :@view, :can_publish_protocol
def_delegator :@view, :can_archive_protocol
def_delegator :@view, :can_restore_protocol
def_delegator :@view, :can_update_protocol_type_in_repository?
def_delegator :@view, :can_read_protocol_in_repository?
def_delegator :@view, :linked_children_protocol_path
def_delegator :@view, :preview_protocol_path
@ -97,10 +94,14 @@ class ProtocolsDatatable < CustomDatatable
team: @team,
type: @type)
end,
'DT_CanMakePrivate': can_make_protocol_private(protocol),
'DT_CanPublish': can_publish_protocol(protocol),
'DT_CanArchive': can_archive_protocol(protocol),
'DT_CanRestore': can_restore_protocol(protocol),
'DT_CanMakePrivate': protocol.in_repository_public? &&
can_update_protocol_type_in_repository?(protocol),
'DT_CanPublish': protocol.in_repository_private? &&
can_update_protocol_type_in_repository?(protocol),
'DT_CanArchive': protocol.in_repository_active? &&
can_update_protocol_type_in_repository?(protocol),
'DT_CanRestore': protocol.in_repository_archived? &&
can_update_protocol_type_in_repository?(protocol),
'DT_CanExport': can_read_protocol_in_repository?(protocol),
'1': if protocol.in_repository_archived?
escape_input(record.name)

View file

@ -733,15 +733,15 @@ module PermissionHelper
)
end
def can_make_protocol_private(protocol)
protocol.added_by == current_user and
protocol.in_repository_public?
end
# def can_make_protocol_private(protocol)
# protocol.added_by == current_user and
# protocol.in_repository_public?
# end
def can_publish_protocol(protocol)
protocol.added_by == current_user and
protocol.in_repository_private?
end
# def can_publish_protocol(protocol)
# protocol.added_by == current_user and
# protocol.in_repository_private?
# end
def can_export_protocol(protocol) # WIP
(protocol.in_repository_public? and is_member_of_team(protocol.team)) or # DONE
@ -750,15 +750,15 @@ module PermissionHelper
can_export_protocol_from_module(protocol.my_module))
end
def can_archive_protocol(protocol)
protocol.added_by == current_user and
(protocol.in_repository_public? or protocol.in_repository_private?)
end
# def can_archive_protocol(protocol)
# protocol.added_by == current_user and
# (protocol.in_repository_public? or protocol.in_repository_private?)
# end
def can_restore_protocol(protocol)
protocol.added_by == current_user and
protocol.in_repository_archived?
end
# def can_restore_protocol(protocol)
# protocol.added_by == current_user and
# protocol.in_repository_archived?
# end
def can_unlink_protocol(protocol)
if protocol.linked?

View file

@ -44,8 +44,13 @@ Canaid::Permissions.register_for(Protocol) do
# edit protocol in repository,
# create, edit, delete or reorder step in repository
can :update_protocol_in_repository do |user, protocol|
protocol.in_repository_active? &&
can_update_protocol_type_in_repository?(user, protocol)
end
# toggle protocol visibility (public, private, archive, restore)
can :update_protocol_type_in_repository do |user, protocol|
user.is_normal_user_or_admin_of_team?(protocol.team) &&
user == protocol.added_by &&
protocol.in_repository_active?
user == protocol.added_by
end
end