Storm/app/controllers/users/invitations_controller.rb
Justin Licata c294394704 build User Invitations (#6)
* 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.
2017-07-21 14:56:42 -05:00

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