Sha256: 1bb1062ec3b97be9fadb9a44324868146a4e57d7a704eb58ac805697730b3914

Contents?: true

Size: 1.44 KB

Versions: 2

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

module Maquina
  class SessionsController < ApplicationController
    allow_unauthenticated_access only: [:new, :create]

    layout "maquina/sessions"

    before_action :ensure_user_exists, only: :new

    def new
      @user = Maquina::User.new
    end

    def create
      reset_session

      @user = Maquina::User.authenticate_by(email: params.dig(:email), password: params.dig(:password))

      if @user.present?
        active_session = start_new_session_for(@user)
        if active_session.present?
          return redirect_to(calculate_redirect_path(active_session), notice: t("flash.sessions.create.notice"), status: :see_other)
        end
      end

      @user = Maquina::User.new(email: params.dig(:email))
      flash.now.alert = t("flash.sessions.create.alert")
      render :new, status: :unprocessable_entity
    end

    def destroy
      reset_session
      Maquina::Current.reset

      flash.notice = t("flash.sessions.destroy.notice")
      redirect_to main_app.sign_in_path, status: :see_other
    end

    private

    def ensure_user_exists
      redirect_to maquina.first_run_url if Maquina::User.none?
    end

    def calculate_redirect_path(active_session)
      return maquina.new_multifactor_path if active_session.user.multifactor?
      return active_session.return_url if active_session.return_url.present?

      active_session.user.management? ? maquina.root_path : main_app.root_path
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
maquina-0.5.2 app/controllers/maquina/sessions_controller.rb
maquina-0.5.1 app/controllers/maquina/sessions_controller.rb