app/models/unidom/authorization/authorizing.rb in unidom-authorization-0.1 vs app/models/unidom/authorization/authorizing.rb in unidom-authorization-0.2

- old
+ new

@@ -2,16 +2,27 @@ class Unidom::Authorization::Authorizing < ActiveRecord::Base self.table_name = 'unidom_authorizings' + include Unidom::Common::Concerns::ModelExtension + belongs_to :permission, class_name: 'Unidom::Authorization::Permission' belongs_to :authorizer, polymorphic: true belongs_to :authorized, polymorphic: true scope :permission_is, ->(permission) { where permission_id: (permission.respond_to?(:id) ? permission.id : permission) } scope :authorized_is, ->(authorized) { where authorized: authorized } scope :authorized_by, ->(authorizer) { where authorizer: authorizer } - include Unidom::Common::Concerns::ModelExtension + def self.authorize!(permission, authorized, authorizer = nil, opened_at = Time.now) + attributes = { opened_at: opened_at } + if authorizer.present? + attributes[:authorizer] = authorizer + else + attributes[:authorizer_id] = Unidom::Common::NULL_UUID + attributes[:authorizer_type] = '' + end + self.authorized_is(authorized).permission_is(permission).valid_at.alive.first_or_create! attributes + end end