2019-07-30 21:29:24 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2020-06-12 20:03:43 +00:00
|
|
|
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
|
|
|
|
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
|
2018-03-25 17:30:42 +00:00
|
|
|
module InsertSourceToken
|
2019-07-30 21:29:24 +00:00
|
|
|
def self.create_record(tokenizable, params = {})
|
|
|
|
ParamValidation.new({ tokenizable: tokenizable }.merge(params),
|
|
|
|
tokenizable: { required: true },
|
|
|
|
event: { is_a: Event },
|
|
|
|
expiration_time: { is_integer: true, min: 1 },
|
|
|
|
max_uses: { is_integer: true, min: 1 })
|
|
|
|
if !params[:event].nil?
|
2020-06-10 22:31:47 +00:00
|
|
|
max_uses = params[:max_uses] || Houdini.source_tokens.event_donation_source.max_uses
|
|
|
|
expiration_diff = params[:expiration_time] || Houdini.source_tokens.event_donation_source.expiration_after_event
|
2018-03-25 17:30:42 +00:00
|
|
|
expiration = params[:event].end_datetime + expiration_diff.to_i
|
|
|
|
else
|
2020-06-10 22:31:47 +00:00
|
|
|
max_uses = params[:max_uses] || Houdini.source_tokens.max_uses
|
|
|
|
expiration_diff = params[:expiration_time] || Houdini.source_tokens.expiration_time
|
2018-03-25 17:30:42 +00:00
|
|
|
expiration = Time.now + expiration_diff.to_i
|
|
|
|
end
|
|
|
|
c = SourceToken.new
|
|
|
|
c.tokenizable = tokenizable
|
|
|
|
c.expiration = expiration
|
|
|
|
c.token = SecureRandom.uuid
|
|
|
|
c.max_uses = max_uses
|
|
|
|
c.event = params[:event]
|
|
|
|
c.save!
|
|
|
|
c
|
|
|
|
end
|
2019-07-30 21:29:24 +00:00
|
|
|
end
|