Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
49c7e79
sort of working
jdettmannnava Dec 26, 2025
b38beaa
working except in tests
jdettmannnava Dec 26, 2025
653e4fb
Merge branch 'main' into jd/undevise
jdettmannnava Dec 29, 2025
a48e722
working without devise
jdettmannnava Dec 29, 2025
cc1342f
better for eval
jdettmannnava Dec 29, 2025
f32edc0
cleanup
jdettmannnava Dec 29, 2025
892b051
cleanup
jdettmannnava Dec 29, 2025
0099dc4
test invitation flow
jdettmannnava Dec 30, 2025
359f685
Merge branch 'main' into jd/undevise
jdettmannnava Dec 30, 2025
e452d81
Merge branch 'main' into jd/undevise
jdettmannnava Dec 31, 2025
08c230c
Merge branch 'main' into jd/undevise
jdettmannnava Dec 31, 2025
9629895
Merge branch 'main' into jd/undevise
jdettmannnava Jan 12, 2026
5f640e4
Merge branch 'main' into jd/undevise
jdettmannnava Jan 13, 2026
fb592c0
Merge branch 'main' into jd/undevise
jdettmannnava Jan 14, 2026
7807302
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 21, 2026
1216ecf
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 21, 2026
2a50289
Merge branch 'jd/dpc-5127-multiple-oidc' of github.com:CMSgov/dpc-app…
jdettmannnava Jan 21, 2026
a02ccc5
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 22, 2026
386e178
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 23, 2026
ec7bf0e
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 23, 2026
8652201
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 26, 2026
8c705e4
fix user create, accessibility tests
jdettmannnava Jan 26, 2026
a5c3806
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 27, 2026
478f77e
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 27, 2026
6778849
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Jan 29, 2026
08fb743
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 2, 2026
cb182dc
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 3, 2026
faf2875
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 4, 2026
3cdd9d0
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 5, 2026
8a435c8
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 9, 2026
9158dbd
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 10, 2026
6ec0ee1
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 12, 2026
9c5119c
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 12, 2026
db43ba6
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 12, 2026
729c0ce
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 13, 2026
187f0c3
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 17, 2026
be910bd
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 18, 2026
3b3f35d
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 19, 2026
be58ca3
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 19, 2026
72b19b3
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 20, 2026
764b99a
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 23, 2026
e75d6fb
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 24, 2026
72c6c9b
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 26, 2026
3a675d3
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 27, 2026
4f7021d
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 27, 2026
ec9a82f
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Feb 27, 2026
8947504
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 2, 2026
64054d6
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 5, 2026
57cf436
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 5, 2026
d3dcbcb
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 10, 2026
1fb7d12
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 11, 2026
741a3e8
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 12, 2026
9420bd7
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 13, 2026
5d0877c
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 16, 2026
819dc41
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 23, 2026
9010481
force merge dpc-admin and dpc-web
jdettmannnava Mar 24, 2026
4397aa2
merge main
jdettmannnava Mar 30, 2026
fa1bb09
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 30, 2026
1cb0d21
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 30, 2026
baef2c5
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Mar 30, 2026
4803ec7
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 3, 2026
4d5e8e0
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 3, 2026
f858656
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 6, 2026
1bfeaf3
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 6, 2026
47b7fe5
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 7, 2026
a90696d
undevise javascript test
jdettmannnava Apr 7, 2026
c1a30f0
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 7, 2026
bc799a2
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 8, 2026
20e90ff
add login support to integration tests
jdettmannnava Apr 8, 2026
a44ba73
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 9, 2026
aa768e4
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 15, 2026
d93a6c2
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 16, 2026
dae0674
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 20, 2026
3c54bee
Merge branch 'main' into jd/dpc-5127-multiple-oidc
jdettmannnava Apr 22, 2026
05b8bc1
POC: Replace Login.gov with ID.me
ashley-weaver Apr 22, 2026
ca211a9
Update devise.rb
ashley-weaver Apr 24, 2026
3d9e8a4
Single quotes
ashley-weaver Apr 24, 2026
5f07014
Merge branch 'main' into aw/use-idme
ashley-weaver Apr 27, 2026
71348ef
Merge remote-tracking branch 'origin/aw/dpc-5368' into aw/use-idme
ashley-weaver Apr 27, 2026
d215f5c
Use port 3100
ashley-weaver Apr 27, 2026
29292c8
Send env var for client id
ashley-weaver Apr 27, 2026
3204fb9
Use ID.me
ashley-weaver Apr 27, 2026
365d38e
Update omniauth.rb
ashley-weaver Apr 27, 2026
d858f34
Update omniauth.rb
ashley-weaver Apr 28, 2026
c9e15b8
Update invitations_controller.rb
ashley-weaver Apr 28, 2026
c558375
Merge branch 'main' into aw/use-idme
ashley-weaver Apr 29, 2026
a9bf727
Update Gemfile.lock
ashley-weaver Apr 29, 2026
601d421
Update yarn.lock
ashley-weaver Apr 29, 2026
3ab93eb
Update Gemfile.lock
ashley-weaver Apr 29, 2026
eea3d43
Update tests
ashley-weaver Apr 29, 2026
91ac26c
Update application_controller.rb
ashley-weaver Apr 30, 2026
fb6c2aa
Update routes.rb
ashley-weaver Apr 30, 2026
1760a83
Update routes.rb
ashley-weaver Apr 30, 2026
8b34656
Update Gemfile.lock
ashley-weaver Apr 30, 2026
6410c06
Update Gemfile.lock
ashley-weaver Apr 30, 2026
7752228
Update omniauth.rb
ashley-weaver May 4, 2026
06c3636
Update accessibility_spec.rb
ashley-weaver May 4, 2026
01de2b6
Update user_info_service.rb
ashley-weaver May 4, 2026
2dafb7f
Merge branch 'main' into aw/use-idme
ashley-weaver May 5, 2026
f362a10
Use userinfo
ashley-weaver May 6, 2026
877edd8
Merge branch 'main' into aw/use-idme
ashley-weaver May 7, 2026
a5552c3
Use attributes endpoint
ashley-weaver May 7, 2026
3045282
Use omniauth_oidc
ashley-weaver May 7, 2026
b8554fd
Merge branch 'main' into aw/use-idme
ashley-weaver May 12, 2026
07c98da
Merge branch 'aw/use-idme' of https://github.com/CMSgov/dpc-app into …
ashley-weaver May 12, 2026
33a7771
Handle JWT response in user info endpoint
manojwadhwa81 May 12, 2026
0ea2110
Patch OpenIDConnect to handle content type for JWTs
manojwadhwa81 May 12, 2026
febfeab
Resolve merge conflicts
ashley-weaver May 12, 2026
b2dce43
Use openid_connect gem
ashley-weaver May 12, 2026
d921801
Cleanup
ashley-weaver May 12, 2026
943ef14
Update login_dot_gov_controller.rb
ashley-weaver May 12, 2026
d298538
Merge branch 'main' into aw/use-idme
ashley-weaver May 14, 2026
952b078
Merge branch 'main' into aw/use-idme
ashley-weaver May 15, 2026
b89bf4c
Fix test cases for User info service.
manojwadhwa81 May 18, 2026
4603f37
Merge remote-tracking branch 'origin/mw/handle-userinfo-jwt' into aw/…
ashley-weaver May 19, 2026
d70da42
Cleanup
ashley-weaver May 19, 2026
867684a
Merge branch 'main' into aw/use-idme
ashley-weaver May 19, 2026
6b0d266
Change provider name to id_me
ashley-weaver May 19, 2026
7a3789f
Fix failing test cases for multi csp changes
manojwadhwa81 May 19, 2026
c0cd15a
Merge remote-tracking branch 'origin/mw/handle-userinfo-jwt' into aw/…
ashley-weaver May 20, 2026
98950be
Add ruby-lsp-rspec to help with ruby-lsp extension in vscode
manojwadhwa81 May 20, 2026
992a0b4
debug gem version lock
manojwadhwa81 May 20, 2026
4181f48
Merge remote-tracking branch 'origin/aw/use-idme' into mw/handle-user…
manojwadhwa81 May 20, 2026
415b1c3
Updated test cases to account for new models.
manojwadhwa81 May 28, 2026
3b296ec
Merge branch 'main' into mw/handle-userinfo-jwt
manojwadhwa81 May 28, 2026
b3b6cad
Fix integration tests by synching user creation setup to latest data …
manojwadhwa81 May 28, 2026
cf4e3ab
Fix integration tests
manojwadhwa81 May 29, 2026
68b9b51
Added new UnknownCSPError class to fix quality gate error
manojwadhwa81 May 29, 2026
1cbfd8c
Fix for slow docker host: wait for button visible before attempting t…
manojwadhwa81 May 30, 2026
dac08cb
Extend wait time to 10 seconds
manojwadhwa81 May 30, 2026
4597b18
Comment out code that a) verifies modal is visible b) click on acknow…
manojwadhwa81 Jun 1, 2026
b23b8c5
Merge branch 'main' into mw/handle-userinfo-jwt
manojwadhwa81 Jun 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docker-compose.portals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ services:
- DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true
- CPI_API_GW_BASE_URL=http://localhost:4567/
- CMS_IDM_OAUTH_URL=http://localhost:4567/
- IDP_HOST=idp.int.identitysandbox.gov
- IDP_ID_ME_HOST=api.idmelabs.com
- IDP_ID_ME_CLIENT_ID=925bb2985ccf623114359caa76228919
- RUBY_YJIT_ENABLE=1
- ENV=local
- NEW_RELIC_MONITOR_MODE=false
Expand Down
20 changes: 20 additions & 0 deletions dpc-portal/.env.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Application settings
DATABASE_URL=postgresql://localhost:5432/dpc-portal_development
TEST_DATABASE_URL=postgresql://localhost:5432/dpc-portal_test
GOLDEN_MACAROON=${GOLDEN_MACAROON}
API_METADATA_URL=http://localhost:3002/api/v1
API_ADMIN_URL=http://localhost:9900
DB_USER=postgres
DB_PASS=dpc-safe
DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true
CPI_API_GW_BASE_URL=http://localhost:4567/
CMS_IDM_OAUTH_URL=http://localhost:4567/
IDP_ID_ME_HOST=api.idmelabs.com
IDP_LOGIN_DOT_GOV_HOST=idp.int.identitysandbox.gov
RUBY_YJIT_ENABLE=1
ENV=local
RAILS_ENV=development
NEW_RELIC_MONITOR_MODE=false
DISABLE_JSON_LOGGER=true
RAILS_DEVELOPMENT_HOSTS=host.docker.internal
SKIP_SIMPLE_COV=${SKIP_SIMPLE_COV:-}
2 changes: 2 additions & 0 deletions dpc-portal/.rspec
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
--require spec_helper
--order rand
-I .
-I spec
6 changes: 5 additions & 1 deletion dpc-portal/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ gem 'macaroons'
gem 'net-imap', '>= 0.5.14'
gem 'newrelic_rpm', '~> 8.10'
gem 'nokogiri', '>= 1.19.3'
gem 'omniauth_openid_connect'
gem 'omniauth_openid_connect', '~> 0.8.0'
gem 'omniauth-rails_csrf_protection'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', '~> 6.4.3'
Expand Down Expand Up @@ -80,9 +80,13 @@ group :development do
gem 'rubocop-performance', require: false

