Newer
Older
dmpopidor / app / controllers / sessions_controller.rb
@briri briri on 16 Dec 2019 1 KB removed travis
# 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