Skip to content

Commit 6fedc36

Browse files
authored
Fix HCA scopes (#685)
1 parent 336ae5c commit 6fedc36

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

app/models/user.rb

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)