# Version 0.18 has a breaking change for sonarqube
gem 'debug', '~> 1.6.0', require: false
gem 'httplog'
gem 'simplecov', '<= 0.17'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.1.0'

gem 'ruby-lsp-rspec'
end

group :test do
Expand Down
26 changes: 23 additions & 3 deletions dpc-portal/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,9 @@ GEM
addressable
date (3.5.1)
date_time_precision (0.8.1)
debug (1.6.3)
irb (>= 1.3.6)
reline (>= 0.3.1)
descendants_tracker (0.0.4)
thread_safe (~> 0.3, >= 0.3.1)
diff-lcs (1.5.1)
Expand Down Expand Up @@ -217,6 +220,10 @@ GEM
railties (>= 5.0)
htmlbeautifier (1.4.3)
htmlentities (4.3.4)
httplog (1.8.0)
benchmark
rack (>= 2.0)
rainbow (>= 2.0.0)
i18n (1.14.8)
concurrent-ruby (~> 1.0)
ice_nine (0.11.2)
Expand Down Expand Up @@ -347,7 +354,7 @@ GEM
omniauth_openid_connect (0.8.0)
omniauth (>= 1.9, < 3)
openid_connect (~> 2.2)
openid_connect (2.3.0)
openid_connect (2.3.1)
activemodel
attr_required (>= 1.0.0)
email_validator
Expand Down Expand Up @@ -387,7 +394,7 @@ GEM
raabro (1.4.0)
racc (1.8.1)
rack (3.2.6)
rack-oauth2 (2.2.1)
rack-oauth2 (2.3.0)
activesupport
attr_required
faraday (~> 2.0)
Expand Down Expand Up @@ -434,6 +441,10 @@ GEM
ffi
rbnacl-libsodium (1.0.16)
rbnacl (>= 3.0.1)
rbs (4.0.2)
logger
prism (>= 1.6.0)
tsort
rdoc (7.2.0)
erb
psych (>= 4.0.0)
Expand Down Expand Up @@ -481,6 +492,12 @@ GEM
rubocop-performance (1.23.0)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
ruby-lsp (0.26.9)
language_server-protocol (~> 3.17.0)
prism (>= 1.2, < 2.0)
rbs (>= 3, < 5)
ruby-lsp-rspec (0.1.29)
ruby-lsp (~> 0.26.0)
ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
Expand Down Expand Up @@ -610,12 +627,14 @@ DEPENDENCIES
byebug
capybara
climate_control
debug (~> 1.6.0)
dotenv-rails
factory_bot_rails
fakefs
faraday (>= 2.14.2)
fhir_models
health_check
httplog
jbuilder (~> 2.7)
json-jwt (>= 1.16.6)
jwt (>= 3.2.0)
Expand All @@ -628,7 +647,7 @@ DEPENDENCIES
newrelic_rpm (~> 8.10)
nokogiri (>= 1.19.3)
omniauth-rails_csrf_protection
omniauth_openid_connect
omniauth_openid_connect (~> 0.8.0)
pg (>= 0.18, < 2.0)
pg-aws_rds_iam
pry
Expand All @@ -644,6 +663,7 @@ DEPENDENCIES
rspec-rails
rubocop
rubocop-performance
ruby-lsp-rspec
sassc-rails (>= 2.1.2)
selenium-webdriver
simplecov (<= 0.17)
Expand Down
44 changes: 36 additions & 8 deletions dpc-portal/app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
# frozen_string_literal: true

