File tree Expand file tree Collapse file tree
lib/graphql_devise/resolvers Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -7,6 +7,8 @@ class ConfirmAccount < Base
77 argument :redirect_url , String , required : true
88
99 def resolve ( confirmation_token :, redirect_url :)
10+ check_redirect_url_whitelist! ( redirect_url )
11+
1012 resource = resource_class . confirm_by_token ( confirmation_token )
1113
1214 if resource . errors . empty?
Original file line number Diff line number Diff line change 77
88 context 'when using the user model' do
99 let ( :user ) { create ( :user , confirmed_at : nil ) }
10- let ( :redirect ) { Faker :: Internet . url }
10+ let ( :redirect ) { 'https://google.com' }
1111 let ( :query ) do
1212 <<-GRAPHQL
1313 {
4343 expect ( user ) . to be_active_for_authentication
4444 end
4545
46+ context 'when redirect_url is not whitelisted' do
47+ let ( :redirect ) { 'https://not-safe.com' }
48+
49+ it 'returns a not whitelisted redirect url error' do
50+ expect { post_request } . to not_change ( ActionMailer ::Base . deliveries , :count )
51+
52+ expect ( json_response [ :errors ] ) . to containing_exactly (
53+ hash_including (
54+ message : "Redirect to '#{ redirect } ' not allowed." ,
55+ extensions : { code : 'USER_ERROR' }
56+ )
57+ )
58+ end
59+ end
60+
4661 context 'when unconfirmed_email is present' do
4762 let ( :user ) { create ( :user , :confirmed , unconfirmed_email : 'vvega@wallaceinc.com' ) }
4863
You can’t perform that action at this time.
0 commit comments