![Justin Licata](/assets/img/avatar_default.png)
* allow users to invite teammates - WIP. * hide Sign Up link in views. * build invitations spec. * install missing node modules in CircleCI. * install balloon.css via Yarn. * disable Hound for JS. * lint. * add error messages to invitation view.
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
|