openjaf/cenit

View on GitHub
app/models/concerns/cross_origin/cenit_document.rb

Summary

Maintainability
A
1 hr
Test Coverage

module CrossOrigin
  module CenitDocument
    extend ActiveSupport::Concern

    include CrossOrigin::Document

    def can_cross?(origin)
      (self.origin != :shared || ::User.current_cross_shared?) && super
    end

    module ClassMethods
      def cross_origins
        if @origins
          @origins.collect do |origin|
            if origin.respond_to?(:call)
              origin.call
            else
              origin
            end
          end.flatten.uniq.compact.collect do |origin|
            if origin.is_a?(Symbol)
              origin
            else
              origin.to_s.to_sym
            end
          end.uniq
        elsif superclass.include?(CrossOrigin::CenitDocument)
          superclass.origins
        elsif superclass.include?(CrossOrigin::Document)
          superclass.origins
        else
          CrossOrigin.names
        end
      end
    end
  end
end