18F/identity-dashboard

View on GitHub
app/controllers/users/sessions_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
B
84%
module Users
  class SessionsController < Devise::SessionsController
    include ::ActionView::Helpers::DateHelper

    def destroy
      if Rails.configuration.oidc['client_id'] && post_logout_redirect_uri
        sign_out(current_user)
        logout_request = self.class.logout_utility.build_request(
          client_id: Rails.configuration.oidc['client_id'],
          post_logout_redirect_uri: post_logout_redirect_uri,
        )
        redirect_to(logout_request.redirect_uri, allow_other_host: true)
      else
        super
      end
    end

    def post_logout_redirect_uri
      IdentityConfig.store.post_logout_redirect_uri
    end

    def self.logout_utility
      @logout_utility ||=
        OmniAuth::LoginDotGov::LogoutUtility.new(idp_base_url: Rails.configuration.oidc['idp_url'])
    end
  end
end