# frozen_string_literal: true
class SessionsController < Devise::SessionsController
def new
redirect_to(root_path)
end
# Capture the user's shibboleth id if they're coming in from an IDP
# ---------------------------------------------------------------------
def create
existing_user = User.find_by(email: params[:user][:email])
if !existing_user.nil?
# Until ORCID login is supported
if !session["devise.shibboleth_data"].nil?
args = {
identifier_scheme: IdentifierScheme.find_by(name: "shibboleth"),
identifier: session["devise.shibboleth_data"]["uid"],
user: existing_user
}
if UserIdentifier.create(args)
# rubocop:disable Metrics/LineLength
success = _("Your account has been successfully linked to your institutional credentials. You will now be able to sign in with them.")
# rubocop:enable Metrics/LineLength
end
end
unless existing_user.get_locale.nil?
session[:locale] = existing_user.get_locale
end
# Method defined at controllers/application_controller.rb
set_gettext_locale
end
super
if success
flash[:notice] = success
end
end
def destroy
super
session[:locale] = nil
# Method defined at controllers/application_controller.rb
set_gettext_locale
end
end