29 lines
831 B
Ruby
29 lines
831 B
Ruby
require 'travis/api/v3/access_control/generic'
|
|
|
|
module Travis::API::V3
|
|
class AccessControl::Scoped < AccessControl::Generic
|
|
attr_accessor :unscoped, :anonymous, :owner_name, :name
|
|
|
|
def initialize(scope, unscoped)
|
|
@owner_name, @name = scope.split(?/.freeze, 2)
|
|
@unscoped = unscoped
|
|
@anonymous = AccessControl::Anonymous.new
|
|
end
|
|
|
|
protected
|
|
|
|
def private_repository_visible?(repository)
|
|
scope_repository(repository).visible?(repository)
|
|
end
|
|
|
|
def repository_writable?(repository)
|
|
scope_repository(repository).writable?(repository)
|
|
end
|
|
|
|
def scope_repository(repository, method = caller_locations.first.base_label)
|
|
return false if name and repository.name != name
|
|
repository.owner_name == owner_name ? unscoped : anonymous
|
|
end
|
|
end
|
|
end
|