summaryrefslogtreecommitdiff
path: root/app/models/concerns/access_requestable.rb
blob: cf37284e31a3239abd1d140a05dfe7405432dc77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# == AccessRequestable concern
#
# Contains functionality related to objects that can receive request for access.
#
# Used by Project, and Group.
#
module AccessRequestable
  extend ActiveSupport::Concern

  def request_access(user)
    members.create(
      access_level: Gitlab::Access::DEVELOPER,
      created_by: user,
      requested_at: Time.now.utc)
  end

  def access_requested?(user)
    members.where(created_by_id: user.id).where.not(requested_at: nil).any?
  end

  private

  # Returns a `<entities>_members` association, e.g.: project_members, group_members
  def members
    @members ||= send("#{self.class.to_s.underscore}_members".to_sym)
  end
end