49 lines
1.2 KiB
Ruby
49 lines
1.2 KiB
Ruby
![]() |
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
|