Skip to content

Commit b5a1438

Browse files
committed
Allow to specify custom mutations
1 parent ce3eb43 commit b5a1438

21 files changed

Lines changed: 132 additions & 54 deletions

File tree

.rubocop.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@ Rails:
55
Enabled: true
66

77
AllCops:
8-
TargetRubyVersion: 2.3
8+
TargetRubyVersion: 2.2
99
DisplayCopNames: true
1010
Exclude:
1111
- bin/**/*
1212
- db/**/*
1313
- vendor/**/*
1414
- tmp/**/*
1515

16+
Rails/HttpPositionalArguments:
17+
Enabled: false
18+
1619
Rails/HasAndBelongsToMany:
1720
Enabled: false
1821

Gemfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
source 'https://rubygems.org'
22

33
gemspec
4-
5-
gem 'listen'

app/controllers/graphql_devise/graphql_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def execute_params(item)
2626
variables: ensure_hash(item[:variables]),
2727
context: {
2828
current_resource: @resource,
29+
token: @token,
2930
controller: self,
3031
resource_class: resource_class
3132
}

app/graphql/graphql_devise/mutations/base.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ def single_error_object(error)
88
end
99

1010
def request
11-
context[:controller].request
11+
controller.request
1212
end
1313

1414
def response
15-
context[:controller].response
15+
controller.response
1616
end
1717

1818
def controller
@@ -26,6 +26,10 @@ def resource_class
2626
def current_resource
2727
context[:current_resource]
2828
end
29+
30+
def token
31+
context[:token]
32+
end
2933
end
3034
end
3135
end

app/graphql/graphql_devise/mutations/login.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ class Login < Base
44
argument :email, String, required: true
55
argument :password, String, required: true
66

7-
field :authenticable, GraphqlDevise::Types::AuthenticableType, null: true
8-
field :success, Boolean, null: false
9-
field :errors, [String], null: false
7+
field :success, Boolean, null: false
8+
field :errors, [String], null: false
109

1110
def resolve(email:, password:)
1211
resource = resource_class.find_by(email: email)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
module GraphqlDevise
2+
module Mutations
3+
class Logout < Base
4+
field :success, Boolean, null: false
5+
field :errors, [String], null: false
6+
7+
def resolve
8+
client = token.client if token.client
9+
10+
if current_user && token.client && current_user.tokens[client]
11+
user.tokens.delete(client)
12+
user.save!
13+
14+
yield user if block_given?
15+
16+
{ success: true, errors: [] }
17+
else
18+
{ success: false, errors: [I18n.t('graphql_devise.user_not_found')] }
19+
end
20+
end
21+
end
22+
end
23+
end
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
module GraphqlDevise
22
module Types
33
class MutationType < GraphQL::Schema::Object
4-
field :login, mutation: GraphqlDevise::Mutations::Login
54
end
65
end
76
end

config/locales/en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
en:
22
graphql_devise:
3+
user_not_found: "User was not found or was not logged in."
34
sessions:
45
bad_credentials: "Invalid login credentials. Please try again."
56
not_confirmed: "A confirmation email was sent to your account at '%{email}'. You must follow the instructions in the email before your account can be activated"

graphql_devise.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
3535
spec.add_development_dependency 'pry'
3636
spec.add_development_dependency 'rake', '~> 10.0'
3737
spec.add_development_dependency 'rspec-rails'
38-
spec.add_development_dependency 'rubocop'
38+
spec.add_development_dependency 'rubocop', '0.68.1'
3939
spec.add_development_dependency 'rubocop-performance'
4040
spec.add_development_dependency 'rubocop-rspec'
4141
spec.add_development_dependency 'sqlite3', '~> 1.3.6'

lib/graphql_devise.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'devise_token_auth'
44
require 'graphql'
55
require 'graphql_devise/version'
6+
require 'graphql_devise/util/class_getter'
67

78
module GraphqlDevise
89
class Error < StandardError; end

0 commit comments

Comments
 (0)