# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later 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