Sha256: 6d9d15137b42f2535bbe5eafb0d2fe6b62af3bd76125b232204f1cdbc5504729

Contents?: true

Size: 1.47 KB

Versions: 57

Compression:

Stored size: 1.47 KB

Contents

require 'model/flag_from_time_range_concern'

module Cmor::Rbac
  class Permission < ActiveRecord::Base
    include Model::FlagFromTimeRangeConcern

    DEFAULTS = {
      enabled_from: '01.01.1900 00:00:00',
      enabled_to:   '31.12.9999 23:59:59'
    }

    # associations
    has_many :role_permissions, class_name: 'Cmor::Rbac::RolePermission', dependent: :destroy
    has_many :roles, class_name: 'Cmor::Rbac::Role', through: :role_permissions
    has_many :user_roles, through: :roles, class_name: 'Cmor::Rbac::UserRole'
    has_many :users, through: :user_roles, class_name: Cmor::Rbac::Configuration.user_class_name

    has_many :enabled_roles, -> { enabled }, class_name: 'Cmor::Rbac::Role', through: :role_permissions, source: :permission
    has_many :enabled_user_roles, class_name: 'Cmor::Rbac::UserRole', through: :enabled_roles, source: :role_permissions

    has_many :enabled_users, through: :enabled_user_roles, class_name: Cmor::Rbac::Configuration.user_class_name, source: :user

    flag_from_time_range :enabled?

    # validations
    validates :identifier, presence: true, uniqueness: true
    validates :enabled_from, presence: true
    validates :enabled_to, presence: true

    # callbacks
    after_initialize :set_defaults

    def human
      "#{self.class.model_name.human}: #{identifier}"
    end

    private

    def set_defaults
      return if persisted?
      self.enabled_from = DEFAULTS[:enabled_from]
      self.enabled_to = DEFAULTS[:enabled_to]
    end
  end
end

Version data entries

57 entries across 57 versions & 1 rubygems

Version Path
cmor_rbac-0.0.60.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.59.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.58.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.57.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.56.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.55.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.54.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.53.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.52.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.51.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.50.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.49.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.48.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.45.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.44.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.43.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.42.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.41.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.40.pre app/models/cmor/rbac/permission.rb
cmor_rbac-0.0.39.pre app/models/cmor/rbac/permission.rb