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