From c64f1f1ea66ff141b119ec547175f63b20ca321d Mon Sep 17 00:00:00 2001 From: Guillermo Giuliana Date: Fri, 8 Oct 2021 19:07:14 -0300 Subject: [PATCH] [DEV-146] resend verification email backend (#1049) * add path resend signup token * add ruby tests --- server/controllers/user.php | 1 + .../controllers/user/resend-email-token.php | 69 +++++++++++++++++++ tests/init.rb | 3 +- tests/user/resend-email-token.rb | 33 +++++++++ 4 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 server/controllers/user/resend-email-token.php create mode 100644 tests/user/resend-email-token.rb diff --git a/server/controllers/user.php b/server/controllers/user.php index 690b2907..26152a7b 100755 --- a/server/controllers/user.php +++ b/server/controllers/user.php @@ -24,6 +24,7 @@ $userControllers->addController(new DisableUserController); $userControllers->addController(new EditCustomFieldsController); $userControllers->addController(new EditSupervisedListController); $userControllers->addController(new GetSupervisedTicketController); +$userControllers->addController(new ResendEmailTokenController); $userControllers->addController(new ResendInviteUserController); diff --git a/server/controllers/user/resend-email-token.php b/server/controllers/user/resend-email-token.php new file mode 100644 index 00000000..306cecef --- /dev/null +++ b/server/controllers/user/resend-email-token.php @@ -0,0 +1,69 @@ + 'any', + 'requestData' => [ + 'email' => [ + 'validation' => DataValidator::email(), + 'error' => ERRORS::INVALID_EMAIL + ] + ] + ]; + } + + public function handler() { + $userEmail = Controller::request('email'); + + $user = User::getDataStore($userEmail, 'email'); + + if (!$user->verificationToken || !$user->email) { + throw new RequestException(ERRORS::NO_PERMISSION); + } + + if(MailSender::getInstance()->isConnected()) { + $this->resendTokenMail($user); + } + + Response::respondSuccess(); + } + + public function resendTokenMail($user) { + $mailSender = MailSender::getInstance(); + + $mailSender->setTemplate(MailTemplate::USER_SIGNUP, [ + 'to' => $user->email, + 'name' => $user->name, + 'url' => Setting::getSetting('url')->getValue(), + 'verificationToken' => $user->verificationToken + ]); + + $mailSender->send(); + } +} diff --git a/tests/init.rb b/tests/init.rb index 1b32a0d1..765be315 100644 --- a/tests/init.rb +++ b/tests/init.rb @@ -80,6 +80,7 @@ require './user/edit-supervised-list.rb' require './user/get-supervised-tickets.rb' require './system/apikey-permissions.rb' require './system/get-stats.rb' +require './user/resend-email-token.rb' require './user/invite.rb' require './user/resend-invite-user.rb' -require './staff/resend-invite-staff.rb' \ No newline at end of file +require './staff/resend-invite-staff.rb' diff --git a/tests/user/resend-email-token.rb b/tests/user/resend-email-token.rb new file mode 100644 index 00000000..e7de9af3 --- /dev/null +++ b/tests/user/resend-email-token.rb @@ -0,0 +1,33 @@ +describe '/user/resend-email-token' do + + request('/user/logout') + + it 'should fail is data is wrong' do + result = request('/user/resend-email-token', { + email: 'thisemaildoesnotexists@hotmail.com' + }) + + (result['status']).should.equal('fail') + (result['message']).should.equal('NO_PERMISSION') + + user = $database.getRow('user', '1' , 'id') + + result = request('/user/resend-email-token', { + email: user['email'] + }) + + (result['status']).should.equal('fail') + (result['message']).should.equal('NO_PERMISSION') + end +=begin + it 'should resend email' do + Scripts.createUser('usertobetestedbyresendemail@os4.com') + + result = request('/user/resend-email-token', { + email: 'usertobetestedbyresendemail@hotmail.com' + }) + + (result['message']).should.equal('success') + end +=end +end