Sha256: f31e4ce9c265dd1cb7048de025b72c902a0f14f532ca8c60679a14402902e673
Contents?: true
Size: 797 Bytes
Versions: 1
Compression:
Stored size: 797 Bytes
Contents
# frozen_string_literal: true require "singleton" module Miau class PolicyStorage include Singleton attr_reader :policies def initialize @policies = {} end def run(klass, action, user, resource) policy = policy(klass, user, resource) raise Miau::NotDefinedError unless policy.respond_to?(action) policy.send(action) end private def policy(klass, user, resource) result = @policies[klass] if result result.user = user result.resource = resource return result end create_policy(klass, user, resource) end def create_policy(klass, user, resource) str = "#{klass}Policy" result = str.constantize.new(user, resource) @policies[klass] = result end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
miau-0.1.1 | lib/miau/storage.rb |