# Parent class of all controllers
class ApplicationController < ActionController::Base
IDP_HOST = ENV.fetch('IDP_HOST')
IDP_CLIENT_ID = "urn:gov:cms:openidconnect.profiles:sp:sso:cms:dpc:#{ENV.fetch('ENV')}".freeze

class ApplicationController < ActionController::Base # rubocop:disable Metrics/ClassLength
before_action :check_session_length
before_action :set_current_request_attributes
before_action :no_store
Expand All @@ -27,13 +24,16 @@ def authenticate_user!
redirect_to sign_in_path
end

def sign_in(user)
def sign_in(user, csp: 'login_dot_gov')
session['user'] = user.id
session[:csp] = csp.to_s
end

private

def check_user_verification
# puts current_user.inspect
# puts "Current user verification status: #{current_user.verification_status}" if current_user
return unless current_user&.rejected?

render(Page::Utility::AccessDeniedComponent.new(failure_code: "verification.#{current_user.verification_reason}"))
Expand All @@ -50,17 +50,38 @@ def tos_accepted
end
end

def url_for_logout(csp)
case csp.to_s
when :id_me.to_s
url_for_id_me_logout
when :login_dot_gov.to_s
url_for_login_dot_gov_logout
else
raise UnknownCSPError, csp
end
end

