class AuthScope
Constants
- VERSION
Public Class Methods
new(*scopes)
click to toggle source
# File lib/auth_scope.rb, line 2 def initialize(*scopes) @tree = {} scopes.join(" ").split(" ").each{|s| add(s) } end
Public Instance Methods
add(scope_string)
click to toggle source
# File lib/auth_scope.rb, line 7 def add(scope_string) roots = [@tree] scope_string.split(":").each do |parts| roots = parts.split(",").map do |part| roots.map{|r| r[part.to_s] ||= {}; r[part.to_s]} end.flatten end end
all?(*scopes)
click to toggle source
# File lib/auth_scope.rb, line 39 def all?(*scopes) scopes = scopes.join(" ").split(" ") scopes.each{|scope| return false unless can?(scope) } true end
any?(*scopes)
click to toggle source
# File lib/auth_scope.rb, line 34 def any?(*scopes) scopes = scopes.join(" ").split(" ") !!scopes.detect{|scope| can?(scope)} end
can?(*args)
click to toggle source
# File lib/auth_scope.rb, line 17 def can?(*args) subject = subject.respond_to?(:to_scope) ? subject.to_scope : subject.to_s parts = args.map{|arg| (arg.respond_to?(:to_scope) ? arg.to_scope : arg.to_s).split(":") }.flatten.map(&:to_s) roots = [@tree] parts.each do |part| return true if roots.detect{|r| r.key?('**')} is_last = part == parts.last if roots.detect{|r| r.key?('*')} roots = roots.map{|r| [r[part], r['*']].compact }.flatten else return false unless roots.detect{|r| r.key?(part)} roots = roots.map{|r| r[part] }.flatten end end true end