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