Skip to content

Commit 2b9c614

Browse files
Merge pull request #122 from graphql-devise/credentials-in-sign-up-mutation
Add credentials field to signUp mutation
2 parents 262221c + a1ab357 commit 2b9c614

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

lib/graphql_devise/mutations/sign_up.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ class SignUp < Base
88
argument :password_confirmation, String, required: true
99
argument :confirm_success_url, String, required: false
1010

11+
field :credentials,
12+
GraphqlDevise::Types::CredentialType,
13+
null: true,
14+
description: 'Authentication credentials. Null if after signUp resource is not active for authentication (e.g. Email confirmation required).'
15+
1116
def resolve(confirm_success_url: nil, **attrs)
1217
resource = build_resource(attrs.merge(provider: provider))
1318
raise_user_error(I18n.t('graphql_devise.resource_build_failed')) if resource.blank?
@@ -34,9 +39,11 @@ def resolve(confirm_success_url: nil, **attrs)
3439
)
3540
end
3641

37-
set_auth_headers(resource) if resource.active_for_authentication?
42+
response_payload = { authenticatable: resource }
43+
44+
response_payload[:credentials] = set_auth_headers(resource) if resource.active_for_authentication?
3845

39-
{ authenticatable: resource }
46+
response_payload
4047
else
4148
resource.try(:clean_up_passwords)
4249
raise_user_error_list(

spec/requests/mutations/sign_up_spec.rb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
passwordConfirmation: "#{password}"
2222
confirmSuccessUrl: "#{redirect}"
2323
) {
24+
credentials { accessToken }
2425
user {
2526
email
2627
name
@@ -43,7 +44,8 @@
4344
expect(user.confirmed_at).to be_nil
4445
expect(user).to be_valid_password(password)
4546
expect(json_response[:data][:userSignUp]).to include(
46-
user: {
47+
credentials: nil,
48+
user: {
4749
email: email,
4850
name: name
4951
}
@@ -126,6 +128,7 @@
126128
passwordConfirmation: "#{password}"
127129
confirmSuccessUrl: "#{redirect}"
128130
) {
131+
credentials { accessToken client uid }
129132
authenticatable {
130133
email
131134
}
@@ -134,8 +137,16 @@
134137
GRAPHQL
135138
end
136139

137-
it 'works without the confirmable module' do
140+
it 'returns credentials as no confirmation is required' do
138141
expect { post_request }.to change(Guest, :count).from(0).to(1)
142+
143+
expect(json_response[:data][:guestSignUp]).to include(
144+
authenticatable: { email: email },
145+
credentials: hash_including(
146+
uid: email,
147+
client: Guest.last.tokens.keys.first
148+
)
149+
)
139150
end
140151
end
141152
end

0 commit comments

Comments
 (0)