openSUSE/open-build-service

View on GitHub
src/api/app/policies/comment_lock_policy.rb

Summary

Maintainability
A
0 mins
Test Coverage
D
66%
class CommentLockPolicy < ApplicationPolicy
  def create?
    return false unless Flipper.enabled?(:content_moderation, user)

    return false if record.is_a?(Report)

    return true if user.is_moderator? || user.is_admin?

    case record
    # Maintainers of Package or Project can lock comments
    when Package, Project
      return record.maintainers.include?(user)
    # Request receivers (maintainers of target package) can also lock comments
    when BsRequest
      return record.is_target_maintainer?(user)
    when BsRequestAction
      return record.bs_request.is_target_maintainer?(user)
    end

    false
  end

  def destroy?
    create?
  end
end