@@ -332,7 +332,7 @@ def self.hca_authorize_url(redirect_uri)
332332 redirect_uri :,
333333 client_id : ENV [ "HCA_CLIENT_ID" ] ,
334334 response_type : "code" ,
335- scope : "email"
335+ scope : "email slack_id verification_status "
336336 }
337337
338338 URI . parse ( "#{ HCAService . host } /oauth/authorize?#{ params . to_query } " )
@@ -382,23 +382,33 @@ def self.from_hca_token(code, redirect_uri)
382382 return nil if access_token . nil?
383383
384384 # get user info
385- identity = ::HCAService . me ( access_token )
385+ hca_data = ::HCAService . me ( access_token )
386+ identity = hca_data [ "identity" ]
386387 # find by HCA ID
387388 @user = User . find_by_hca_id ( identity [ "id" ] ) unless identity [ "id" ] . blank?
388389 # find by slack_id
389390 @user ||= User . find_by_slack_uid ( identity [ "slack_id" ] ) unless identity [ "slack_id" ] . blank?
390391 # find by email
391392 @user ||= begin
392- EmailAddress . find_by ( email : identity [ "email " ] ) &.user unless identity [ "email " ] . blank?
393+ EmailAddress . find_by ( email : identity [ "primary_email " ] ) &.user unless identity [ "primary_email " ] . blank?
393394 end
394395
395- # update scopes if user exists
396- @user . update ( hca_scopes : identity [ "scopes" ] , hca_id : identity [ "id" ] ) if @user
396+ # update scopes etc if user exists
397+ @user . update (
398+ hca_scopes : hca_data [ "scopes" ] ,
399+ hca_id : identity [ "id" ] ,
400+ hca_access_token : access_token
401+ ) if !!@user
397402
398403 # if no user, create one
399404 @user ||= begin
400- u = User . create! ( hca_id : identity [ "id" ] , slack_uid : identity [ "slack_id" ] , hca_scopes : identity [ "scopes" ] )
401- EmailAddress . create! ( email : identity [ "email" ] , user : u ) unless identity [ "email" ] . blank?
405+ u = User . create! (
406+ hca_id : identity [ "id" ] ,
407+ slack_uid : identity [ "slack_id" ] ,
408+ hca_scopes : hca_data [ "scopes" ] ,
409+ hca_access_token : access_token ,
410+ )
411+ EmailAddress . create! ( email : identity [ "primary_email" ] , user : u ) unless identity [ "primary_email" ] . blank?
402412 u
403413 end
404414 end
0 commit comments