From 70137f20730c3f504d2d28a37be2beb1c1c703c3 Mon Sep 17 00:00:00 2001 From: Max Wofford Date: Thu, 1 Jun 2017 18:27:10 -0700 Subject: [PATCH 1/3] LeadersController strips whitespace from slack usernames --- app/controllers/v1/leaders_controller.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/controllers/v1/leaders_controller.rb b/app/controllers/v1/leaders_controller.rb index 8ef9fa5..38b1636 100644 --- a/app/controllers/v1/leaders_controller.rb +++ b/app/controllers/v1/leaders_controller.rb @@ -6,7 +6,9 @@ class LeadersController < ApplicationController def intake leader = Leader.new( - leader_params.merge(club_ids: [club_id], slack_team_id: TEAM_ID) + leader_params.merge(club_ids: [club_id], + slack_username: slack_username, + slack_team_id: TEAM_ID) ) if leader.save @@ -24,6 +26,10 @@ def club_id params[:club_id] end + def slack_username + params[:slack_username].strip + end + def verify_club_id return unless club_id.nil? render json: { errors: { club_id: ["can't be blank"] } }, status: 422 From 1803fdaf7cfb0cb09c51a95d1359c210c6bb3b97 Mon Sep 17 00:00:00 2001 From: Max Wofford Date: Thu, 1 Jun 2017 18:27:51 -0700 Subject: [PATCH 2/3] Leaders must have slack_id set --- app/models/leader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/leader.rb b/app/models/leader.rb index b0463a4..9bd650c 100644 --- a/app/models/leader.rb +++ b/app/models/leader.rb @@ -59,7 +59,7 @@ class Leader < ApplicationRecord .find_each { |c| c.update(point_of_contact: nil) } end - validates :name, presence: true + validates :name, :slack_id, presence: true def slack_update return if access_token.nil? From c637f544ef62d443d649c028fb2fa65d03b74eb3 Mon Sep 17 00:00:00 2001 From: Max Wofford Date: Thu, 1 Jun 2017 21:26:50 -0700 Subject: [PATCH 3/3] Validation for finding slack usernames --- app/controllers/v1/leaders_controller.rb | 3 +-- app/models/leader.rb | 8 +++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/controllers/v1/leaders_controller.rb b/app/controllers/v1/leaders_controller.rb index 38b1636..b505f4e 100644 --- a/app/controllers/v1/leaders_controller.rb +++ b/app/controllers/v1/leaders_controller.rb @@ -6,8 +6,7 @@ class LeadersController < ApplicationController def intake leader = Leader.new( - leader_params.merge(club_ids: [club_id], - slack_username: slack_username, + leader_params.merge(club_ids: [club_id], slack_username: slack_username, slack_team_id: TEAM_ID) ) diff --git a/app/models/leader.rb b/app/models/leader.rb index 9bd650c..702dc09 100644 --- a/app/models/leader.rb +++ b/app/models/leader.rb @@ -59,7 +59,8 @@ class Leader < ApplicationRecord .find_each { |c| c.update(point_of_contact: nil) } end - validates :name, :slack_id, presence: true + validates :name, presence: true + validate :validate_slack_username_found def slack_update return if access_token.nil? @@ -80,6 +81,11 @@ def timezone private + def validate_slack_username_found + return unless user_from_username(slack_username).nil? + errors.add(:slack_username, 'Slack user not found') + end + def slack_id_sync info = SlackClient::Users.info(slack_id, access_token)[:user] self.slack_username = info[:name] unless info.nil?