Sha256: 6f84b274ff3ee03b8c7fa0012ed221dfcc829aeed09a3aef06aca2867eaa03eb

Contents?: true

Size: 1.17 KB

Versions: 28

Compression:

Stored size: 1.17 KB

Contents

module Workarea
  module Authorization
    extend ActiveSupport::Concern

    module ClassMethods
      def required_permissions(*values)
        values = @required_permissions if values.blank?
        @required_permissions ||= values || []
      end

      def reset_permissions!
        @required_permissions = nil
      end
    end

    def require_admin
      unless current_user.try(:admin?)
        flash[:error] = t('workarea.admin.authorization.unauthorized_action')
        redirect_to storefront.root_path
        return false
      end
    end

    def required_permissions
      self.class.required_permissions
    end

    def check_authorization
      return if current_user.blank? || current_user.super_admin?
      return if required_permissions.blank?

      unauthorized_user and return false unless authorized?
    end

    def authorized?
      current_user.admin? && Array(required_permissions).all? do |area|
        current_user.try("#{area}_access?") || current_user.try("#{area}?")
      end
    end

    def unauthorized_user
      flash[:error] = t('workarea.admin.authorization.unauthorized_area')
      redirect_back fallback_location: root_path
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
workarea-core-3.5.27 app/controllers/workarea/authorization.rb
workarea-core-3.5.26 app/controllers/workarea/authorization.rb
workarea-core-3.5.25 app/controllers/workarea/authorization.rb
workarea-core-3.5.23 app/controllers/workarea/authorization.rb
workarea-core-3.5.22 app/controllers/workarea/authorization.rb
workarea-core-3.5.21 app/controllers/workarea/authorization.rb
workarea-core-3.5.20 app/controllers/workarea/authorization.rb
workarea-core-3.5.19 app/controllers/workarea/authorization.rb
workarea-core-3.5.18 app/controllers/workarea/authorization.rb
workarea-core-3.5.17 app/controllers/workarea/authorization.rb
workarea-core-3.5.16 app/controllers/workarea/authorization.rb
workarea-core-3.5.15 app/controllers/workarea/authorization.rb
workarea-core-3.5.14 app/controllers/workarea/authorization.rb
workarea-core-3.5.13 app/controllers/workarea/authorization.rb
workarea-core-3.5.12 app/controllers/workarea/authorization.rb
workarea-core-3.5.11 app/controllers/workarea/authorization.rb
workarea-core-3.5.10 app/controllers/workarea/authorization.rb
workarea-core-3.5.9 app/controllers/workarea/authorization.rb
workarea-core-3.5.8 app/controllers/workarea/authorization.rb
workarea-core-3.5.7 app/controllers/workarea/authorization.rb