travis-api/lib/travis/api/v3/access_control/generic.rb
2015-02-23 16:50:51 +01:00

69 lines
1.4 KiB
Ruby

module Travis::API::V3
class AccessControl::Generic
def self.for_request(type, payload, env)
end
def self.auth_type(*list)
list.each { |e| (AccessControl::REGISTER[e] ||= []) << self }
end
def visible?(object)
full_access? or dispatch(object)
end
def user
end
def logged_in?
false
end
protected
def build_visible?(build)
visible? build.repository
end
def organization_visible?(organization)
unrestricted_api?
end
def repository_visible?(repository)
return true if unrestricted_api? and not repository.private?
private_repository_visible?(repository)
end
def private_repository_visible?(repository)
false
end
def full_access?
false
end
def public_api?
!Travis.config.private_api
end
def unrestricted_api?
full_access? or logged_in? or public_api?
end
private
def dispatch(object, method = caller_locations.first.base_label)
method = method_for(object.class, method)
send(method, object) if respond_to?(method, true)
end
@@method_for_cache = Tool::ThreadLocal.new
def method_for(type, method)
@@method_for_cache[[type, method]] ||= begin
prefix = type.name.sub(/^Travis::API::V3::Models::/, ''.freeze).underscore
"#{prefix}_#{method}"
end
end
end
end