Class: NotePolicy

Inherits:
BasePolicy
  • Object
show all
Includes:
Gitlab::Utils::StrongMemoize
Defined in:
app/policies/note_policy.rb

Instance Method Summary collapse

Instance Method Details

#access_levelObject



89
90
91
92
93
94
# File 'app/policies/note_policy.rb', line 89

def access_level
  return -1 if @user.nil?
  return -1 unless parent_namespace

  lookup_access_level!
end

#lookup_access_level!Object



96
97
98
99
100
101
102
103
104
# File 'app/policies/note_policy.rb', line 96

def lookup_access_level!
  return ::Gitlab::Access::REPORTER if alert_bot?

  if parent_namespace.is_a?(Project)
    parent_namespace.team.max_member_access(@user.id)
  else
    parent_namespace.max_member_access_for_user(@user)
  end
end

#parent_namespaceObject



80
81
82
83
84
85
86
87
# File 'app/policies/note_policy.rb', line 80

def parent_namespace
  strong_memoize(:parent_namespace) do
    next if @subject.is_a?(PersonalSnippet)
    next @subject.noteable.group if @subject.noteable.is_a?(Epic)

    @subject.project
  end
end