Sha256: d4c9da01ad6df17da8a2ac83987b62f3445f0d6941549a5ab47f8da5d13d5f96

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

module Lanes

    module Access

        class << self

            def _type_to_str(klass)
                klass.to_s.demodulize.underscore
            end

            def for_user( user )
                {
                    :roles => user.roles.map{ | role |
                        {
                            type: _type_to_str(role.class),
                            read: role.read.map{ |klass| _type_to_str(klass) },
                            write: role.write.map{ |klass| _type_to_str(klass) },
                            delete: role.delete.map{ |klass| _type_to_str(klass) }
                        }
                    },
                    :locked_fields => LockedFields.definitions.map{ | klass, locks |
                        {
                            type: _type_to_str(klass),
                            locks: locks.each_with_object({}) do |(field, grants), result|
                                result[field] = grants.map do |grant|
                                    { role: _type_to_str(grant[:role]), only: grant[:only] }
                                end
                            end
                        }
                    }
                }
            end

            def calculate_model_access!
                Roles::Administrator.grant_global_access!
            end


        end
    end

end

require_relative 'access/locked_fields'
require_relative 'access/role'
require_relative 'access/role_collection'

Lanes::Access.calculate_model_access!
#    require_relative 'access/user_maint_screen'
#    require_relative 'access/workspace_extension'

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lanes-0.0.3 lib/lanes/access.rb
lanes-0.0.2 lib/lanes/access.rb
lanes-0.0.1 lib/lanes/access.rb