Sha256: f81607f58bc248658fbeb3485f63bc86c6e7b0445cd4fe75de2d66199864eda2

Contents?: true

Size: 1.86 KB

Versions: 2

Compression:

Stored size: 1.86 KB

Contents

module Mutations
  class BaseMutation < GraphQL::Schema::RelayClassicMutation
    argument_class Types::BaseArgument
    field_class Types::BaseField
    input_object_class Types::BaseInputObject
    object_class Types::BaseObject

    def fb_auth(token:)
      FirebaseIdToken::Certificates.request!
      sleep(3) if ENV["RACK_ENV"] == "development"
      @payload = FirebaseIdToken::Signature.verify(token)
      raise(ArgumentError, "Invalid or Missing Token") if @payload.blank?

      @payload
    end

    def graphql_query(mutation: "SendUserMailJob", args: {})
      if args.blank?
        %(mutation { #{mutation}(input: {}) {
            response
          }
        })
      else
        inputs = ""
        args.each do |key, value|
          inputs +=
            if value.instance_of?(String)
              "#{key.to_s.underscore.camelize(:lower)}: \"#{value}\" "
            else
              "#{key.to_s.underscore.camelize(:lower)}: #{value} "
            end
        end
        %(mutation { #{mutation.to_s.underscore.camelize(:lower)}(input: {#{inputs}}) {
            response
          }
        })
      end
    end

    def check_user_permissions(user, obj, method)
      raise(StandardError, "Invalid or Missing Token") unless user

      policy_class = obj.class.name + "Policy"
      policy_clazz = policy_class.constantize.new(user, obj)
      permission = policy_clazz.public_send(method)
      raise(Pundit::NotAuthorizedError, "permission error!") unless permission
    end

    def auth_check(context)
      raise(GraphQL::ExecutionError, "You need to sign in!!") if context[:user].nil?
    end

    def get_token(token)
      JsonWebToken.decode(token)
    end

    def production?
      ENV["RACK_ENV"] == "production"
    end

    def get_instance_id
      `curl http://metadata.google.internal/computeMetadata/v1/instance/id -H Metadata-Flavor:Google`
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
souls-0.24.2 apps/api/app/graphql/mutations/base_mutation.rb
souls-0.24.1 apps/api/app/graphql/mutations/base_mutation.rb