Sha256: 91999fb5e2f4e5e377255971ad5bd0e864114dc36a0e75c6cc10a3738efe2fdc

Contents?: true

Size: 1.64 KB

Versions: 11

Compression:

Stored size: 1.64 KB

Contents

# frozen_string_literal: true

module Maquina
  class InvitationsController < ApplicationController
    before_action :authenticate!

    layout false

    resourceful(
      resource_class: Maquina::Invitation,
      form_attributes: [{email: {type: :input, control_html: {class: "sm:col-span-6"}, input_html: {class: "block w-full min-w-0 flex-1 input"}}}],
      policy_class: Maquina::InvitationPolicy,
      only: [:new, :create]
    )

    def create
      authorize! with: policy_class if policy_class.present?

      email = params.dig(:invitation, :email)&.strip
      # management = Maquina::Current.management?

      @resource = Maquina::Invitation.order(created_at: :desc).find_or_initialize_by(email: email)
      if @resource.new_record?
        @resource.save
      elsif @resource.accepted?
        @resource = Maquina::Invitation.new(email: email)
        @resource.errors.add(:email, :invalid)
      end

      create! do |success|
        success.response do
          url = maquina.new_accept_invitations_url(token: CGI.escape(@resource.signed_id(purpose: :invitation, expires_in: 3.days)))
          Maquina::UserNotificationsMailer.with(email: @resource.email, inviteer: Maquina::Current.user.email, url: url).invitation_email.deliver_later

          flash[:notice] = {title: t("flash.#{@resource.model_name.i18n_key}.create.notice.title"), description: t("flash.#{@resource.model_name.i18n_key}.create.notice.description", email: email)}
          redirect_to collection_path
        end
      end
    end

    private

    def submit_path(params = {})
      invitations_path(**params)
    end

    def collection_path
      users_path
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
maquina-0.5.2 app/controllers/maquina/invitations_controller.rb
maquina-0.5.1 app/controllers/maquina/invitations_controller.rb
maquina-0.4.0 app/controllers/maquina/invitations_controller.rb
maquina-0.3.0 app/controllers/maquina/invitations_controller.rb
maquina-0.2.5 app/controllers/maquina/invitations_controller.rb
maquina-0.2.4 app/controllers/maquina/invitations_controller.rb
maquina-0.2.3 app/controllers/maquina/invitations_controller.rb
maquina-0.2.2 app/controllers/maquina/invitations_controller.rb
maquina-0.2.1 app/controllers/maquina/invitations_controller.rb
maquina-0.2.0 app/controllers/maquina/invitations_controller.rb
maquina-0.1.0 app/controllers/maquina/invitations_controller.rb