# Documentation at https://developers.login.gov/oidc/logout/
def url_for_login_dot_gov_logout
state = SecureRandom.hex(16)
session['omniauth.state'] = state
URI::HTTPS.build(host: IDP_HOST,
path: '/openid_connect/logout',
query: { client_id: IDP_CLIENT_ID,
csp_config = CspConfig.for(:login_dot_gov)
URI::HTTPS.build(host: csp_config.host,
path: csp_config.log_out_path,
query: { client_id: csp_config.identifier,
post_logout_redirect_uri: "#{root_url}auth/logged_out",
state: }.to_query)
end

def url_for_id_me_logout
state = SecureRandom.hex(16)
session['omniauth.state'] = state
URI::HTTPS.build(host: CspConfig.for(:id_me).host,
path: CspConfig.for(:id_me).log_out_path,
query: { client_id: CspConfig.for(:id_me).identifier,
redirect_uri: "#{root_url}auth/logged_out" }.to_query)
end

# rubocop:disable Metrics/AbcSize
def check_session_length
session[:logged_in_at] = Time.now if session[:logged_in_at].nil?
Expand Down Expand Up @@ -133,3 +154,10 @@ def log_credential_action(credential_type, dpc_api_credential_id, action)
logger.error(['CredentialAuditLog failure', { action:, credential_type:, dpc_api_credential_id: }])
end
end

# Error class to handle unknow CSP
class UnknownCSPError < StandardError # rubocop:disable Style/OneClassPerFile
def initialize(provider)
super("Unknown CSP: #{provider}")
end
end
34 changes: 21 additions & 13 deletions dpc-portal/app/controllers/invitations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,13 @@ def login
{ actionContext: LoggingConstants::ActionContext::Registration,
actionType: LoggingConstants::ActionType::BeginLogin,
invitation: @invitation.id }])
url = URI::HTTPS.build(host: IDP_HOST,
path: '/openid_connect/authorize',
query: { acr_values: 'http://idmanagement.gov/ns/assurance/ial/2',
client_id: IDP_CLIENT_ID,
redirect_uri: "#{my_protocol_host}/auth/login_dot_gov/callback",
csp_config = CspConfig.for(:id_me)
url = URI::HTTPS.build(host: csp_config.host,
path: '/oauth/authorize',
query: { client_id: csp_config.identifier,
redirect_uri: "#{my_protocol_host}/auth/id_me/callback",
response_type: 'code',
scope: 'openid email all_emails profile social_security_number',
scope: 'openid http://idmanagement.gov/ns/assurance/ial/2/aal/2',
nonce: @nonce,
state: @state }.to_query)
redirect_to url, allow_other_host: true
Expand All @@ -100,8 +100,9 @@ def renew
end

def set_idp_token
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this method take the csp as a param?

session[:login_dot_gov_token] = 'token'
session[:login_dot_gov_token_exp] = 2.days.from_now
session[:csp] = 'id_me'
session[:id_me_token] = 'token'
session[:id_me_token_exp] = 2.days.from_now
head :ok
end

Expand Down Expand Up @@ -211,7 +212,12 @@ def user
user_info = UserInfoService.new.user_info(session)
find_or_create_user(user_info)
csp = Csp.find_by(name: @user.provider)
CspUser.find_or_create_by!(user: @user, csp: csp, uuid: user_info['sub'])
csp_user = CspUser.find_or_create_by!(user: @user, csp: csp, uuid: user_info['sub'])

# Update emails based upon the latest information in user info.
new_emails = user_info['all_emails'] || user_info['emails'] || user_info['emails_confirmed']
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can this be a separate method? like

def fetch_user_emails(user_info)
    user_info['all_emails'] || user_info['emails'] || user_info['emails_confirmed']
end

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but i'd like to take a step further and normalize responses into one structure e.g DPCUserInfo, so as to centralize translation and consumer access. This would be an extension of the work we discussed in today's call for creating DPCSession/CSPSession.

csp_user.add_or_activate_new_email(new_emails)
csp_user.deactivate_old_email(new_emails)
update_user(user_info)
@user
end
Expand Down Expand Up @@ -248,7 +254,7 @@ def assign_user_attributes(user_to_create, user_info)
user_to_create.pac_id = session.delete(:user_pac_id)

# For now we force login.gov, this will have to change once we support multi-CSP.
user_to_create.provider = :login_dot_gov
user_to_create.provider = session[:csp] || 'login_dot_gov'
user_to_create.uid = user_info['sub']
end

Expand Down Expand Up @@ -308,9 +314,11 @@ def verify_cd_invitation
end

def check_for_token
if session[:login_dot_gov_token].present? &&
session[:login_dot_gov_token_exp].present? &&
session[:login_dot_gov_token_exp] > Time.now
csp = session[:csp]
if csp && !csp.empty? &&
session["#{csp}_token"].present? &&
session["#{csp}_token_exp"].present? &&
session["#{csp}_token_exp"] > Time.now
return
end

Expand Down
Loading
Loading