Sha256: 2ee9e2fc654a7391e0f231cd5bf19d37a7cce542e2eac24750f1551d30f4c0f3

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

module Typus
  module Orm
    module ActiveRecord
      module User
        module InstanceMethods

          def to_label
            email
          end

          def resources
            Typus::Configuration.roles[role.to_s].compact
          end

          def models
            Typus.models.delete_if { |m| cannot?('read', m) }
          end

          def applications
            Typus.applications.delete_if { |a| application(a).empty? }
          end

          def application(name)
            Typus.application(name).delete_if { |r| !resources.keys.include?(r) }
          end

          def can?(action, resource, options = {})
            resource = resource.model_name if resource.is_a?(Class)

            return false if !resources.include?(resource)
            return true if resources[resource].include?("all")

            action = options[:special] ? action : action.acl_action_mapper

            resources[resource].extract_settings.include?(action)
          end

          def cannot?(*args)
            !can?(*args)
          end

          def is_root?
            role == Typus.master_role
          end

          def is_not_root?
            !is_root?
          end

          def locale
            (preferences && preferences[:locale]) ? preferences[:locale] : ::I18n.default_locale
          end

          def locale=(locale)
            self.preferences ||= {}
            self.preferences[:locale] = locale
          end

          def owns?(resource)
            id == resource.send(Typus.user_foreign_key)
          end

        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
typus-3.1.0.rc17 lib/typus/orm/active_record/user/instance_methods.rb
typus-3.1.0.rc16 lib/typus/orm/active_record/user/instance_methods.rb
typus-3.1.0.rc15 lib/typus/orm/active_record/user/instance_methods.rb