class Doorkeeper::OAuth::Scopes

Constants

DYNAMIC_SCOPE_WILDCARD

Public Class Methods

from_array(array) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 18
def self.from_array(array)
  new.tap do |scope|
    scope.add(*array)
  end
end
from_string(string) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 11
def self.from_string(string)
  string ||= ""
  new.tap do |scope|
    scope.add(*string.split)
  end
end
new() click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 26
def initialize
  @scopes = []
end

Public Instance Methods

&(other) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 73
def &(other)
  self.class.from_array(all & to_array(other))
end
+(other) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 61
def +(other)
  self.class.from_array(all + to_array(other))
end
<=>(other) click to toggle source
Calls superclass method
# File lib/doorkeeper/oauth/scopes.rb, line 65
def <=>(other)
  if other.respond_to?(:map)
    map(&:to_s).sort <=> other.map(&:to_s).sort
  else
    super
  end
end
add(*scopes) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 42
def add(*scopes)
  @scopes.push(*scopes.map(&:to_s))
  @scopes.uniq!
end
all() click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 47
def all
  @scopes
end
exists?(scope) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 30
def exists?(scope)
  scope = scope.to_s

  @scopes.any? do |allowed_scope|
    if dynamic_scopes_enabled? && dynamic_scopes_present?(allowed_scope, scope)
      dynamic_scope_match?(allowed_scope, scope)
    else
      allowed_scope == scope
    end
  end
end
has_scopes?(scopes)
Alias for: scopes?
scopes?(scopes) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 55
def scopes?(scopes)
  scopes.all? { |scope| exists?(scope) }
end
Also aliased as: has_scopes?
to_s() click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 51
def to_s
  @scopes.join(" ")
end

Private Instance Methods

dynamic_scope_delimiter() click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 83
def dynamic_scope_delimiter
  return unless dynamic_scopes_enabled?

  @dynamic_scope_delimiter ||= Doorkeeper.config.dynamic_scopes_delimiter
end
dynamic_scope_match?(allowed, requested) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 93
def dynamic_scope_match?(allowed, requested)
  allowed_pattern = allowed.split(dynamic_scope_delimiter, 2)
  request_pattern = requested.split(dynamic_scope_delimiter, 2)

  return false if allowed_pattern[0] != request_pattern[0]
  return false if allowed_pattern[1].blank?
  return false if request_pattern[1].blank?
  return true  if allowed_pattern[1] == DYNAMIC_SCOPE_WILDCARD && allowed_pattern[1].present?

  allowed_pattern[1] == request_pattern[1]
end
dynamic_scopes_enabled?() click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 79
def dynamic_scopes_enabled?
  Doorkeeper.config.enable_dynamic_scopes?
end
dynamic_scopes_present?(allowed, requested) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 89
def dynamic_scopes_present?(allowed, requested)
  allowed.include?(dynamic_scope_delimiter) && requested.include?(dynamic_scope_delimiter)
end
to_array(other) click to toggle source
# File lib/doorkeeper/oauth/scopes.rb, line 105
def to_array(other)
  case other
  when Scopes
    other.all
  else
    other.to_a
  end
end