mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-06 21:24:23 +08:00
refactor update protocol type in repository
This commit is contained in:
parent
806fcbce36
commit
f6d36ae6a2
5 changed files with 42 additions and 32 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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?
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue