Sha256: e29230fa759f40f51c9c9676f4b3b0bcb13f2745592968c8dbaaa46e7fe515dc
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
# frozen_string_literal: true require 'ditty/models/base' require 'ditty/models/user' require 'ditty/models/role' module ProxES class Permission < ::Sequel::Model include ::Ditty::Base many_to_one :role, class: ::Ditty::Role many_to_one :user, class: ::Ditty::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 %i[verb pattern] validates_presence :role_id unless user_id validates_presence :user_id unless role_id validates_includes self.class.verbs, :verb end class << self def verbs %w[GET POST PUT DELETE HEAD OPTIONS TRACE INDEX] end def from_audit_log(audit_log) match = audit_log.details.match(/^(\w)+ (\S+)/) { verb: match[1], path: match[2] } end end end end module Ditty class User < ::Sequel::Model one_to_many :permissions, class: ::ProxES::Permission end end module Ditty class Role < ::Sequel::Model one_to_many :permissions, class: ::ProxES::Permission end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
proxes-0.9.7 | lib/proxes/models/permission.rb |