summaryrefslogtreecommitdiff
path: root/app/policies/namespaces/group_project_namespace_shared_policy.rb
blob: 2214839fb628e5fd7700283b2ea186d4f67d5ba6 (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
28
29
30
31
32
# frozen_string_literal: true

module Namespaces
  class GroupProjectNamespaceSharedPolicy < ::NamespacePolicy
    # As we move policies from ProjectPolicy to ProjectNamespacePolicy,
    # anything common with GroupPolicy but not with UserNamespacePolicy can go in here.
    # See https://gitlab.com/groups/gitlab-org/-/epics/6689

    condition(:timelog_categories_enabled, score: 0, scope: :subject) do
      Feature.enabled?(:timelog_categories, @subject)
    end

    rule { ~timelog_categories_enabled }.policy do
      prevent :read_timelog_category
    end

    rule { can?(:reporter_access) }.policy do
      enable :read_timelog_category
    end

    rule { can?(:guest_access) }.policy do
      enable :create_work_item
      enable :read_work_item
      enable :read_issue
      enable :read_namespace
    end

    rule { can?(:create_work_item) }.enable :create_task
  end
end

Namespaces::GroupProjectNamespaceSharedPolicy.prepend_mod