Sha256: d2223a8d993e2463a574a98e0d61be76579eafc383ae3c0a5e7fc83b80c94047

Contents?: true

Size: 829 Bytes

Versions: 2

Compression:

Stored size: 829 Bytes

Contents

module Curupira
  module Authorizer
    extend ActiveSupport::Concern

    def authorize_for_group
      unless has_authorization_for_group?
        deny_access
      end
    end

    def authorize
      unless has_authorization?
        deny_access
      end
    end

    def has_authorization?
      return true if current_user.admin?
      query(params).present?
    end

    def has_authorization_for(params)
      query(params).present?
    end

    private

    def deny_access
      redirect_to "/", notice: "Sem autorização"
    end

    def query(params)
      User.joins(
        role_group_users: { role: { features: [:action_labels] } } 
      )
      .where(
        features: { controller: params[:controller] },
        action_labels: { name: params[:action] },
        id: current_user
      )
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
curupira-0.1.1 lib/curupira/authorizer.rb
curupira-0.1.0 lib/curupira/authorizer.rb