Sha256: eb58e15252e49ba25f8fcf3f314f9d9db8bc3aa2fbe6ebeb8d33eb15839782c1

Contents?: true

Size: 850 Bytes

Versions: 1

Compression:

Stored size: 850 Bytes

Contents

module TheRole
  module UserModel
    include TheRole::Base
    include TheRole::ParamHelper
    def role_hash; @role_hash ||= role.to_hash; end

    # FALSE if object is nil
    # If object is a USER - check for youself
    # Check for owner field - :user_id
    # Check for owner _object_ if owner field is not :user_id
    def owner? obj
      return false unless obj
      return true  if admin?

      section_name = obj.class.to_s.tableize
      return true  if moderator?(section_name)

      return id == obj.id          if obj.is_a?(User)
      return id == obj[:user_id]   if obj[:user_id]
      return id == obj[:user][:id] if obj[:user]
      false
    end

    def self.included(base)
      base.class_eval do
        belongs_to :role
        after_save { |user| user.instance_variable_set(:@role_hash, nil) }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
the_role-1.7.0 lib/the_role/modules/user_model.rb