2020-10-22 13:41:17 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
Canaid::Permissions.register_for(Asset) do
|
|
|
|
can :read_asset do |user, asset|
|
2020-10-29 14:59:14 +01:00
|
|
|
object = asset.step || asset.result || asset.repository_cell
|
2020-10-22 13:41:17 +02:00
|
|
|
|
2020-10-29 14:59:14 +01:00
|
|
|
case object
|
|
|
|
when Step
|
2020-10-22 13:41:17 +02:00
|
|
|
protocol = object.protocol
|
|
|
|
can_read_protocol_in_module?(user, protocol) || can_read_protocol_in_repository?(user, protocol)
|
2020-10-29 14:59:14 +01:00
|
|
|
when Result
|
2020-12-14 12:50:54 +01:00
|
|
|
can_read_result?(object)
|
2020-10-29 14:59:14 +01:00
|
|
|
when RepositoryCell
|
2020-10-22 13:41:17 +02:00
|
|
|
can_read_repository?(user, object.repository_column.repository)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
can :manage_asset do |user, asset|
|
2020-10-29 14:59:14 +01:00
|
|
|
object = asset.step || asset.result || asset.repository_cell
|
2020-10-22 13:41:17 +02:00
|
|
|
|
2020-10-29 14:59:14 +01:00
|
|
|
case object
|
|
|
|
when Step
|
2021-11-19 13:24:57 +01:00
|
|
|
can_manage_step?(user, object)
|
2020-10-29 14:59:14 +01:00
|
|
|
when Result
|
2022-08-09 17:43:27 +02:00
|
|
|
can_manage_result?(user, object)
|
2020-10-29 14:59:14 +01:00
|
|
|
when RepositoryCell
|
2021-06-15 13:16:51 +02:00
|
|
|
if object.repository_column.repository.is_a?(RepositorySnapshot)
|
|
|
|
false
|
|
|
|
else
|
2022-04-25 12:18:01 +02:00
|
|
|
can_manage_repository_assets?(user, object.repository_column.repository)
|
2021-06-15 13:16:51 +02:00
|
|
|
end
|
2020-10-22 13:41:17 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|