graphql_devise 0.13.2 → 0.13.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3d25f0672c378bfd003351aa997e61fdfce123ed3b391ed5bddce60c86c4f28
4
- data.tar.gz: 0052cc77751cf44d704cfc8c7f462c5ee1aed58c91ad7ba1e80068b085149f88
3
+ metadata.gz: 3f53fa7a8d2d7b2358f448a3debe5bc56eba25282e51006e88922340eaedc3ac
4
+ data.tar.gz: '07183950cd6bd45e2228cbe20fd41ed8d8352e8191aa51f39d1a07e8ce04310c'
5
5
  SHA512:
6
- metadata.gz: 3ee604289ff30fe95a1947ee63a58c05b2a05a659657253e29ed526213bea1558d6162597daf08be56a131a0c3c3100dc2affe1b821674f493d03939ad1540ee
7
- data.tar.gz: cd6b4af9fda08c2310e6a47d3d9db8b451031bbbf05b0f214ca71a230d248d64c65cc18a92711b46676d20f047f669d5cdcb1fe6df3a42748109ff3bfae7d709
6
+ metadata.gz: 75da3fcc2f769c67f3c07ec7e732cb1ca82a1909ebb2cb35b03b4a902f7367eb17319398c7daf848598a71288c29aad84720f418174d1fb7a9fefbe7a6a75399
7
+ data.tar.gz: da0bc0fdf1a5f3cefd4b76e7c08872a893606881ca51c3727c9051db753d938a57abdc25f6b1afb5171f0ec7a5df8104cae8ff14e5bc20bc48b050e15e2911bc
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.13.3](https://github.com/graphql-devise/graphql_devise/tree/v0.13.3) (2020-08-13)
4
+
5
+ [Full Changelog](https://github.com/graphql-devise/graphql_devise/compare/v0.13.2...v0.13.3)
6
+
7
+ **Fixed bugs:**
8
+
9
+ - Fix unconfirmed\_email confirmation. Ignore devise reconfirmable config. [\#126](https://github.com/graphql-devise/graphql_devise/pull/126) ([mcelicalderon](https://github.com/mcelicalderon))
10
+
3
11
  ## [v0.13.2](https://github.com/graphql-devise/graphql_devise/tree/v0.13.2) (2020-08-12)
4
12
 
5
13
  [Full Changelog](https://github.com/graphql-devise/graphql_devise/compare/v0.13.1...v0.13.2)
@@ -10,6 +10,12 @@ module GraphqlDevise
10
10
  def update_with_email(attributes = {})
11
11
  GraphqlDevise::Model::WithEmailUpdater.new(self, attributes).call
12
12
  end
13
+
14
+ private
15
+
16
+ def pending_reconfirmation?
17
+ devise_modules.include?(:confirmable) && try(:unconfirmed_email).present?
18
+ end
13
19
  end
14
20
  end
15
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GraphqlDevise
4
- VERSION = '0.13.2'.freeze
4
+ VERSION = '0.13.3'.freeze
5
5
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Resolvers
4
+ class ConfirmAdminAccount < GraphqlDevise::Resolvers::ConfirmAccount
5
+ type Types::AdminType, null: false
6
+
7
+ def resolve(confirmation_token:, redirect_url:)
8
+ super do |admin|
9
+ controller.sign_in(admin)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Types
4
+ class AdminType < GraphQL::Schema::Object
5
+ field :id, Int, null: false
6
+ field :email, String, null: false
7
+ end
8
+ end
@@ -142,7 +142,7 @@ Devise.setup do |config|
142
142
  # initial account confirmation) to be applied. Requires additional unconfirmed_email
143
143
  # db field (see migrations). Until confirmed, new email is stored in
144
144
  # unconfirmed_email column, and copied to email column on successful confirmation.
145
- config.reconfirmable = true
145
+ config.reconfirmable = false
146
146
 
147
147
  # Defines which key will be used when confirming an account
148
148
  # config.confirmation_keys = [:email]
@@ -14,6 +14,9 @@ Rails.application.routes.draw do
14
14
  'Admin',
15
15
  authenticatable_type: Types::CustomAdminType,
16
16
  skip: [:sign_up, :check_password_token],
17
+ operations: {
18
+ confirm_account: Resolvers::ConfirmAdminAccount
19
+ },
17
20
  at: '/api/v1/admin/graphql_auth'
18
21
  )
19
22
 
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  # This file is auto-generated from the current state of the database. Instead
4
2
  # of editing this file, please use the migrations feature of Active Record to
5
3
  # incrementally modify your database, and then regenerate this schema definition.
@@ -5,60 +5,118 @@ require 'rails_helper'
5
5
  RSpec.describe 'Account confirmation' do
6
6
  include_context 'with graphql query request'
7
7
 
8
- let(:user) { create(:user, confirmed_at: nil) }
9
- let(:redirect) { Faker::Internet.url }
10
- let(:query) do
11
- <<-GRAPHQL
12
- {
13
- userConfirmAccount(
14
- confirmationToken: "#{token}"
15
- redirectUrl: "#{redirect}"
16
- ) {
17
- email
18
- name
8
+ context 'when using the user model' do
9
+ let(:user) { create(:user, confirmed_at: nil) }
10
+ let(:redirect) { Faker::Internet.url }
11
+ let(:query) do
12
+ <<-GRAPHQL
13
+ {
14
+ userConfirmAccount(
15
+ confirmationToken: "#{token}"
16
+ redirectUrl: "#{redirect}"
17
+ ) {
18
+ email
19
+ name
20
+ }
19
21
  }
20
- }
21
- GRAPHQL
22
- end
22
+ GRAPHQL
23
+ end
24
+
25
+ context 'when confirmation token is correct' do
26
+ let(:token) { user.confirmation_token }
27
+
28
+ before do
29
+ user.send_confirmation_instructions(
30
+ template_path: ['graphql_devise/mailer'],
31
+ controller: 'graphql_devise/graphql',
32
+ schema_url: 'http://not-using-this-value.com/gql'
33
+ )
34
+ end
35
+
36
+ it 'confirms the resource and redirects to the sent url' do
37
+ expect do
38
+ get_request
39
+ user.reload
40
+ end.to(change(user, :confirmed_at).from(nil))
41
+
42
+ expect(response).to redirect_to("#{redirect}?account_confirmation_success=true")
43
+ expect(user).to be_active_for_authentication
44
+ end
45
+
46
+ context 'when unconfirmed_email is present' do
47
+ let(:user) { create(:user, :confirmed, unconfirmed_email: 'vvega@wallaceinc.com') }
23
48
 
24
- context 'when confirmation token is correct' do
25
- let(:token) { user.confirmation_token }
49
+ it 'confirms the unconfirmed email and redirects' do
50
+ expect do
51
+ get_request
52
+ user.reload
53
+ end.to change(user, :email).from(user.email).to('vvega@wallaceinc.com').and(
54
+ change(user, :unconfirmed_email).from('vvega@wallaceinc.com').to(nil)
55
+ )
26
56
 
27
- before do
28
- user.send_confirmation_instructions(
29
- template_path: ['graphql_devise/mailer'],
30
- controller: 'graphql_devise/graphql',
31
- schema_url: 'http://not-using-this-value.com/gql'
32
- )
57
+ expect(response).to redirect_to("#{redirect}?account_confirmation_success=true")
58
+ end
59
+ end
33
60
  end
34
61
 
35
- it 'confirms the resource and redirects to the sent url' do
36
- expect do
37
- get_request
38
- user.reload
39
- end.to(change(user, :confirmed_at).from(nil))
62
+ context 'when reset password token is not found' do
63
+ let(:token) { "#{user.confirmation_token}-invalid" }
40
64
 
41
- expect(response).to redirect_to "#{redirect}?account_confirmation_success=true"
42
- expect(user).to be_active_for_authentication
65
+ it 'does *NOT* confirm the user nor does the redirection' do
66
+ expect do
67
+ get_request
68
+ user.reload
69
+ end.not_to(change(user, :confirmed_at).from(nil))
70
+
71
+ expect(response).not_to be_redirect
72
+ expect(json_response[:errors]).to contain_exactly(
73
+ hash_including(
74
+ message: 'Invalid confirmation token. Please try again',
75
+ extensions: { code: 'USER_ERROR' }
76
+ )
77
+ )
78
+ end
43
79
  end
44
80
  end
45
81
 
46
- context 'when reset password token is not found' do
47
- let(:token) { "#{user.confirmation_token}-invalid" }
82
+ context 'when using the admin model' do
83
+ let(:admin) { create(:admin, confirmed_at: nil) }
84
+ let(:redirect) { Faker::Internet.url }
85
+ let(:query) do
86
+ <<-GRAPHQL
87
+ {
88
+ adminConfirmAccount(
89
+ confirmationToken: "#{token}"
90
+ redirectUrl: "#{redirect}"
91
+ ) {
92
+ email
93
+ }
94
+ }
95
+ GRAPHQL
96
+ end
48
97
 
49
- it 'does *NOT* confirm the user nor does the redirection' do
50
- expect do
51
- get_request
52
- user.reload
53
- end.not_to(change(user, :confirmed_at).from(nil))
98
+ context 'when confirmation token is correct' do
99
+ let(:token) { admin.confirmation_token }
54
100
 
55
- expect(response).not_to be_redirect
56
- expect(json_response[:errors]).to contain_exactly(
57
- hash_including(
58
- message: 'Invalid confirmation token. Please try again',
59
- extensions: { code: 'USER_ERROR' }
101
+ before do
102
+ admin.send_confirmation_instructions(
103
+ template_path: ['graphql_devise/mailer'],
104
+ controller: 'graphql_devise/graphql',
105
+ schema_url: 'http://not-using-this-value.com/gql'
60
106
  )
61
- )
107
+ end
108
+
109
+ it 'confirms the resource, persists credentials on the DB and redirects to the sent url' do
110
+ expect do
111
+ get_request
112
+ admin.reload
113
+ end.to change(admin, :confirmed_at).from(nil).and(
114
+ change { admin.tokens.keys.count }.from(0).to(1)
115
+ )
116
+
117
+ expect(response).to redirect_to(/\A#{redirect}.+access\-token=/)
118
+ expect(admin).to be_active_for_authentication
119
+ end
62
120
  end
63
121
  end
64
122
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql_devise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.2
4
+ version: 0.13.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Celi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-08-12 00:00:00.000000000 Z
12
+ date: 2020-08-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: devise_token_auth
@@ -364,8 +364,10 @@ files:
364
364
  - spec/dummy/app/graphql/mutations/register_confirmed_user.rb
365
365
  - spec/dummy/app/graphql/mutations/sign_up.rb
366
366
  - spec/dummy/app/graphql/mutations/update_user.rb
367
+ - spec/dummy/app/graphql/resolvers/confirm_admin_account.rb
367
368
  - spec/dummy/app/graphql/resolvers/public_user.rb
368
369
  - spec/dummy/app/graphql/resolvers/user_show.rb
370
+ - spec/dummy/app/graphql/types/admin_type.rb
369
371
  - spec/dummy/app/graphql/types/base_object.rb
370
372
  - spec/dummy/app/graphql/types/custom_admin_type.rb
371
373
  - spec/dummy/app/graphql/types/mutation_type.rb
@@ -505,8 +507,10 @@ test_files:
505
507
  - spec/dummy/app/graphql/mutations/register_confirmed_user.rb
506
508
  - spec/dummy/app/graphql/mutations/sign_up.rb
507
509
  - spec/dummy/app/graphql/mutations/update_user.rb
510
+ - spec/dummy/app/graphql/resolvers/confirm_admin_account.rb
508
511
  - spec/dummy/app/graphql/resolvers/public_user.rb
509
512
  - spec/dummy/app/graphql/resolvers/user_show.rb
513
+ - spec/dummy/app/graphql/types/admin_type.rb
510
514
  - spec/dummy/app/graphql/types/base_object.rb
511
515
  - spec/dummy/app/graphql/types/custom_admin_type.rb
512
516
  - spec/dummy/app/graphql/types/mutation_type.rb