Sha256: 1f4a6939b6d2371435ce4e6be4e1fdd681073c15c4ba56203c356cf5d02817d3

Contents?: true

Size: 1.67 KB

Versions: 15

Compression:

Stored size: 1.67 KB

Contents

module Gluttonberg  
    # A mixin that will add simple authorization functionality to any arbitrary 
    # model. This includes finders for retrieving authorized records and 
    # instance methods for quickly changing the state.
    module Authorizable
      # Add the class and instance methods, declare the relationship we store the
      # published state in.
      def self.included(klass)
        klass.class_eval do
          extend ClassMethods
          include InstanceMethods
          
          belongs_to :user , :class_name => "Gluttonberg::User"
        end
      end

      module ClassMethods
        
        # Returns all matching records that are authorize to provided user. 
        # For Super admin users returns all records
        # For other non-super-users checks th condition of user_id
        # May be called with additional conditions.
        def all_for_user(user , options = {})
          if user.is_super_admin
            all(options)
          else
            options[:user_id] = user.id
            all(options)
          end
        end  
        
        # Returns first matching records that is authorize to provided user with given id. 
        # For Super admin users it checks only id but for non-super-users checks additionally it checks condition of user_id
        
        def get_for_user(user , id)
          options = {:id => id }
          if user.is_super_admin            
            first(options)
          else
            options[:user_id] = user.id
            first(options)
          end
        end  
      end  #ClassMethods

      module InstanceMethods
        
      end #InstanceMethods
      
    end # Authorizable  
end # Gluttonberg

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
gluttonberg-core-2.6.4 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.6.3 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.6.2 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.6.1 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.6.0 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.9 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.8 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.7 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.6 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.5 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.4 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.3 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.2 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5.1 lib/gluttonberg/authorizable.rb
gluttonberg-core-2.5 lib/gluttonberg/authorizable.rb