Sha256: d85becddcddbb409ffb2fa9215126a38a8ec07ed712ef48f69ff87d9c973e8e5
Contents?: true
Size: 907 Bytes
Versions: 3
Compression:
Stored size: 907 Bytes
Contents
require "set" require "virtus" module Ddr::Auth module Roles # # Wraps a set of Roles # class RoleSet include Virtus.model include Enumerable include ActiveModel::Serializers::JSON attribute :roles, Set[Role] delegate :where, :agent, :scope, :role_type, :in_policy_scope, :in_resource_scope, to: :query delegate :each, :empty?, :clear, to: :roles def self.from_json(json) new.from_json(json.present? ? json : "{}") end def ==(other) instance_of?(other.class) && self.roles == other.roles end def merge(other) self.roles += other.roles self end def permissions map(&:permissions).flatten.uniq end def agents map(&:agent).uniq end def query RoleSetQuery.new(self) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ddr-models-3.0.0.beta.3 | lib/ddr/auth/roles/role_set.rb |
ddr-models-3.0.0.beta.2 | lib/ddr/auth/roles/role_set.rb |
ddr-models-3.0.0.beta.1 | lib/ddr/auth/roles/role_set.rb |