# frozen_string_literal: true Canaid::Permissions.register_for(Asset) do can :read_asset do |user, asset| object = asset.step || asset.result || asset.repository_cell case object when Step protocol = object.protocol can_read_protocol_in_module?(user, protocol) || can_read_protocol_in_repository?(user, protocol) when Result can_read_result?(user, object) when RepositoryCell can_read_repository?(user, object.repository_column.repository) end end can :manage_asset do |user, asset| object = asset.step || asset.result || asset.repository_cell case object when Step can_manage_step?(user, object) when Result can_manage_result?(user, object) when RepositoryCell if object.repository_column.repository.is_a?(RepositorySnapshot) false else object.repository_row.active? && can_manage_repository_assets?(user, object.repository_column.repository) end end end can :restore_asset do |user, asset| VersionedAttachments.enabled? && can_manage_asset?(user, asset) end can :open_asset_locally do |_user, asset| ENV['ASSET_SYNC_URL'].present? end end