Storm/app/controllers/users/invitations_controller.rb

49 lines
1.2 KiB
Ruby
Raw Normal View History

module Users
# InvitationsController
class InvitationsController < Devise::InvitationsController
layout('application')
private
def invite_resource(&block)
# find all users, including unscoped (deleted).
@user = User.unscoped.find_by(email: invite_params[:email])
# only re-invite if user has been deleted.
if @user && @user.deleted? && @user.email != current_user.email
@user.assign_attributes(
reinvite_attributes.merge(skip_invitation_params)
)
@user.invite!(current_user)
@user
else
# instance method, invite!, returns a User instance
resource_class.invite!(
invite_params.merge(skip_invitation_params),
current_inviter,
&block
)
end
end
def after_invite_path_for(_inviter, invitee)
users_invitations_instructions_path(
id: invitee.id,
token: invitee.raw_invitation_token
)
end
def reinvite_attributes
{
deleted_at: nil # "un-delete" a deleted user.
}
end
def skip_invitation_params
{
skip_invitation: true # don't send an email.
}
end
end
end