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