gitlab-org--gitlab-foss/lib/declarative_policy/cache.rb

38 lines
694 B
Ruby
Raw Normal View History

2017-04-06 17:06:24 -04:00
module DeclarativePolicy
module Cache
class << self
def user_key(user)
return '<anonymous>' if user.nil?
2017-04-06 17:06:24 -04:00
id_for(user)
end
def policy_key(user, subject)
u = user_key(user)
s = subject_key(subject)
"/dp/policy/#{u}/#{s}"
end
def subject_key(subject)
return '<nil>' if subject.nil?
return subject.inspect if subject.is_a?(Symbol)
2017-04-06 17:06:24 -04:00
"#{subject.class.name}:#{id_for(subject)}"
end
private
def id_for(obj)
2017-07-17 13:43:55 -04:00
id =
begin
obj.id
rescue NoMethodError
nil
end
id || "##{obj.object_id}"
2017-04-06 17:06:24 -04:00
end
end
end
end