30 lines
1 KiB
Ruby
30 lines
1 KiB
Ruby
|
module InsertSourceToken
|
||
|
|
||
|
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)
|
||
|
max_uses = params[:max_uses] || Settings.source_tokens.event_donation_source.max_uses
|
||
|
expiration_diff = params[:expiration_time] || Settings.source_tokens.event_donation_source.time_after_event
|
||
|
expiration = params[:event].end_datetime + expiration_diff.to_i
|
||
|
else
|
||
|
max_uses = params[:max_uses] || Settings.source_tokens.max_uses
|
||
|
expiration_diff = params[:expiration_time] || Settings.source_tokens.expiration_time
|
||
|
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
|
||
|
|
||
|
|
||
|
end
|