Sha256: 9a8c967daaa3c590666f6047b197d6b7a36f6a92458933c1230307865c106166

Contents?: true

Size: 1.7 KB

Versions: 10

Compression:

Stored size: 1.7 KB

Contents

require_relative 'workspace'

module Lanes

    module Access

        class << self

            def type_to_client(klass)
                klass.to_s.sub(/^(\w+).*?(\w+)$/,'\1.Models.\2')
            end

            def type_to_client_id(klass)
                ( klass.is_a?(Class) ? klass : klass.class ).to_s.demodulize.underscore
            end

            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

        end
    end

end

require_relative 'access/user'
require_relative 'access/authentication_provider'
require_relative 'access/locked_fields'
require_relative 'access/role'
require_relative 'access/role_collection'
require_relative 'access/track_modifications'
require_relative 'access/extension'

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
lanes-0.7.0 lib/lanes/access.rb
lanes-0.6.1 lib/lanes/access.rb
lanes-0.6.0 lib/lanes/access.rb
lanes-0.5.6 lib/lanes/access.rb
lanes-0.5.5 lib/lanes/access.rb
lanes-0.5.0 lib/lanes/access.rb
lanes-0.4.0 lib/lanes/access.rb
lanes-0.3.0 lib/lanes/access.rb
lanes-0.1.9.5 lib/lanes/access.rb
lanes-0.1.9 lib/lanes/access.rb