Files
MatchLiveTv/backend/app/controllers/public/invitations_controller.rb
T

43 lines
1.7 KiB
Ruby

module Public
class InvitationsController < WebBaseController
def show
@token = params[:token]
digest = Digest::SHA256.hexdigest(@token.to_s)
@invitation = TeamInvitation.pending.find_by(token_digest: digest)
@tournament_invitation = TournamentBroadcastInvitation.pending.find_by(token_digest: digest) unless @invitation
unless @invitation || @tournament_invitation
redirect_to public_pricing_path, alert: t("flash.invitations.invalid_or_expired")
end
end
def accept
token = params[:token].to_s
digest = Digest::SHA256.hexdigest(token)
invitation = TeamInvitation.pending.find_by(token_digest: digest)
tournament_invitation = TournamentBroadcastInvitation.pending.find_by(token_digest: digest) unless invitation
unless invitation || tournament_invitation
return redirect_to public_pricing_path, alert: t("flash.invitations.invalid")
end
target_email = (invitation || tournament_invitation).email
unless logged_in?
session[:pending_invite_token] = token
return redirect_to public_signup_path, notice: t("flash.invitations.signup_to_accept", email: target_email)
end
if current_user.email.downcase != target_email.downcase
return redirect_to public_pricing_path, alert: t("flash.invitations.wrong_email", email: target_email)
end
if invitation
invitation.accept!(current_user)
redirect_to public_team_details_path(invitation.team), notice: t("flash.invitations.joined_team")
else
tournament_invitation.accept!(current_user)
redirect_to public_account_path, notice: t("flash.invitations.joined_tournament")
end
end
end
end