1# frozen_string_literal: true 2 3module Ci 4 class Trigger < Ci::ApplicationRecord 5 include Presentable 6 include Limitable 7 8 self.limit_name = 'pipeline_triggers' 9 self.limit_scope = :project 10 11 belongs_to :project 12 belongs_to :owner, class_name: "User" 13 14 has_many :trigger_requests 15 16 validates :token, presence: true, uniqueness: true 17 validates :owner, presence: true 18 19 before_validation :set_default_values 20 21 def set_default_values 22 self.token = SecureRandom.hex(15) if self.token.blank? 23 end 24 25 def last_trigger_request 26 trigger_requests.last 27 end 28 29 def last_used 30 last_trigger_request.try(:created_at) 31 end 32 33 def short_token 34 token[0...4] if token.present? 35 end 36 37 def can_access_project? 38 Ability.allowed?(self.owner, :create_build, project) 39 end 40 end 41end 42 43Ci::Trigger.prepend_mod_with('Ci::Trigger') 44