Sha256: a0bd161874efac8cba479400ebccdecf4a10715560e404b32cc928ca7fbc3a82

Contents?: true

Size: 638 Bytes

Versions: 2

Compression:

Stored size: 638 Bytes

Contents

# frozen_string_literal: true
require 'proxes/models/base'

module ProxES
  class Permission < Base
    many_to_one :role
    many_to_one :user

    dataset_module do
      def for_user(a_user, action)
        where(verb: action).where{Sequel.|({role: a_user.roles}, {user_id: a_user.id})}
      end
    end

    def validate
      validates_presence [:verb, :pattern]
      validates_presence :role_id unless user_id
      validates_presence :user_id unless role_id
      validates_includes self.class.verbs, :verb
    end

    def self.verbs
      ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS', 'TRACE', 'INDEX']
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
proxes-0.4.0 lib/proxes/models/permission.rb
proxes-0.3.6 lib/proxes/models/permission.rb