From 2f61a392441f2c5c4566bd4042be917fc73ae0bb Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Tue, 6 Nov 2018 18:44:59 -0700 Subject: [PATCH 01/10] re-add invites --- app/jobs/slack_jobs.rb | 2 +- app/jobs/slack_jobs/inviter_job.rb | 12 +++++++----- app/lib/slack/client.rb | 3 ++- app/models/user.rb | 5 +++++ test/models/user_test.rb | 7 +++++++ 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/jobs/slack_jobs.rb b/app/jobs/slack_jobs.rb index 0242d8fe..f42a5b8f 100644 --- a/app/jobs/slack_jobs.rb +++ b/app/jobs/slack_jobs.rb @@ -6,7 +6,7 @@ class SlackJobs < ApplicationJob def slack_client @slack_client ||= Slack::Client.new( subdomain: ENV.fetch('SLACK_SUBDOMAIN'), - token: ENV.fetch('SLACK_TOKEN') + token: ENV.fetch('SLACK_TOKEN') #admin token required to invite ) end end diff --git a/app/jobs/slack_jobs/inviter_job.rb b/app/jobs/slack_jobs/inviter_job.rb index 8078649a..d0d4ab34 100644 --- a/app/jobs/slack_jobs/inviter_job.rb +++ b/app/jobs/slack_jobs/inviter_job.rb @@ -1,9 +1,11 @@ class SlackJobs class InviterJob < SlackJobs - include Sidekiq::Worker - - def perform(_email) - logger.debug 'Deprecated pathway, trying to determine what is placing this on queue.' + def perform(email) + # Invites user to general channel + slack_client.invite( + email: email, + channels: ['C03GSNF77'], + extra_message: "Thank you for joining operation code, please continue signup") end end -end +end \ No newline at end of file diff --git a/app/lib/slack/client.rb b/app/lib/slack/client.rb index defe782a..b6edcff5 100644 --- a/app/lib/slack/client.rb +++ b/app/lib/slack/client.rb @@ -20,7 +20,7 @@ def initialize(subdomain:, token:) @domain = "#{subdomain}.slack.com" end - def invite(email:, channels: []) + def invite(extra_message:, email:, channels: []) Rails.logger.info "Inviting user with email '#{email}'" body = send_api_request( to: INVITE_PATH, @@ -29,6 +29,7 @@ def invite(email:, channels: []) channels: channels.join(','), token: @token, set_active: 'true', + extra_message: extra_message, _attempts: 1 } ) diff --git a/app/models/user.rb b/app/models/user.rb index 408002c7..fc0fcded 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -151,6 +151,11 @@ def name def welcome_user add_to_send_grid + invite_to_slack + end + + def invite_to_slack + SlackJobs::InviterJob.perform_async(self.email) end def add_to_send_grid diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 652d07f3..17e2ccc2 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -16,6 +16,13 @@ def teardown assert_equal [user.id], AddUserToSendGridJob.jobs.first['args'] end + test 'welcoming a user adds them to SlackInvite' do + user = create(:user, user_opts) + user.welcome_user + assert_equal 1, InviterJob.jobs.length + assert_equal [user.id], InviterJob.jobs.first['args'] + end + test 'must have a valid email' do refute User.new(email: 'bogusemail', password: 'password', zip: '97201').valid? assert User.new(email: 'goodemail@example.com', password: 'password', zip: '97201').valid? From 9e3ae4eff6dc4b17dd676097cfa5b38c26b68b6e Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Tue, 6 Nov 2018 18:48:10 -0700 Subject: [PATCH 02/10] remove attribute access --- app/controllers/api/v1/users/passwords_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/users/passwords_controller.rb b/app/controllers/api/v1/users/passwords_controller.rb index da769eeb..4257098c 100644 --- a/app/controllers/api/v1/users/passwords_controller.rb +++ b/app/controllers/api/v1/users/passwords_controller.rb @@ -20,8 +20,8 @@ def forgot def reset token = params[:reset_password_token].to_s user = User.with_reset_password_token(token) - user.reset_password_token - if user.present? && user.password_token_valid? + + if user.present? && user.password_token_valid? if user.reset_password!(params[:password]) render json: { status: 'ok' }, status: :ok else From af232c8ba72a2600d98b8074acfb84fc4fd970e3 Mon Sep 17 00:00:00 2001 From: William Montgomery <10781353+wimo7083@users.noreply.github.com> Date: Tue, 6 Nov 2018 18:51:28 -0700 Subject: [PATCH 03/10] Update passwords_controller.rb --- app/controllers/api/v1/users/passwords_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/v1/users/passwords_controller.rb b/app/controllers/api/v1/users/passwords_controller.rb index 4257098c..954dda18 100644 --- a/app/controllers/api/v1/users/passwords_controller.rb +++ b/app/controllers/api/v1/users/passwords_controller.rb @@ -21,7 +21,8 @@ def reset token = params[:reset_password_token].to_s user = User.with_reset_password_token(token) - if user.present? && user.password_token_valid? + user.reset_password_token + if user.present? && user.password_token_valid? if user.reset_password!(params[:password]) render json: { status: 'ok' }, status: :ok else From 0eea157b11a3b2ec015ab89426607b58e1b1ad49 Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Thu, 8 Nov 2018 22:53:02 -0700 Subject: [PATCH 04/10] update tests to work with subclassed job --- test/models/user_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 17e2ccc2..c49ce7e9 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -19,9 +19,9 @@ def teardown test 'welcoming a user adds them to SlackInvite' do user = create(:user, user_opts) user.welcome_user - assert_equal 1, InviterJob.jobs.length - assert_equal [user.id], InviterJob.jobs.first['args'] - end + assert_equal 1, SlackJobs::InviterJob.jobs.length + assert_equal [user.email], SlackJobs::InviterJob.jobs.first['args'] + end test 'must have a valid email' do refute User.new(email: 'bogusemail', password: 'password', zip: '97201').valid? From 79abd8f00feb605c41abbbbf49404e31a9e57e9e Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Thu, 8 Nov 2018 22:53:34 -0700 Subject: [PATCH 05/10] merge with master --- app/controllers/api/v1/users/passwords_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/users/passwords_controller.rb b/app/controllers/api/v1/users/passwords_controller.rb index 954dda18..2e5d6e95 100644 --- a/app/controllers/api/v1/users/passwords_controller.rb +++ b/app/controllers/api/v1/users/passwords_controller.rb @@ -20,8 +20,8 @@ def forgot def reset token = params[:reset_password_token].to_s user = User.with_reset_password_token(token) - - user.reset_password_token + + user.reset_password_token if user.present? && user.password_token_valid? if user.reset_password!(params[:password]) render json: { status: 'ok' }, status: :ok From a894290ab22bee051920a07181e9c3abbf0ce488 Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Thu, 8 Nov 2018 22:54:11 -0700 Subject: [PATCH 06/10] fix linting --- app/jobs/slack_jobs.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jobs/slack_jobs.rb b/app/jobs/slack_jobs.rb index f42a5b8f..caeda0a8 100644 --- a/app/jobs/slack_jobs.rb +++ b/app/jobs/slack_jobs.rb @@ -6,7 +6,7 @@ class SlackJobs < ApplicationJob def slack_client @slack_client ||= Slack::Client.new( subdomain: ENV.fetch('SLACK_SUBDOMAIN'), - token: ENV.fetch('SLACK_TOKEN') #admin token required to invite + token: ENV.fetch('SLACK_TOKEN') # admin token required to invite ) end end From 7074653b1cf84e31ebc0e5e9ab917b8f6385b6e3 Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Thu, 8 Nov 2018 22:54:36 -0700 Subject: [PATCH 07/10] add sidekiq to scope and add context to sentry for errors --- app/jobs/slack_jobs/inviter_job.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/jobs/slack_jobs/inviter_job.rb b/app/jobs/slack_jobs/inviter_job.rb index d0d4ab34..cc716d66 100644 --- a/app/jobs/slack_jobs/inviter_job.rb +++ b/app/jobs/slack_jobs/inviter_job.rb @@ -1,11 +1,16 @@ class SlackJobs class InviterJob < SlackJobs + include Sidekiq::Worker + def perform(email) # Invites user to general channel + Raven.user_context email: email + Raven.tags_context slack_invite: 'yes' slack_client.invite( - email: email, + email: email, channels: ['C03GSNF77'], - extra_message: "Thank you for joining operation code, please continue signup") + extra_message: 'Welcome to Operation Code, please continue your journey into our online community!' + ) end end -end \ No newline at end of file +end From 24e47b811774c63d9b072f91b1333fc92c5203b8 Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Thu, 8 Nov 2018 22:57:20 -0700 Subject: [PATCH 08/10] fix passwords --- app/controllers/api/v1/users/passwords_controller.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/controllers/api/v1/users/passwords_controller.rb b/app/controllers/api/v1/users/passwords_controller.rb index cb8872dc..e8011c11 100644 --- a/app/controllers/api/v1/users/passwords_controller.rb +++ b/app/controllers/api/v1/users/passwords_controller.rb @@ -21,10 +21,6 @@ def reset token = params[:reset_password_token].to_s user = User.with_reset_password_token(token) -<<<<<<< HEAD - user.reset_password_token -======= ->>>>>>> 5c10ceb39f41c19e678082269b91da88cb2f1782 if user.present? && user.password_token_valid? if user.reset_password!(params[:password]) render json: { status: 'ok' }, status: :ok From 14eab4b9a08824c3b3420738a942edf4484ffb9b Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Fri, 9 Nov 2018 23:47:11 -0700 Subject: [PATCH 09/10] changed name to be more descriptive --- app/jobs/slack_jobs.rb | 2 +- app/lib/slack/utils.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/jobs/slack_jobs.rb b/app/jobs/slack_jobs.rb index caeda0a8..a1f32ad2 100644 --- a/app/jobs/slack_jobs.rb +++ b/app/jobs/slack_jobs.rb @@ -6,7 +6,7 @@ class SlackJobs < ApplicationJob def slack_client @slack_client ||= Slack::Client.new( subdomain: ENV.fetch('SLACK_SUBDOMAIN'), - token: ENV.fetch('SLACK_TOKEN') # admin token required to invite + token: ENV.fetch('SLACK_LEGACY_ADMIN_TOKEN') # admin token required to invite ) end end diff --git a/app/lib/slack/utils.rb b/app/lib/slack/utils.rb index 8d0d706f..92b297f0 100644 --- a/app/lib/slack/utils.rb +++ b/app/lib/slack/utils.rb @@ -20,7 +20,7 @@ def client def set_client Slack::Client.new( subdomain: OperationCode.fetch_secret_with(name: :slack_domain), - token: OperationCode.fetch_secret_with(name: :slack_token) + token: OperationCode.fetch_secret_with(name: :slack_legacy_admin_token) ) end end From 6cfebb66d37ed3491443bd1b0625ae826dedaf6f Mon Sep 17 00:00:00 2001 From: wimo7083 Date: Fri, 9 Nov 2018 23:53:50 -0700 Subject: [PATCH 10/10] change message --- app/jobs/slack_jobs/inviter_job.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/jobs/slack_jobs/inviter_job.rb b/app/jobs/slack_jobs/inviter_job.rb index cc716d66..9b59795e 100644 --- a/app/jobs/slack_jobs/inviter_job.rb +++ b/app/jobs/slack_jobs/inviter_job.rb @@ -9,7 +9,10 @@ def perform(email) slack_client.invite( email: email, channels: ['C03GSNF77'], - extra_message: 'Welcome to Operation Code, please continue your journey into our online community!' + extra_message: 'Welcome to Operation Code!\n'\ + 'Once you log in, please take a moment to introduce yourself in the #general channel - a bit about who you are, where you\'re coming from, and where you\'re interested in going next.\n'\ + 'Thank you for joining us!\n'\ + '-from the OC volunteer team\n'\ ) end end