Sha256: 03139309d5edd4a9dc880eeb2a486351dde5a7d823a325190c51bcabd188383b

Contents?: true

Size: 1.92 KB

Versions: 9

Compression:

Stored size: 1.92 KB

Contents

# frozen_string_literal: true

module Decidim
  module TermCustomizer
    module Admin
      class Permissions < Decidim::DefaultPermissions
        def permissions
          return permission_action unless user
          return permission_action unless permission_action.scope == :admin

          unless user.admin?
            disallow!
            return permission_action
          end

          if read_admin_dashboard_action?
            allow!
            return permission_action
          end

          allowed_translation_set_action?
          allowed_translation_action?
          allowed_translation_bulk_action?

          permission_action
        end

        private

        def translation_set
          @translation_set ||= context.fetch(:translation_set, nil)
        end

        def translation
          @translation ||= context.fetch(:translation, nil)
        end

        def allowed_translation_set_action?
          return unless permission_action.subject == :translation_set

          case permission_action.action
          when :create, :read
            allow!
          when :update, :destroy, :import, :export
            toggle_allow(translation_set.present?)
          end
        end

        def allowed_translation_action?
          return unless permission_action.subject == :translation

          case permission_action.action
          when :create, :read
            allow!
          when :update, :destroy
            toggle_allow(translation.present?)
          end
        end

        def allowed_translation_bulk_action?
          return unless permission_action.subject == :translations

          case permission_action.action
          when :destroy
            toggle_allow(translation_set.present?)
          end
        end

        def read_admin_dashboard_action?
          permission_action.action == :read &&
            permission_action.subject == :admin_dashboard
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
decidim-term_customizer-0.23.0 app/permissions/decidim/term_customizer/admin/permissions.rb
decidim-term_customizer-0.22.0 app/permissions/decidim/term_customizer/admin/permissions.rb
decidim-term_customizer-0.21.0 app/permissions/decidim/term_customizer/admin/permissions.rb
decidim-term_customizer-0.20.0 app/permissions/decidim/term_customizer/admin/permissions.rb
decidim-term_customizer-0.19.1 app/permissions/decidim/term_customizer/admin/permissions.rb
decidim-term_customizer-0.19.0 app/permissions/decidim/term_customizer/admin/permissions.rb
decidim-term_customizer-0.18.0 app/permissions/decidim/term_customizer/admin/permissions.rb
decidim-term_customizer-0.17.1 app/permissions/decidim/term_customizer/admin/permissions.rb
decidim-term_customizer-0.17.0 app/permissions/decidim/term_customizer/admin/permissions.rb