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