module Lanes::Access

Constants

VERSION

Public Class Methods

for_user( user ) click to toggle source
# File lib/lanes/access.rb, line 17
def for_user( user )
    {
        :roles => user.roles.map{ | role |
            {
                type: type_to_client_id(role),
                read: role.read_types.map{ |klass| type_to_client(klass) },
                write: role.write_types.map{ |klass| type_to_client(klass) },
                delete: role.delete_types.map{ |klass| type_to_client(klass) }
            }
        },
        :locked_fields => LockedFields.definitions.map{ | klass, locks |
            {
                type: type_to_client(klass),
                locks: locks.each_with_object({}) do |(field, grants), result|
                    result[field] = grants.map do |grant|
                        { role: type_to_client_id(grant[:role]), only: grant[:only] }
                    end
                end
            }
        }
    }
end
type_to_client(klass) click to toggle source
# File lib/lanes/access.rb, line 9
def type_to_client(klass)
    klass.to_s.sub(/^(\w+).*?(\w+)$/,'\1.Models.\2')
end
type_to_client_id(klass) click to toggle source
# File lib/lanes/access.rb, line 13
def type_to_client_id(klass)
    ( klass.is_a?(Class) ? klass : klass.class ).to_s.demodulize.underscore
end