graphql-deviseを導入していますが、下記のよう設定をしてもcontext[:current_resource]を使えません
なぜでしょうか・
configration
自分のschemaにdeviseを導入しています。
class MySchema < GraphQL::Schema use GraphqlDevise::SchemaPlugin.new( query: Types::QueryType, mutation: Types::MutationType, resource_loaders: [ GraphqlDevise::ResourceLoader.new('User'), ], authenticate_default: false ) mutation(Types::MutationType) query(Types::QueryType) # Setup GraphQL to use the built-in lazy_resolve method use BatchLoader::GraphQL end
route.rb:
Rails.application.routes.draw do # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html # For graphql if Rails.env.development? mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql" end post "/graphql", to: "graphql#execute" get "/graphql", to: "graphql#execute"
graqhql_controller.rb:
def execute variables = ensure_hash(params[:variables]) query = params[:query] operation_name = params[:operationName] result = BusinessCloudSchema.execute(query, variables: variables, context: graphql_context(:user), operation_name: operation_name) render json: result unless performed? rescue => e raise e unless Rails.env.development? handle_error_in_development e end
user_update_input.rb
module Types class UserUpdateInput < Types::BaseInputObject argument :fist_name, String, required: true argument :last_name, String, required: true argument :position, String, required: false argument :image, ApolloUploadServer::Upload, required: false def update! current_user = context[:current_resource] current_user.assign_attributes(first_name: first_name, last_name: last_name, image: valid_image) current_user.update { errors: user_errors(current_user.errors), user: current_user.reload } end private def valid_image image if image&.is_a?(ApolloUploadServer::Wrappers::UploadedFile) end end end
update_user.rb
module Mutations class UpdateUser < BaseMutation field :user, Types::UserType, null: true argument :user, Types::UserUpdateInput, required: true def resolve(user:) { user: user.update! } end end end
下記クエリを実行しても動きません。
mutation{ updateUser(input: { clientMutationId: "", user: {fistName: "aa", lastName: "bb", position: "manager"}}) { clientMutationId user{ email firstName image lastName position } } }
context[:current_user]としてもnillになります。
あなたの回答
tips
プレビュー